C语言课程设计_第1页
C语言课程设计_第2页
C语言课程设计_第3页
C语言课程设计_第4页
C语言课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计 课程名称C语言程序设计课程设计B题目名称 学生通讯录管理系统 学生学院_ _专业班级_ _学 号_ _学生姓名_ _指导教师_ _ 年 月 日广东工业大学课程设计任务书题目名称学生通信录管理系统学生学院 专业班级 姓 名 学 号 一、课程设计的内容 编写一个学生通信录管理系统,要求有下列功能: 1建立文件 存储文件使用指定文件名或默认文件名; 可以不保存输入记录,但需要确认是否保存输入记录 如果已有文件,只能在其后追加; 新增记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容;可以将两个文件合并到一个文件中;2文件的存取和显示 可以单独存取文件; 可以随时显示内存中记录的

2、全部内容; 可以直接存取默认文件或指定文件;3删除记录 可以按“姓名”或“电话”方式删除记录并更新内存链表内容; 能给出被删除的信息,输出没有找到的信息; 如果已经是空表,上出时应给出信息并返回主菜单; 如果没有要删除的信息,输出没有找到的信息;删除操作仅限于内存,只有执行记录时,才能覆盖原记录;4查询记录 可以按“姓名”或“电话”或“宿舍”方式查询记录 能给出查询记录的信息;如果查询的信息不存在,输出没有找到的信息;5 整体功能 a可以随时检索、删除、或增加新记录,保存或取消新的记录 b使姓名可由16位字符和数字的混合编码组成 c使电话号码可由18位字符和数字组成d将输出信息加上输出信息信息

3、栏,例如 姓名 电话 性别 年龄 生日 宿舍 李四 1234 男 21 7月1日 东二333 e使用菜单实现功能的正确的选择 f 所有节点信息都是动态生成。6测试程序 应列出测试大纲对程序进行测试; 应保证测试用例测试到程序的各种边缘情况二、课程设计的要求与数据1、只能使用C语言,源程序要有适当的注释,使程序容易阅读。2、要有用户界面。要求至少采用文本菜单界面;鼓励采用图形菜单界面。3、使用文件保存数据。4、鼓励自行增加新功能。5、写课程设计报告(要求正规打印,A4幅面),内容包括:l 课程设计题目、内容、要求。l 总体设计(包含几大功能模块),画出系统功能模块结构图l 详细设计(各功能模块的

4、具体实现,画出相关流程图)l 数据结构设计及用法说明l 程序结构(画流程图) l 各模块(函数)的功能介绍,数据结构设计描述,参数说明等。l 试验结果(包括输入数据和输出结果)l 体会,总结(课程设计完成了哪些功能,有没有什么扩展功能 还有哪些地方需要改进,及通过一周的课程设计有何收获,调试程序的体会等)l 参考文献l 附录:程序清单三、课程设计应完成的工作1完成程序的编制、调试,并能正确运行。2完成课程设计说明书的编写,其内容包括(1)封面(2)任务书(3)正文1)总体设计(包含几大功能模块)。2)详细设计(各功能模块的具体实现算法与流程图)3)各模块(函数)的功能介绍,参数说明等。4)试验

5、结果 5)总结(课程设计完成了哪些功能,还有哪些地方需要改进,及通过一周的课程设计有何收获,调试程序的体会等)(4)参考文献四、课程设计进程安排序号设计各阶段内容地点起止日期1查阅资料,进行课程设计准备工作第2周2输入、显示功能模块设计及调试第2周3删除功能模块设计及调试第2周4查找功能、菜单设计及调试第2周5程序总体调试第2周6编写课程设计说明书第2周五、应收集的资料及主要参考文献1 谭浩强著. C程序设计(第三版). 北京:清华大学出版社,20052 谭浩强著. C程序设计题解与上机指导(第三版). 北京:清华大学出版社,2005发出任务书日期: 年 月 日 指导教师签名:计划完成日期:

6、年 月 日 基层教学单位责任人签章:主管院长签章:正文:一.总体设计 主函数菜单输入功能输出功能删除功能修改功能查找功能1、通讯录的每一条信息包括 姓名 电话 性别 宿舍 2、输入功能:可以一次完成若干条信息的输入。3、显示功能:完成全部通讯录信息的显示。4、查找功能:完成按姓名查找通讯信息,并显示。6、删除功能:完成按姓名删除一条通讯信息。7、修改功能:修改一条通讯录信息。 二.详细设计 1、主函数进入菜单界面。2、菜单输入选择输入1输入2输入3、4、5输入6输入7、8输入9输入函数输出函数查找函数修改函数删除函数退出 3、输入函数定义指针变量temp p将形参head的地址给p输入信息存在

