通讯录管理系统设计思路:
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("No.\tname\tphone\n"); printf(" %s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone,stu[i].addr); flag=1; } } printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); if(flag!=1)printf("Not found the record\n"); }
结构体模型
char name【】 姓名 【】 结构体 Data Type 电话号码 char phone【】 【】 char addr 【】 住址 0---------选择进行建立一个通讯录 选择进行建立一个通讯录 1---------列出成员的信息 列出成员的信息 2---------查找成员的信息 查找成员的信息 3---------删除一个成员 功能清单 删除一个成员 4---------增加新的成员 增加新的成员 5---------通讯录排序 通讯录排序 6---------实现通讯录中的文件复制 实现通讯录中的文件复制 7---------退出系统 退出系统
void list(void) //输出学生信息 输出学生信息 { FILE*fp; int i,n; if((fp=fopen(“stu.dat”,“rb”))==NULL) //打开建立好的文件 打开建立好的文件stu.dat 打开建立好的文件 {printf("Can not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++;//统计能读取的数据的个数 统计能读取的数据的个数i 统计能读取的数据的个数 n=i; //将读取的数据个数赋予 //将读取的数据个数赋予 n for(i=0;i<n;i++) //学生信息块都读取到结构体中 学生信息块都读取到结构体中 fread(&stu[i],LEN,1,fp); fclose(fp); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("No.\tname\tphone\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); for(i=0;i<n;i++) printf("%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone,stu[i]. addr); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); }
printf("\nEnter your choice(0~7):\n"); scanf("%d",&m); switch(m) {case 0:enter();break; case 1:list();break; case 2:search();break; case 3:Delete();break; case 4:add();break; case 5:sort();break; case 6:copy();break; case 7:exit(0); default:printf("input error.\n");break; } }while(m!=7); }
void search(void) //查找学生信息 查找学生信息 { int b; do{ printf("* * * * * * * * MENU* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf(" 8----------------------search by number.\n" ); printf(" 9-----------------------search by name.\n"); printf(" 10----------------------exit.\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf(“\nEnter your choice(8~10):\n”); //查找的方法选择 查找的方法选择 scanf(“%d”,&b); //按名字或学号 按名字或学号 switch(b) {case 8:sea_num();break; case 9:sea_name();break; case 10:break; default:printf("input error.\n");break; } }while(b!=10); printf("exit.\n");
通讯录管理系统设计思路: 通讯录管理系统设计思路:
首先对于通讯录中的各成员包含的信息序号、 首先对于通讯录中的各成员包含的信息序号、姓 名、TEL、住址定义一个结构体。 、住址定义一个结构体。 对与通讯录重要实现的各种操作可以使用一张菜 单清单进行任务选择使用switch语句执行 单清单进行任务选择使用switch语句执行 实验中定义一个结构体数组来储存成员, 实验中定义一个结构体数组来储存成员,进行成 员的插入,信息修改, 员的插入,信息修改,删除操作 实验的数据输入包括选择功能数字, 实验的数据输入包括选择功能数字,成员的联系 信息,查找的成员姓名;输出成员的信息。 信息,查找的成员姓名;输出成员的信息。 实验采用文件对学生数据的保存, 实验采用文件对学生数据的保存,提高操作效率
void enter(void) //进入工作,初始化通讯录信息 进入工作, 进入工作 {FILE*fp; int i,j; for(i=0;i<SIZE;i++) //输入成员信息 输入成员信息 {printf("\nInput score of student%d:\n",i+1); printf("NO.:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); printf("phone:"); scanf("%s",stu[i].phone); printf("%s",stu[i].addr); } if((fp=fopen(“stu.dat”,“wb”))==NULL)//新建一个 新建一个stu.dat文件储存信息 新建一个 文件储存信息 {printf("Can not open the file.\n"); exit(0); } for(i=0;i<SIZE;i++) //将信息写入文件中 将信息写入文件中 if(fwrite(&stu[i],LEN,1,fp)!=1) printf("file write error\n"); fclose(fp); }
void sea_name(void) //按名字查找成员信息 按名字查找成员信息 {FILE*fp; int i,j,flag,n; char name[10]; if((fp=fopen(“stu.dat”,“rb”))==NULL)//打开文件 打开文件stu.dat 打开文件 {printf("Can not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++; n=i; for(i=0;i<n;i++) fread(&stu[i],LEN,1,fp); fclose(fp); printf("\nInput name:"); scanf("%s",name); for(flag=0,i=0;i<n;i++) {if(strcmp(name,stu[i].name)==0) {printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("The record you search is\n:"); printf("No.\tname\tphone\n");
printf(" %s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i]Leabharlann Baiduphon e,stu[i].addr); flag=1; } } printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); if(flag!=1)printf("Not found the record\n"); }
Main 函数的设置
void main() { int m; do {printf("* * * * * * * * * *MENU * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf(" 0--------Enter record\n"); printf(" 1--------List the file\n"); printf(" 2--------Search record on name\n"); printf(" 3--------Delete a record\n"); printf(" 4--------Add record\n"); printf(" 5--------Sort to make new file\n"); printf(" 6--------copy the file to new file\n"); printf(" 7--------Quit\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
实验主要用到的函数: 实验主要用到的函数:
1:通讯建立函数 Enter() 通讯建立函数 2:成员信息列出函数 List() : 3: 成员删除函数 成员删除函数Delete() 4:成员新增函数 :成员新增函数Add () 5:成员信息排序函数 :成员信息排序函数Sort() 6:文件复制函数 :文件复制函数Copy() 7: 退出系统函数 退出系统函数Quit()
void sea_num(void) //以序号进行查找 以序号进行查找 {FILE*fp; int i,flag,n; char num[10]; if((fp=fopen("stu.dat","rb"))==NULL)//以二进制读的一个方式打开一个 以二进制读的一个方式打开一个 文件 {printf("Can not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++;//统计文件中可读的数据个数 统计文件中可读的数据个数i 统计文件中可读的数据个数 n=i; for(i=0;i<n;i++) fread(&stu[i],LEN,1,fp); //查找前首先将数据全部提取出来, 查找前首先将数据全部提取出来, 查找前首先将数据全部提取出来 放到结构体中 fclose(fp); printf("\nInput num:"); scanf("%s",num); for(flag=0,i=0;i<n;i++) {if(strcmp(num,stu[i].num)==0) //判断是否查找到信息 判断是否查找到信息 {printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("The record you search is\n:");