版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、太原理工大学计算机科学与技术学院实验二 通讯录管理一、 设计方案简介本课题旨在建立一个通讯录系统,系统中保存着各人员的姓名、电话、email以及与本人的关系(亲戚、同学、朋友、同事等)等信息,通过该系统的简单界面可以对通讯录进行新建、浏览、查找、更新、删除等操作。二、 设计题目实现:1)需求分析采用结构体包含姓名,电话,emali,以及与本人的关系由用户输入关系后,添加姓名,电话等用户输入完成后,会自动提示保存以便查询。2)概要设计1) 函数的调用关系图反映了演示程序的层次结构 主程序 mainmenu()newrecord() searchbyname() deletemenu() list
2、byname() writetofile() deleteall() deletebyname() deletebyname()2) 详细设计定义一个people结构体包含了姓名,电话 ,邮箱 ,关系 int num=0;/外部变量num为文件中的纪录数 file *fp; void mainmenu();/主菜单 void newrecord();/新添纪录 void searchbyname();/按姓名查询 void deletemenu();/删除菜单 void deleteall();/删除所有 void deleteone();/删除单个 void showall();/显示所有
3、void readfromfile();/读取文件 void writetofile();/写入文件 void deletebyid();/按分组删除 void deletebyname();/按姓名删除 void listbyname();/按姓名排序 int main(int argc, char* argv) 从文件总读入 while (1) 主菜单; void readfromfile()/从文件导入 当打开的文件为空,打印通讯文件不存在 否则提示通讯文件已建立,按任意键进入主菜单 文件位置指针移动到文件末尾*/ void mainmenu()/主菜单 printf(ntt* 主菜单
4、*); printf(ntt* 1-新添纪录 2-姓名查询 *); printf(ntt* 3-删除菜单 4-姓名排序 *); printf(ntt* 5-保存退出 6-直接退出*); printf(ntt*); printf(ntt请选择:); choic=getch(); switch (choic) case 1:调用新添函数 case 2:调用姓名查询函数 case 3:调用删除菜单函数; case 4:调用姓名排序函数 case 5:调用写入文件函数 case 6:退出 default:mainmenu(); void deletemenu()/删除菜单 if(num=0) prin
5、tf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); system(cls); printf(ntt* 删除菜单 *); printf(ntt* 1-删除所有 2-删除单个 *); printf(ntt* 3-返回主菜单 *); printf(ntt*); printf(ntt请选择:); choic=getch(); switch (choic) case 1调用删除全部函数 case 2:调用按姓名删除函数 否则返回主菜单 void deleteall()/删除所有 printf(ntt确认删除?(y/n); if (getch()=y) fclose(fp
6、); if (fp=fopen(people.bin,wb)=null) printf(ntt不能打开文件,删除失败); readfromfile(); num=0; printf(ntt纪录已删除,按任意键返回主菜单); getch(); return; else return; /按姓名删除 char name20; printf(ntt请输入要删除姓名:); 如果输入的姓名与存储的姓名一致 printf(ntt以下是您要删除的纪录:); findmark+; printf(ntt_); printf(ntt关系: %s, people i.id); printf(ntt姓名: %s, p
7、eople ); printf(ntt电话: %s, people i.phone); printf(ntte-mail:%s, people i.e_mail); printf(ntt_); printf(ntt是否删除?(y/n); if (getch()=y) 删除相关记录 返回主菜单 void newrecord()/添加纪录 printf(ntt* 请输入信息 *n); 输入分组输入姓名输入电话号码输入e-mail 是否继续添加 void showall()/显示所有 printf(ntt* 以下为通讯录所有信息*); for (i=0;inum;i+) 打印所有人的关系
8、,姓名,电话,邮箱 else printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单:); getch(); return; void searchbyname()/按姓名查询 printf(ntt* 按姓名查找 *); printf(ntt请输入姓名:); for(i=a;inum;i+) if (输入的姓名与记录的姓名一致) printf(ntt* 以下是您查找的信息 *); printf(ntt关系: %s,studenti.id); printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phon
9、e); printf(ntte-mail:%s,studenti.e_mail); void writetofile()/写入文件 int i; if (fp=fopen(student.bin,wb)=null) printf(ntt文件打开失败); for (i=0;inum;i+) if (fwrite(&studenti,sizeof(struct record),1,fp)!=1) printf(ntt写入文件错误!n); fclose(fp); printf(ntt通讯录文件已保存); printf(ntt按任意键退出程序ntt); exit(0); void listbyname
10、()/按姓名排序 int i,j; struct record tmp; for (i=1;inum;i+) if(strcmp(,)0) tmp=studenti; j=i-1; do studentj+1=studentj; j-; while (strcmp(,)=0); studentj+1=tmp; printf(ntt排序成功,是否显示?(y/n); if (getch()=y) 显示全部 4) 测试分析1 改进方案系统还有部分漏洞未能修复、不够绝对的稳定、还需改进!改进的地方:进行姓
11、名查询时,可以实现只输入名字的第一个字母就可以显示相关记录;可以实现跳过输入邮箱直接进行下一步操作; 本次课程设计仅完成了要求的基本功能、由于平时掌握的不够好以及时间关系未能完成选作功能、这是一大缺陷!另外通过本次课程设计也更好的掌握了平时所学的知识、通过实践学到了许多课本上没有的知识!2 体会以后要加强动手时间能力、多与同学交流算法精髓!在编写程序中尽量做到独立完成、对于自己想要完成的问题要主动编程完成、这样自己是一个很大的提升、也能学到很多的知识、熟练编程!5) 使用说明主菜单新添记录显示全部信息按姓名查找按姓名排序删除菜单附录一:参考资料 数据结构(严蔚敏版) c语言程序设计(谭浩强版)
12、附录二:源程序/ sd.cpp : defines the entry point for the console application./#include stdafx.h#include #include #include #include struct record char name20; char phone20; char e_mail30; char id20;people500; int num=0;/外部变量num为文件中的纪录数 file *fp; void mainmenu();/主菜单 void newrecord();/新添纪录 void searchbyname(
13、);/按姓名查询 void deletemenu();/删除菜单 void deleteall();/删除所有 void deleteone();/删除单个 void showall();/显示所有 void readfromfile();/读取文件 void writetofile();/写入文件 void deletebyid();/按分组删除 void deletebyname();/按姓名删除 void listbyname();/按姓名排序 int main(int argc, char* argv) readfromfile(); while (1) mainmenu(); ret
14、urn 0;void readfromfile()/从文件导入 if(fp=fopen(people.bin,rb)=null) printf(ntt通讯录文件不存在); if (fp=fopen(people.bin,wb)=null) printf(ntt建立失败); exit(0); else printf(ntt通讯录文件已建立); printf(ntt按任意键进入主菜单); getch(); return; exit(0); fseek(fp,0,2); /*文件位置指针移动到文件末尾*/ if (ftell(fp)0) /*文件不为空*/ rewind(fp); /*文件位置指针移
15、动到文件开始位置*/ for (num=0;!feof(fp) & fread(&peoplenum,sizeof(struct record),1,fp);num+); printf(ntt文件导入成功); printf(ntt按任意键返回主菜单); getch(); return; printf(ntt文件导入成功); printf(ntt通讯录文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; void mainmenu()/主菜单 char choic; system(cls); printf(ntt* 主菜单 *); printf(nt
16、t* 1-新添纪录 2-姓名查询 *); printf(ntt* 3-删除菜单 4-姓名排序 *); printf(ntt* 5-保存退出 6-直接退出*); printf(ntt*); printf(ntt请选择:); choic=getch(); switch (choic) case 1:newrecord();break; case 2:searchbyname();break; case 3:deletemenu();break; case 4:listbyname();break; case 5:writetofile();break; case 6:exit(0); defaul
17、t:mainmenu(); void deletemenu()/删除菜单 char choic; if(num=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; system(cls); printf(ntt* 删除菜单 *); printf(ntt* 1-删除所有 2-删除单个 *); printf(ntt* 3-返回主菜单 *); printf(ntt*); printf(ntt请选择:); choic=getch(); switch (choic) case 1:deleteall();break; ca
18、se 2:deletebyname();break; case 3:mainmenu();break; default:mainmenu();break; void deleteall()/删除所有 printf(ntt确认删除?(y/n); if (getch()=y) fclose(fp); if (fp=fopen(people.bin,wb)=null) printf(ntt不能打开文件,删除失败); readfromfile(); num=0; printf(ntt纪录已删除,按任意键返回主菜单); getch(); return; else return; void deleteb
19、yname()/按姓名删除 int a=0; int findmark=0; int j; int deletemark=0; int i; char name20; printf(ntt请输入要删除姓名:); scanf(%s,name); for (i=a;inum;i+) if (strcmp(,name)=null) printf(ntt以下是您要删除的纪录:); findmark+; printf(ntt_); printf(ntt关系: %s,peoplei.id); printf(ntt姓名: %s,); printf(ntt电话:
20、 %s,peoplei.phone); printf(ntte-mail:%s,peoplei.e_mail); printf(ntt_); printf(ntt是否删除?(y/n); if (getch()=y) for (j=i;jnum-1;j+) /*纪录移动,从stud数组中删除之*/ peoplej=peoplej+1; num-; deletemark+; printf(ntt删除成功); if(i+1)num) printf(ntt是否继续删除相同姓名的信息?(y/n); if (getch()=y) a=i; continue; printf(ntt是否继续删除?(y/n);
21、 if (getch()=y) deletebyname(); return; if(i+1)num) printf(ntt是否继续删除相同姓名的信息?(y/n); if (getch()=y) a=i; continue; else mainmenu(); if (deletemark=0)&(findmark=0) printf(ntt没有该同学的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyid(); return; return; else if (findmark!=0) printf(ntt没有重名信息); printf(n
22、tt没有该的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyid(); return; return; void deletebyid()/按分组删除 void newrecord()/添加纪录 printf(ntt* 请输入信息 *n); printf(ntt输入分组:); scanf(%s,&peoplenum.id); printf(ntt输入姓名:); scanf(%s,&); printf(ntt输入电话号码:); scanf(%s,&peoplenum.phone); printf(ntt输入e-m
23、ail:); scanf(%s,&peoplenum.e_mail); num+; printf(ntt是否继续添加?(y/n):); if (getch()=y) newrecord(); return; void showall()/显示所有 int i; system(cls); if(num!=0) printf(ntt* 以下为通讯录所有信息*); for (i=0;inum;i+) printf(ntt关系: %s,peoplei.id); printf(ntt姓名: %s,); printf(ntt电话: %s,peoplei.phone); printf
24、(ntte-mail:%s,peoplei.e_mail); printf(tt); if (i+1num) printf(ntt_); system(pause); printf(ntt*); else printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单:); getch(); return; void searchbyname()/按姓名查询 int mark=0; int i; int a=0; printf(ntt* 按姓名查找 *); char name20; printf(ntt请输入姓名:); scanf(%s,name); for(i=a;inum;i+) if (strcmp(,name)=0) printf(ntt* 以下是您查找的信息 *); printf(ntt关系: %s,peoplei.id); printf(ntt姓名: %s,); printf(ntt电话: %s,peoplei.phone); printf(ntte-mail:%s,peoplei.e_mail);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《大学计算机基础》课件-第5章 电子表格处理软件
- 填报志愿 合同
- 《正向间接血凝试验》课件
- 2025年吐鲁番道路货运驾驶员从业资格考试题库
- 2025年湖北货运从业资格证考试模拟考试题目
- 2025年长沙货运从业资格证考试题目和答案
- 2025年张掖驾校考试货运从业资格证模拟考试
- 2025年河源考货运资格证考试内容
- 工业用地交易中介合同样本
- 水利工程机械施工安全协议
- 《推拿治疗小儿腹泻》精品PPT
- 大学英语四级必背词汇表21853
- 结构设计面试题(答案)
- 升压站、变电站架构安装方案
- 赤峰高铁广场商铺租赁合同(样本)
- 郭顶—水星记—歌词
- 英文版个人简历自荐信
- 其他专技、管理服务岗位聘期考核表
- 四年级上学期劳动技术测试卷带答案
- 关于学习考察应急管理工作情况报告.doc
- TX-1C单片机实验板使用手册
评论
0/150
提交评论