7、temp将temp的信息存回headTemp移向下一个地址返回head地址 4、输出函数YN数据不为空?输出学生信息输出”无记录”P指向下一条记录直到读取空记录输出”查询完成” 5、删除函数 (以查询姓名为例)输出”输入要删除的名字”输入名字将名字赋给nameName=p-name?NYP指向下一位学生删除信息跳出循环 结束执行函数直到查到空记录输出”无此人” 6、修改函数 (以查询名字为例)输出”输入要修改的名字”输入名字将名字赋给nameName=p-name?NYP指向下一位学生修改信息跳出循环 结束执行函数直到查到空记录输出”无此人” 7、查找函数 (以查询名字为例)输出”输入要查找的

8、名字”输入名字将名字赋给nameName=p-name?YN输出信息P指向下一位学生跳出循环 结束执行函数直到查到空记录输出”无此人”三.各模块的功能介绍,参数说明。各模块的功能介绍:函数名详细功能Main主函数,提供欢迎界面Add输入函数,输入新的数据Delete删除函数,按需删除数据Modify修改函数,修改指定条目上的数据Find查找函数,按输入的关键字进行查找需要的数据show输出函数,将内蹲中的数据输出到界面上显示各参数说明参数名说明Choise Filename Name Phone Address fname字符型变量*fp,FILE类型变量struct person struc

9、t address-list结构体数组四.程序代码 #include #include #include #include #define N 3 #define AD struct address_list struct person char name20; /* 姓名*/ char address40; /* 宿舍地址*/ char brithday; /*出生年月*/ int phone15; ; /*联系电话*/ AD char name20; char address40; char brithday; int phone15; AD *next; ; FILE *fp; AD *

