![[工学]c语言课程设计.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/10/cbcffa91-6aac-423a-a51f-0bcd2b240aed/cbcffa91-6aac-423a-a51f-0bcd2b240aed1.gif)
![[工学]c语言课程设计.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/10/cbcffa91-6aac-423a-a51f-0bcd2b240aed/cbcffa91-6aac-423a-a51f-0bcd2b240aed2.gif)
![[工学]c语言课程设计.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/10/cbcffa91-6aac-423a-a51f-0bcd2b240aed/cbcffa91-6aac-423a-a51f-0bcd2b240aed3.gif)
![[工学]c语言课程设计.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/10/cbcffa91-6aac-423a-a51f-0bcd2b240aed/cbcffa91-6aac-423a-a51f-0bcd2b240aed4.gif)
![[工学]c语言课程设计.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/10/cbcffa91-6aac-423a-a51f-0bcd2b240aed/cbcffa91-6aac-423a-a51f-0bcd2b240aed5.gif)
已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
xxxx大学xxxxxx学院计算机类课程设计报告课程名称: C程序设计课程设计题目: 通讯录管理系统姓 名: 系: 专 业: 年 级: 学 号: 指导教师: 职 称: 2010 年 12 月 23 日xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx课程设计结果评定评语:成绩:指导教师签字:任务下达日期:评定日期:目 录课程设计的目的1程设计的要求1课程设计报告内容2结构框图2各模块功能3设计的主体思想4源代码5调试程序中出现的问题24程序各界面截图25总结30通讯录管理系统1.课程设计的目的(1)进一步巩固c程序的知识;(2)培养结构化程序,模块化程序设计的方法和能力;(3)很多时候我们只能在手机上查找通讯录,但到了电脑上也就没有了那些信息。即使有,在联系人很多的时候也不便于查找,修改,删除等。所以通过设计通讯录管理系统就可以比较方便的实现这些功能。满足那些有很多联系人的人的需要。方便在电脑上操作。2.课程设计的要求 设计一个简单的通讯录管理系统,要求有简单的界面,有退出程序功能。能够新建一个文本文档实现联系人信息的输入,在程序中能够实现联系人的添加,删除,修改,查询等功能。在每一次操作后都可以回到功能菜单,实现循环操作,并且每次执行操作后都可以保存到新建的通讯录文本文档中。在程序中编有save()和read()函数能够保存信息实现下一次运行程序时将这些信息读到程序中,以便实现所需的操作。3.课程设计报告内容3.1 结构框图欢迎界面主菜单退出系统功能菜单新建通讯录查询更新添加删除输出返回主菜单新建一个通讯录查找联系人信息修改联系人信息添加联系人删除联系人输出通讯录信息返回按姓名查找按性别查找按电子邮箱查找按手机号码查找按家庭地址查找按QQ号查找修改姓名修改性别修改手机号码修改电子邮箱修改家庭地址修改QQ号3.2 各模块功能3.2.1 struct member是设置通讯录的各项信息,以便在各个模块中调用;3.2.2 intput(int k)功能是输入联系人信息3.2.3 save()功能是保存所输入的联系人信息,以便日后调用;3.2.4 read()功能是读出所保存的信息到程序中,以便在程序中使用所需的信息,进行添加,删除,查询,修改等;3.2.5 getlines()功能是记录所存储联系人的数量,以便在read()中使用;3.2.6 revise()功能是修改联系人信息;3.2.7 search()功能是查询所需要的联系人;3.2.8 del(char name10,int rows,int cols)功能是删除不需要的联系人;3.2.9 menu()功能是实现主菜单的界面,并使主菜单中的各项操作连接到相应的函数中;3.2.10 system2()功能是实现功能菜单的界面,并使功能菜单中的各项操作连接到相应的函数中;3.2.11 menu1()功能是实现欢迎界面,并可按任意键进入主菜单;3.2.12 get()功能是实现通讯录中所有联系人的输出;3.3设计的主体思想1.考虑到程序量大,代码多,所以进行函数调用,分几个人去完成;2.为了方便下面的函数编写,先设置一个member的结构体作为自定义类型。定义count的全局变量,计数联系人的数量,以便在各个函数中在for语句中调用;3.在设置添加联系人时由于添加的方式与input()函数中的一样,所以直接调用input(int k)函数,在input(int k)中设置形参k,使得在添加时能够接在已存储的联系人后面;4.在更新这一项中调用了revise()函数,修改完成后调用save()函数进行保存;接着进行清屏命令system( cls ),再调用menu()函数返回功能菜单;5.在删除这一项中,先读出通讯录文本文档中的联系人信息用到read()函数,再调用del(char name10,int rows,int cols)函数,删除完成后调用save()保存,调用get()函数输出剩余的联系人信息,然后调用system( cls )和menu()函数返回功能菜单;6.在查询这一项中,同样先读出通讯录文本文档中的联系人信息,在调用search()函数时,函数中有分按姓名,性别,手机号码,电子邮箱,家庭地址和QQ号进行查询,之后调用system( cls )和menu()函数返回功能菜单;7.输出功能中先把通讯录中联系人信息读到程序中,然后调用get()函数输出联系人信息,同样调用ystem( cls )和menu()函数返回功能菜单;8.为了达到各功能项的连接,程序中各个函数中和各个函数的调用中都要用到switch语句。9.要反复回到主菜单,所以用到GOTO功能,壁景的好看用到了CONIO.H 函数。10为了给使用者带来方便,程序中用中文的提示语;11由于要将联系人信息写到文件中,所以要判断文件是否无法创建,文件是否打得开的问题;3.4源代码#include#include#include#include#includechar key;int count=1,i=0,line=0;int cols=6;char n;FILE *fp;struct memberchar name10;char sex5;char phone20;char mail20;char address50;char QQ15;mem100;void menu1();void system2();void menu();void revise();void save();void input();void get();void del(char name10,int rows,int cols);int main()if(fp=fopen(通讯录.txt,a)=NULL)printf(无法创建文件!);exit(1); fclose(fp);menu1();return 0;int getlines()FILE *fp;char ch;int lines=0;if(fp=fopen(通讯录.txt,r)=NULL)printf(文件打开错误1n);exit(1);fseek(fp,0,SEEK_SET);while(ch=fgetc(fp)!=EOF)if (ch = n)lines+;fseek(fp,0,SEEK_SET);return lines;fclose(fp);void read() char ch; fp=fopen(通讯录.txt,r);fseek(fp,0,SEEK_SET);while(ch=fgetc(fp)!=n);line=getlines()-1;for(i=0;iline;i+)fscanf(fp,%st,);fscanf(fp,%st,memi.sex);fscanf(fp,%st,memi.phone);fscanf(fp,%st,memi.mail);fscanf(fp,%st,memi.address);fscanf(fp,%s,memi.QQ); count=i;fclose(fp);void input(int k) i=k;printf(按q结束输入,按tab键输入下一个信息(如果无该选项信息,输入000000)n);printf(姓名性别手机号码电子邮箱家庭地址QQ号n);while(getch()!=q)scanf(%s,);scanf(%s,memi.sex);scanf(%s,memi.phone);scanf(%s,memi.mail);scanf(%s,memi.address);scanf(%s,memi.QQ);i+; count = i;void save()if(fp=fopen(通讯录.txt,w+)=0)printf(文件打开错误n);exit(1);fprintf(fp,姓名性别手机号码电子邮箱家庭地址QQ号n); for(i=0;icount;i+)fprintf(fp,%st,);fprintf(fp,%st,memi.sex);fprintf(fp,%st,memi.phone);fprintf(fp,%st,memi.mail);fprintf(fp,%st,memi.address);fprintf(fp,%s,memi.QQ);fputc(n,fp);printf(保存成功!n);fclose(fp);void revise() int f=0; int g; int j; char h20; printf(请输入要修改的联系人姓名:n); scanf(%s,h); for(i=0;i=count;i+) j=strcmp(h,); if(j=0) f=1; printf(姓名性别手机号码电子邮箱家庭地址QQ号n); printf(%st%st%st%st%st%sn,,memi.sex,memi.phone,memi.mail,memi.address,memi.QQ); printf(=修改联系人信息=n); printf( 1.姓名 n); printf( 2.性别 n); printf( 3.手机号码 n); printf( 4.电子邮箱 n); printf( 5.家庭地址 n); printf( 6.QQ号 n); printf(=n); printf(请输入想要修改的内容编号:n); scanf(%d,&g); switch(g) case 1: printf(输入新姓名:n);scanf(%s,);break; case 2: printf(输入性别:n);scanf(%s,memi.sex);break; case 3: printf(输入新手机号码:n);scanf(%s,memi.phone);break; case 4: printf(输入新电子邮箱:n);scanf(%s,memi.mail);break; case 5: printf(输入新家庭地址:n);scanf(%s,memi.address);break; case 6: printf(输入新QQ号:n);scanf(%s,memi.QQ);break; default: printf(输入错误n); if(f=0) printf(对不起,没有该联系人!n); void search() char m; int n,j,flag=0; char s; char s120; printf(nt=查找联系人信息=n); printf( 1.姓名 n); printf( 2.性别 n); printf( 3.手机号码 n); printf( 4.电子邮箱 n); printf( 5.家庭地址 n); printf( 6.QQ号 n);printf(t=n); printf(请输入想要查询的内容编号:n);search1: m=getch(); flag=0; switch(m) case 1: printf(请输入要查询的名字:); scanf(%s,s1);printf(姓名性别手机号码电子邮箱家庭地址QQ号n); for(j=0;j=count;j+) n=strcmp(,s1); if(n=0) printf(%st%st%st%st%st%sn,,memj.sex,memj.phone,memj.mail,memj.address,memj.QQ);flag =1; if (flag = 0) printf(对不起,找不到相应信息!n); break; case 2: printf(请输入要查询的性别:); scanf(%s,s1);printf(姓名性别手机号码电子邮箱家庭地址QQ号n); for(j=0;j=count;j+) n=strcmp(memj.sex,s1); if(n=0) printf(%st%st%st%st%st%sn,,memj.sex,memj.phone,memj.mail,memj.address,memj.QQ);flag= 1; if (flag = 0) printf(对不起,找不到相应信息!n); break; case 3: printf(请输入要查询的手机号码:); scanf(%s,s1);printf(姓名性别手机号码电子邮箱家庭地址QQ号n); for(j=0;j=count;j+) n=strcmp(memj.phone,s1); if(n=0) printf(%st%st%st%st%st%sn,,memj.sex,memj.phone,memj.mail,memj.address,memj.QQ);flag= 1; if (flag = 0) printf(对不起,找不到相应信息!n); break; case 4: printf(请输入要查询的电子邮件:); scanf(%s,s1); printf(姓名性别手机号码电子邮箱家庭地址QQ号n); for(j=0;j=count;j+) n=strcmp(memj.mail,s1); if(n=0) printf(%st%st%st%st%st%sn,,memj.sex,memj.phone,memj.mail,memj.address,memj.QQ);flag= 1; if (flag = 0) printf(对不起,找不到相应信息!n); break; case 5: printf(请输入要查询的家庭该地址); scanf(%s,s1);printf(姓名性别手机号码电子邮箱家庭地址QQ号n); for(j=0;j=count;j+) n=strcmp(memj.address,s1); if(n=0) printf(%st%st%st%st%st%sn,,memj.sex,memj.phone,memj.mail,memj.address,memj.QQ);flag= 1; if (flag = 0) printf(对不起,找不到相应信息!n); break; case 6: printf(请输入要查询的QQ:); scanf(%s,s1);printf(姓名性别手机号码电子邮箱家庭地址QQ号n); for(j=0;j=count;j+) n=strcmp(memj.QQ,s1); if(n=0) printf(%st%st%st%st%st%sn,,memj.sex,memj.phone,memj.mail,memj.address,memj.QQ);flag= 1; if (flag = 0) printf(对不起,找不到相应信息!n); break; default: goto search1; printf(是否要继续继续查找(Y/N):); scanf(%s,&s); if(s=Y|s=y)printf(请输入想要查询的内容编号:n); goto search1; elsereturn;void del(char name10,int rows,int cols)int j,n;char confirm;for(j=0;jrows;j+)n=strcmp(,name);if(n=0)printf(删除数据:n);printf(%st,); printf(%st,memj.sex); printf(%st,memj.phone); printf(%st,memj.mail); printf(%st,memj.address); printf(%st,memj.QQ);printf(n);printf(您是否愿意删除此数据?t press y or nn);confirm = getch();if (confirm=n)return;else if (confirm = y)while(j通讯录管理系通讯录管理系统n);printf( *n);printf(tt#=#n);printf(tt#=#n);printf(tt# #n);printf(tt# #n);printf(tt# 欢迎使用通讯录管理系统 #n);printf(tt# #n);printf(tt# #n);printf(tt# #n);printf(tt# 按任意键进入 #n);printf(tt# #n);printf(tt# #n);printf(tt#=#n);printf(tt#=#n);getch();system( cls ); menu();void get()int m;printf(姓名性别电话号码电子邮箱家庭地址QQ号n);for(m=0;mcount;m+) printf(%st,); printf(%st,memm.sex); printf(%st,memm.phone); printf(%st,memm.mail); printf(%st,memm.address); printf(%sn,memm.QQ);3.5 调试程序中出现的问题1.在调试程序时由于定义sex时只定义其大小为4个字符,在输入5个字符时会显示乱码;2.在运行查询操作时,由于程序中运用switch语句,在判断是依据姓名查询还是依据其它信息查询时,由于运用for语句逐个判断时,当判断可以时,flag置为1,但由于可以连续判断,没有重新将flag置0;所以在没有符合条件时也会输出姓名,性别,手机号码,电子邮箱,家庭地址,QQ号这几个字,而又会提示找不到相应信息;所以在switch之前要将flag置0;3.由于在输出语句中没有使用t字符,导致输出时编排顺序混乱;4.在进行多次查询时当输入错误的信息时会一直出现提示符,由于在定义goto返回点时将提示符包含在里面;5.在查询中判断是否要继续查询时当输入y时运行没反应,主要是没有提示符,而程序可以正常运行,只是输入错误信息,只要将提示信息“请输入想要查询的内容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一语文试题卷子及答案
- 补齐卫生管理证书考试内容的短板试题及答案
- 自我用药意识培养试题及答案
- 西医临床考试重大考点与试题及答案
- 财务与税务分工的核心内容试题及答案
- 计算机二级考生互动学习平台需求试题及答案
- 应对森林草原火灾风险的防控措施
- 药学知识更新的考察方向试题及答案
- 高潜力员工的识别与管理研究试题及答案
- 认知心理学的核心理念试题及答案
- 樊昌信通信原理课后答案
- 2025年中考数学一轮复习 -第六章 圆-第二节 与圆有关的位置关系
- 创业思维-创造你喜爱的人生(浙江旅游职业学院)知到智慧树答案
- 大学物理(一)知到智慧树章节测试课后答案2024年秋湖南大学
- 中建质量样板策划实施方案
- 2024年10月自考03709马克思主义基本原理概论试题及答案含解析
- 《数字中国建设整体布局规划》解读报告
- 智慧旅游平台运营方案
- 《石油化工金属管道布置设计规范》SHT3012-2011
- 2024年大学物理磁场教案设计示范
- 国开汽车学院《项目管理》形考作业1-4答案
评论
0/150
提交评论