版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计课程设计报告专 业: 计算机科学与技术 班级学号: 姓 名: 指导教师: 年 月 日课程设计题目: 簿管理系统课程设计目的和要求目的: 簿管理程序,具有加入、删除、显示和查询 号码的功能。要求:1. 除有加入、删除、显示和查询功能外,还允许修改用户姓名、 。2. 具有缺省查询方式,即查询时只输入姓名的首字母,所有符合这一条件的 资料均在屏幕上显示出来。系统分析与设计系统总体设计通过对整个系统的分析,根据上述要求,可以将这个系统的设计分为三个模块(见图1):文件导入、通讯录编辑和退出。通讯录管理系统新建菜单浏览菜单修改菜单删除菜单查找菜单图1 系统功能模块系统详细设计 主函数 主
2、函数一般设计得比较简洁,只提供部分提示语及部分功能模块函数的调用。程序void main() printf(ntt :)欢迎使用通讯录管理系统beta);printf(ntt(_) 文件导入中请稍后nnnnn); system(cls);loadfile();while (1) mainmenu(); 各功能模块设计(1)主菜单函数此函数功能为提供键盘式选择菜单以调用不同函数。其流程如图2所示。显示一系列功能选项输入n,判断n是否是1 5?根据n的值调用各功能模块函数结束开始n图2 主菜单函数流程图程序void mainmenu() char choice; system(cls); prin
3、tf(ntt* 主菜单 *); printf(ntt* 1-新建菜单 *); printf(ntt* 2-浏览菜单 *);printf(ntt* 3-查找菜单 *); printf(ntt* 4-修改菜单 *);printf(ntt* 5-删除菜单 *); printf(ntt* 6-退 出 *); printf(ntt*); printf(ntt请选择:); choice=getch(); switch (choice) case 1:newrecord();break; case 2:browsemenu();break; case 3:searchmenu();break; case 4
4、:modifymenu();break; case 5:deletemenu();break;case 6:exit(0);default:mainmenu(); (2) 新建菜单函数该函数的功能是用户需要新建联系人记录,从键盘输入并逐条写到原来的通讯录文件中,注意采用新建而不是覆盖的方式。其流程如图3所示。 开始新建联系人是否继续新建?y/n结束ny图3 新建函数流程图程序void newrecord() printf(ntt* 请输入联系人信息 *n); printf(ntt输入姓名:); scanf(%s,&contactNO.name); printf(ntt输入 号码:); scan
5、f(%s,&contactNO.phone);printf(ntt输入工作单位:); scanf(%s,&contactNO.adress);printf(ntt输入E-mail:); scanf(%s,&contactNO.e_mail);NO+;savefile(); printf(ntt是否继续添加?(y/n):); if (getch()=y) newrecord();return; (3) 浏览菜单函数此函数功能为提供浏览所有联系人记录。其流程如图4所示。浏览全部联系人记录开始结束图4 浏览模块流程图程序void browsemenu() int i; system(cls); if
6、(NO!=0) printf(ntt* 以下为通讯录所有信息*); for (i=0;iNO;i+) printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(tt); if (i+1NO) printf(ntt_); system(pause); printf(ntt*); else printf(ntt+_+通讯录中无任何纪录); printf(
7、ntt按任意键返回主菜单:); getch(); return; (4) 查找菜单函数此模块的功能是用户可根据姓名或 号码查询联系人信息。查询菜单函数。功能为提供键盘式选择菜单选择查找方法。其流程如图5所示。开始按姓名查找按号码查找结束图5 查找函数流程图程序void searchmenu() char choice; system(cls); printf(ntt* 查找菜单 *); printf(ntt* 1-按姓名查找 *); printf(ntt* 2-按 查找 *); printf(ntt* 3-返回主菜单 *); printf(ntt*); printf(ntt请选择:); cho
8、ice=getch(); switch (choice) case 1:searchname();break; case 2:searchphone();break; case 3:mainmenu();break; 按姓名查找函数。其流程如图6 所示。 开始输入联系人姓名是否找到此记录?是否查找相同姓名?结束显示此记录提示未找到此记录ynyn图6 按姓名查找函数流程图程序void searchname() int mark=0; int i; int a=0;char name20; printf(ntt* 按姓名查找 *); printf(ntt请输入姓名:); scanf(%s,name
9、); for(i=a;iNO;i+) if (strcmp(,name)=0) printf(ntt* 以下是您查找的联系人信息 *); printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone);printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(ntt*);printf(ntt按任意键返回主菜单:); mark+; getch(); return; if(mark=0) pr
10、intf(ntt没有该姓名的联系人纪录); printf(ntt按任意键返回主菜单); getch(); return; 按 查找函数。其流程如图8所示。开始输入联系人 是否找到此记录?显示记录提示未找到结束图7 按 查找函数流程图程序void searchphone() int mark=0; int i; int a=0; char phone10; printf(ntt* 按 查找 *); printf(ntt请输入 :); scanf(%s,phone); for(i=0;iNO;i+) if (strcmp(contacti.phone,phone)=0) printf(ntt* 以
11、下是您查找的联系人信息 *); printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail:%s,contacti.e_mail); printf(ntt*); printf(ntt按任意键返回主菜单:); mark+; getch(); return; if (mark=0) printf(ntt没有该联系人信息); printf(ntt按任意键返回主菜单); getch(); return; (5)修改函
12、数此模块功能为用户能根据需要选择修改联系人信息,void modifymenu() int mark=0; int i,k; int a=0;int t=0;char choice;char name20;struct record modify;system(cls);printf(ntt请输入您要修改的姓名:); scanf(%s,name); for(i=a;iNO;i+) if (strcmp(,name)=0) k=i;mark=1;modify=contacti;printf(ntt* 以下是您将修改的联系人信息 *); printf(ntt姓 名: %s
13、,); printf(ntt联系 : %s,contacti.phone);printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(ntt是否继续?y/n);if(getch()=n) modifymenu(); else printf(ntt选择您要修改的选项:); printf(nttt(1).姓 名); printf(nttt(2).联系 ); printf(nttt(3).工作单位); printf(nttt(4). E-mail); printf(
14、nttt(5).返 回); printf(ntt请选择: ); choice=getch(); switch(choice) case 1: printf(姓 名:); scanf(%s,); break; case 2: printf(联系 :); scanf(%s,contacti.phone); break; case 3: printf(工作单位:); scanf(%s,contacti.adress); break; case 4: printf( E-mail:); scanf(%s,contacti.e_mail); break; case 5: mai
15、nmenu(); break; default: modifymenu(); printf(ntt您的修改结果为:);printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(ntt确认修改?y/n);if(getch()=n)contacti=modify; printf(ntt修改未保存!);else printf(ntt+_+修改成功!);sa
16、vefile();mark=0; printf(ntt是否继续修改?(y/n); if (getch()=y) modifymenu(); if (mark=0) printf(ntt+_+没有该联系人的纪录); printf(ntt是否继续修改?(y/n); if (getch()=y) modifymenu(); return;(6)删除函数此模块功能为用户可根据需要选择删除全部或单个联系人记录,且可按姓名或 删除单个联系人。其流程如图9所示。删除菜单函数。提供键盘式选择菜单以调用相关函数以实现各功能。 开始删除全部删除单个按姓名删除按 删除结束图8 删除函数模块流程图程序void del
17、etemenu() char choice; if(NO=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; system(cls); printf(ntt* 删除菜单 *); printf(ntt* 1-删除所有 *); printf(ntt* 2-删除单个 *); printf(ntt* 3-返回主菜单 *); printf(ntt*); printf(ntt请选择:); choice=getch(); switch(choice) case 1:deleteall();break; case 2:delet
18、esingle();break; case 3:mainmenu();break; default:mainmenu(); 删除所有函数程序void deleteall() printf(ntt确认删除?(y/n); if (getch()=y) if (fp=fopen(contact,w)=0) printf(ntt+_+不能打开文件,删除失败); loadfile(); NO=0; printf(ntt_纪录已删除,按任意键返回主菜单); getch(); fclose(fp);return; else return; 删除单个菜单函数程序void deletesingle() char
19、 choice; printf(nttt1-按姓名删除); printf(nttt2-按号码删除);printf(nttt3-返回删除菜单);printf(ntt请选择:); choice=getch(); switch (choice) case 1:deletename();break; case 2:deletephone();break; case 3:deletemenu();break; 按姓名删除函数程序 void deletename() int i,j; int mark=0; char name20; printf(ntt请输入要删除联系人姓名:); scanf(%s,na
20、me); if(NO=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; for (i=0;iNO;i+) if (strcmp(,name)=0) printf(ntt以下是您要删除的联系人纪录:); printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail)
21、; printf(ntt是否删除?(y/n); if (getch()=y) for (j=i;jNO-1;j+) contactj=contactj+1; NO-; mark+; printf(ntt_删除成功); savefile();printf(ntt是否继续删除?(y/n); if (getch()=y) deletename(); return; else return; continue; if (mark=0) printf(ntt没有该联系人的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletename(); return; 按
22、 删除函数程序void deletephone() int i,j; int mark=0; char phone20; printf(ntt请输入要删除联系 :); scanf(%s,phone); if(NO=0) printf(ntt+_+对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; for (i=0;iNO;i+) if (strcmp(contacti.phone,phone)=0) printf(ntt以下是您要删除的联系人纪录:); printf(ntt姓 名: %s,); printf(nt
23、t联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(ntt是否删除?(y/n); if (getch()=y) for (j=i;j_0) /*文件不为空*/ rewind(fp); /*文件位置指针移动到文件开始位置*/ for (NO=0;!feof(fp) & fread(&contactNO,sizeof(struct record),1,fp);NO+); printf(nnnntttt :)文件导入成功); prin
24、tf(ntttt 按任意键返回主菜单); getch(); return(NO); printf(nnnnttt :)文件导入成功); printf(nttt+_+ 簿文件中无任何纪录); printf(nttt 按任意键返回主菜单); getch(); return(NO); (2) 文件保存函数程序void savefile() int i; if (fp=fopen(student.txt,wb)=0) printf(ntt+_+文件打开失败!n); for (i=0;iNO;i+) if (fwrite(&contacti,sizeof(struct record),1,fp)!=1)
25、 printf(ntt+_+写入文件错误!n); printf(ntt_已成功保存至文件!n);fclose(fp); 系统调试出现的问题系统运行报告文件导入成功界面:主菜单函数:新建菜单:浏览函数:查找函数:修改函数:删除函数:总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在一周的时间里,
26、可以学到很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。经过短短一周的课程设计,我才算真正了解C语言的基本知识
27、。运用C语言可以解决许多实际问题。C语言作为一门高级和计算机编程语言,有其强大的功能。同样了解到C语言程序设计时所需的一种严谨和认真的精神,只有这样,才能更好的适应这个日新月异的飞速发展的社会。参考书目 1、C语言程序设计题典 李春葆 张植民 肖忠付 清华大学出版社 20022、C程序设计习题解答与上机指导 谭浩强 清华大学出版社 20053、C语言程序设计 廖雷 高等教育出版社 2006附录(源文件)#include #include #include #include struct record char name20; char phone20; char adress40; char
28、e_mail30; contact500; int NO=0;FILE *fp; void mainmenu(); void newrecord();void browsemenu();void searchmenu(); void searchname(); void searchphone();void modifymenu(); void deletemenu();void deleteall(); void deletesingle();void deletename();void deletephone();int loadfile(); void savefile(); void
29、main() printf(ntt :)欢迎使用通讯录管理系统beta);printf(ntt(_) 文件导入中请稍后nnnnn); system(cls);loadfile();while (1) mainmenu(); void mainmenu() char choice; system(cls); printf(ntt* 主菜单 *); printf(ntt* 1-新建菜单 *); printf(ntt* 2-浏览菜单 *);printf(ntt* 3-查找菜单 *); printf(ntt* 4-修改菜单 *);printf(ntt* 5-删除菜单 *); printf(ntt* 6
30、-退 出 *); printf(ntt*); printf(ntt请选择:); choice=getch(); switch (choice) case 1:newrecord();break; case 2:browsemenu();break; case 3:searchmenu();break; case 4:modifymenu();break; case 5:deletemenu();break;case 6:exit(0);default:mainmenu(); void newrecord() printf(ntt* 请输入联系人信息 *n); printf(ntt输入姓名:);
31、 scanf(%s,&contactNO.name); printf(ntt输入 号码:); scanf(%s,&contactNO.phone);printf(ntt输入工作单位:); scanf(%s,&contactNO.adress);printf(ntt输入E-mail:); scanf(%s,&contactNO.e_mail);NO+;savefile(); printf(ntt是否继续添加?(y/n):); if (getch()=y) newrecord();return; void browsemenu() int i; system(cls); if(NO!=0) pri
32、ntf(ntt* 以下为通讯录所有信息*); for (i=0;iNO;i+) printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(tt); if (i+1NO) printf(ntt_); system(pause); printf(ntt*); else printf(ntt+_+通讯录中无任何纪录); printf(ntt按任意键返回主菜
33、单:); getch(); return; void searchmenu() char choice; system(cls); printf(ntt* 查找菜单 *); printf(ntt* 1-按姓名查找 *); printf(ntt* 2-按 查找 *); printf(ntt* 3-返回主菜单 *); printf(ntt*); printf(ntt请选择:); choice=getch(); switch (choice) case 1:searchname();break; case 2:searchphone();break; case 3:mainmenu();break;
34、 void searchname() int mark=0; int i; int a=0;char name20; printf(ntt* 按姓名查找 *); printf(ntt请输入姓名:); scanf(%s,name); for(i=a;iNO;i+) if (strcmp(,name)=0) printf(ntt* 以下是您查找的联系人信息 *); printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone);printf(ntt工作单位: %s,contacti.adress);
35、printf(ntt E-mail: %s,contacti.e_mail); printf(ntt*);printf(ntt按任意键返回主菜单:); mark+; getch(); return; return;if(mark=0) printf(ntt没有该姓名的联系人纪录); printf(ntt按任意键返回主菜单); getch(); return; void searchphone() int mark=0; int i; int a=0; char phone10; printf(ntt* 按 查找 *); printf(ntt请输入 :); scanf(%s,phone); fo
36、r(i=0;iNO;i+) if (strcmp(contacti.phone,phone)=0) printf(ntt* 以下是您查找的联系人信息 *); printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail:%s,contacti.e_mail); printf(ntt*); printf(ntt按任意键返回主菜单:); mark+; getch(); return; if (mark=0) pri
37、ntf(ntt没有该联系人信息); printf(ntt按任意键返回主菜单); getch(); return; void modifymenu() int mark=0; int i,k; int a=0;int t=0;char choice;char name20;struct record modify;system(cls);printf(ntt请输入您要修改的姓名:); scanf(%s,name); for(i=a;iNO;i+) if (strcmp(,name)=0) k=i;mark=1;modify=contacti;printf(ntt* 以下
38、是您将修改的联系人信息 *); printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone);printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(ntt是否继续?y/n);if(getch()=n) modifymenu(); else printf(ntt选择您要修改的选项:); printf(nttt(1).姓 名); printf(nttt(2).联系 ); printf(nttt(3).工作单位);
39、 printf(nttt(4). E-mail); printf(nttt(5).返 回); printf(ntt请选择: ); choice=getch(); switch(choice) case 1: printf(姓 名:); scanf(%s,); break; case 2: printf(联系 :); scanf(%s,contacti.phone); break; case 3: printf(工作单位:); scanf(%s,contacti.adress); break; case 4: printf( E-mail:); scanf(%s,con
40、tacti.e_mail); break; case 5: mainmenu(); break; default: modifymenu(); printf(ntt您的修改结果为:);printf(ntt姓 名: %s,); printf(ntt联系 : %s,contacti.phone); printf(ntt工作单位: %s,contacti.adress); printf(ntt E-mail: %s,contacti.e_mail); printf(ntt确认修改?y/n);if(getch()=n)contacti=modify; printf(ntt修改
41、未保存!);else printf(ntt+_+修改成功!);savefile();mark=0; printf(ntt是否继续修改?(y/n); if (getch()=y) modifymenu(); if (mark=0) printf(ntt+_+没有该联系人的纪录); printf(ntt是否继续修改?(y/n); if (getch()=y) modifymenu(); return;void deletemenu() char choice; if(NO=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); retu
42、rn; system(cls); printf(ntt* 删除菜单 *); printf(ntt* 1-删除所有 *); printf(ntt* 2-删除单个 *); printf(ntt* 3-返回主菜单 *); printf(ntt*); printf(ntt请选择:); choice=getch(); switch(choice) case 1:deleteall();break; case 2:deletesingle();break; case 3:mainmenu();break; default:mainmenu(); void deleteall() printf(ntt确认删
43、除?(y/n); if (getch()=y) if (fp=fopen(contact,w)=0) printf(ntt+_+不能打开文件,删除失败); loadfile(); NO=0; printf(ntt_纪录已删除,按任意键返回主菜单); getch(); fclose(fp);return; else return; void deletesingle() char choice; printf(nttt1-按姓名删除); printf(nttt2-按号码删除);printf(nttt3-返回删除菜单);printf(ntt请选择:); choice=getch(); switch (choice) case 1:deletename();break; case 2:deletephone();break; case 3:deletemenu();break; void deletename() int i,j; int mark=0; char name20; printf(ntt请输入要删除联系人姓名:); scanf(%s,name); if(NO=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国AI工业质检设备在C行业投资回报周期计算
- 2026中国食品饮料行业竞争格局分析及品牌营销策略报告
- 七年级英语下册 Unit 12 What did you do last weekend第二课时 Section A(Grammar Focus-3c)教学设计(新版)人教新目标版
- 湖南省桑植县贺龙中学高一音乐 五十六朵芬芳的花2教案
- 新教材高中化学 第3章 水溶液中的离子反应与平衡 第1节 电离平衡教学设计 新人教版选择性必修第一册
- 一年级信息技术下册 动感图文-设置动画效果(二)教案 河大版
- 人教版高中化学必修第一册第二章海水中的重要元素钠和氯微专题4阿伏加德罗常数的应用课件
- 浙教版科学八年级下册 1.5《磁生电》 教学设计
- 直面挫折逆风飞翔(教学设计)初三下学期教育主题班会
- 国家安全教育高中班会教案
- 2026广西柳州市城中区人民法院招录聘用工作人员3人(二)笔试参考题库及答案详解
- 新版2025-2026学年道德与法治三年级上册全册教学设计合集
- 《水利工程智慧感知与测量技术》课件-31.无人机水利应用案例
- 化州市2025广东茂名市化州市党风廉政教育中心招聘纪检监察辅助人员21人笔试历年参考题库典型考点附带答案详解
- 2026年山东省春季高考数学试卷(含答案解析)
- 2026年青岛国际机场集团有限公司校园招聘考试参考题库及答案解析
- 厂房照明灯具安装施工方案
- JJF(苏) 312-2025 碳普惠减排量计量技术规范 分布式光伏发电系统
- 耳鸣的物理治疗
- AQ3026-2026《化工企业设备检修作业安全规范》标准解读课件
- 指挥中心交接班工作制度
评论
0/150
提交评论