10、load(char filename) /* 由文件中的数据生成一个通讯录的链表 */ AD *p,*q,*head; struct person per; head=(AD *)malloc(sizeof(AD); q=head=NULL; if (fp=fopen(filename,rb)=NULL) return head; else while (!feof(fp) if(fread(&per,sizeof(struct person),1,fp)=1) /*读取数据*/ p=(AD *)malloc(sizeof(AD); strcpy(p-name,); strcp

11、y(p-address,per.address); p-brithday=per.brithday; strcpy(p-phone,per.phone); head=p; p-next=q; q=head; fclose(fp); return(head); AD *insert(AD *head) /* 输入信息 */ AD *temp,*p; p=head; temp=(AD *)malloc(sizeof(AD); /*将信息存在temp*/ printf(nt请输入姓名:); scanf(%s,temp-name); printf(nt请输入宿舍地址:); scanf(%s,temp-

12、address); printf(nt请输入出生年月(纯数字):); scanf(%d,&temp-brithday); printf(nt请输入电话号码:); scanf(%s,&temp-phone); printf(nnt添加完成n); head=temp; /*将temp地址给head*/ temp-next=p; /*地址后移*/ return head; void save(AD *head,char filename) /*保存到文件*/ AD *p; struct person per; if (fp=fopen(filename,wb)=NULL) /*检查文件*/ prin

13、tf(文件无法写入); exit(1); else p=head; while(p!=NULL) /*保存数据*/ strcpy(,p-name); strcpy(per.address,p-address); per.brithday=p-brithday; strcpy(per.phone,p-phone); if(fwrite(&per,sizeof(struct person),1,fp)!=1) printf(文件不能写入数据,请检查后重新运行.n);exit(1); p=p-next; fclose(fp); void show(AD *head) /* 显示通讯录

14、内容 */ AD *p; p=head; while(p=NULL)printf(无记录n);break; while(p!=NULL) printf(姓名 电话 生日 宿舍n n); printf( %s ,p-name); printf( %s ,p-phone); printf(%d ,p-brithday); printf(%s n,p-address); p=p-next; while(p=NULL)printf(查询完成nn);break; void find(AD *head) /* 按姓名查找 */ AD *p; char name20; printf(请输入要查找的人的姓名:

15、); scanf(%s,name); p=head; while(p!=NULL) if (strcmp(name,p-name)=0) /*查找姓名*/ printf(姓名 电话 生日 宿舍n); printf( %s ,p-name); printf( %s ,p-phone); printf(%ld ,p-brithday); printf(%s n,p-address); printf(查询完成n); break; else p=p-next; /*找不到就找下一条记录*/ if (p=NULL) printf(ntt查无此人nn); void find1(AD *head) /* 按

16、电话查找 */ AD *p; char phone20; printf(请输入要查找的人的电话:); scanf(%s,phone); p=head; while(p!=NULL) if (strcmp(phone,p-phone)=0) printf(姓名 电话 生日 宿舍n);printf( %s ,p-name); printf( %s ,p-phone); printf(%ld ,p-brithday); printf(%s n,p-address); printf(查询完成n);break; else p=p-next; if (p=NULL) printf(ntt查无此人nn);

17、void find2(AD *head) /* 按宿舍查找 */ AD *p; char adress20; printf(请输入要查找的人的宿舍:); scanf(%s,&adress); p=head; while(p!=NULL) if (strcmp(adress,p-address)=0) printf(姓名 电话 生日 宿舍n);printf( %s ,p-name); printf( %s ,p-phone); printf(%ld ,p-brithday); printf(%s n,p-address); printf(查询完成n); break; else p=p-next;

18、 if (p=NULL) printf(ntt查无此人nn); void modify(AD *head) /* 按姓名修改 */ AD *p; char name20; printf(请输入要查找的人的姓名:); scanf(%s,name); p=head; while(p!=NULL) if (strcmp(name,p-name)=0) printf(nt请输入姓名:); scanf(%s,p-name); printf(nt请输入宿舍地址:); scanf(%s,p-address); printf(nt请输入出生年月(纯数字):); scanf(%d,&p-brithday); p

19、rintf(nt请输入电话号码:); scanf(%s,p-phone); printf(修改完成n); break; else p=p-next; if (p=NULL) printf(ntt查无此人nn); AD *delete2(AD *head) /* 按姓名删除 */ AD *p,*q; char name20; printf(请输入要删除的人的姓名:); scanf(%s,name); p=q=head; while(p!=NULL) if (strcmp(name,p-name)=0) if (head=p) head=p-next; else q-next=p-next; fr

20、ee(p); printf(删除完成n);break; /*删除消息*/ else q=p; p=p-next; if (p=NULL) printf(ntt查无此人nn); return head;AD *delete1(AD *head) /* 按电话删除 */ AD *p,*q; char phone20; printf(请输入要删除的人的电话:); scanf(%s,phone); p=q=head; while(p!=NULL) if (strcmp(phone,p-phone)=0) if (head=p) head=p-next; else q-next=p-next; free

21、(p); printf(删除完成n); break; else q=p; p=p-next; if (p=NULL) printf(ntt查无此人nn); return head; void main() AD *head; char fname20; char choise; printf(请输入通讯录文件名(第一次使用请指定文件名):); scanf(%s,fname); /*输入文件名*/ head=load(fname); while(1) printf(tt 欢迎使用XXX制作的通讯录管理系统n); printf(tt =n); printf(tt 1. 插入一条记录n); prin

22、tf(tt 2. 显示所有记录n); printf(tt 3. 按姓名查找n); printf(tt 4. 按电话号码查找n); printf(tt 5. 按宿舍查找n); printf(tt 6. 按姓名修改n); printf(tt 7. 按姓名删除n); printf(tt 8. 按电话删除n); printf(tt 9. 存盘并关闭n); printf(nnt请选择(19):); getchar(); scanf(%c,&choise); switch(choise) case 1 : head=insert(head);break; case 2 : show(head);break

23、; case 3 : find(head);break; case 4 : find1(head);break; case 5 : find2(head);break; case 6 : modify(head);break; case 7 : head=delete2(head);break; case 8 : head=delete1(head);break; case 9 : save(head,fname) ;printf(tt谢谢使用!再见! n );exit(0); default : printf(输入错误,请重新输入!n); 五.调试结果1.开启程序后会提示输入文件名,这里命名

24、文件为1,屏幕输出结果如下:请输入通讯录文件名(第一次使用请指定文件名):12.之后会进入主菜单. 欢迎使用XXX制作的通讯录管理系统 = 1. 插入一条记录 2. 显示所有记录 3. 按姓名查找 4. 按电话号码查找 5. 按宿舍查找 6. 按姓名修改 7. 按姓名删除 8. 按电话删除 9. 存盘并关闭 请选择(19):3.现在增加一条记录,在主菜单下输入1:请输入姓名:xxx请输入宿舍地址: xxxxxx请输入出生年月(纯数字):xxxxxxxx请输入电话号码:xxxxxxxxxxxx添加完成4.查询刚才录入的数据,在主菜单下输入2:姓名 电话 生日 宿舍Xxx xxxxxxx xxxx

25、xxxxxx xxxxxxxxx查询完成5.现在要查找记录,这里以按姓名查找为例,在主菜单下输入3:请输入要查找的人的姓名: XXX姓名 电话 生日 宿舍Xxx xxxxxxx xxxxxxxxxx xxxxxxxxx查询完成请输入要查找的人的姓名: X查无此人6.现在要修改刚才输入的记录,在主菜单下输入6:请输入要修改的人的姓名: X查无此人请输入要修改的人的姓名: XXX请输入姓名:xxx请输入宿舍地址: xxxxxx请输入出生年月(纯数字):xxxxxxxx请输入电话号码:xxxxxxxxxxxx修改完成.7.现在查询修改过的数据有无错误,在主菜单下输入2:姓名 电话 生日 宿舍Xxx xxxxxxx xxx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论