您好,欢迎访问三七文档
课程设计课程名称C语言程序设计课程设计B题目名称学生通讯录管理系统学生学院_________________专业班级___________学号_____________学生姓名_________________指导教师___________________年月日广东工业大学课程设计任务书题目名称学生通信录管理系统学生学院专业班级姓名学号一、课程设计的内容编写一个学生通信录管理系统,要求有下列功能:1建立文件存储文件使用指定文件名或默认文件名;可以不保存输入记录,但需要确认是否保存输入记录如果已有文件,只能在其后追加;新增记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容;可以将两个文件合并到一个文件中;2文件的存取和显示可以单独存取文件;可以随时显示内存中记录的全部内容;可以直接存取默认文件或指定文件;3删除记录可以按“姓名”或“电话”方式删除记录并更新内存链表内容;能给出被删除的信息,输出没有找到的信息;如果已经是空表,上出时应给出信息并返回主菜单;如果没有要删除的信息,输出没有找到的信息;删除操作仅限于内存,只有执行记录时,才能覆盖原记录;4查询记录可以按“姓名”或“电话”或“宿舍”方式查询记录能给出查询记录的信息;如果查询的信息不存在,输出没有找到的信息;5整体功能a可以随时检索、删除、或增加新记录,保存或取消新的记录b使姓名可由16位字符和数字的混合编码组成c使电话号码可由18位字符和数字组成d将输出信息加上输出信息信息栏,例如姓名电话性别年龄生日宿舍李四1234男217月1日东二333e使用菜单实现功能的正确的选择f所有节点信息都是动态生成。6测试程序应列出测试大纲对程序进行测试;应保证测试用例测试到程序的各种边缘情况二、课程设计的要求与数据1、只能使用C语言,源程序要有适当的注释,使程序容易阅读。2、要有用户界面。要求至少采用文本菜单界面;鼓励采用图形菜单界面。3、使用文件保存数据。4、鼓励自行增加新功能。5、写课程设计报告(要求正规打印,A4幅面),内容包括:课程设计题目、内容、要求。总体设计(包含几大功能模块),画出系统功能模块结构图详细设计(各功能模块的具体实现,画出相关流程图)数据结构设计及用法说明程序结构(画流程图)各模块(函数)的功能介绍,数据结构设计描述,参数说明等。试验结果(包括输入数据和输出结果)体会,总结(课程设计完成了哪些功能,有没有什么扩展功能还有哪些地方需要改进,及通过一周的课程设计有何收获,调试程序的体会等)参考文献附录:程序清单三、课程设计应完成的工作1.完成程序的编制、调试,并能正确运行。2.完成课程设计说明书的编写,其内容包括(1)封面(2)任务书(3)正文1)总体设计(包含几大功能模块)。2)详细设计(各功能模块的具体实现算法与流程图)3)各模块(函数)的功能介绍,参数说明等。4)试验结果5)总结(课程设计完成了哪些功能,还有哪些地方需要改进,及通过一周的课程设计有何收获,调试程序的体会等)(4)参考文献四、课程设计进程安排序号设计各阶段内容地点起止日期1查阅资料,进行课程设计准备工作第2周2输入、显示功能模块设计及调试第2周3删除功能模块设计及调试第2周4查找功能、菜单设计及调试第2周5程序总体调试第2周6编写课程设计说明书第2周五、应收集的资料及主要参考文献[1]谭浩强著.C程序设计(第三版).北京:清华大学出版社,2005[2]谭浩强著.C程序设计题解与上机指导(第三版).北京:清华大学出版社,2005发出任务书日期:年月日指导教师签名:计划完成日期:年月日基层教学单位责任人签章:主管院长签章:正文:一.总体设计1、通讯录的每一条信息包括姓名电话性别宿舍2、输入功能:可以一次完成若干条信息的输入。3、显示功能:完成全部通讯录信息的显示。4、查找功能:完成按姓名查找通讯信息,并显示。6、删除功能:完成按姓名删除一条通讯信息。7、修改功能:修改一条通讯录信息。二.详细设计1、主函数进入菜单界面。2、菜单输入选择输入’1’输入‘2’输入‘3、4、5’输入‘6’输入‘7、8’输入‘9’输入函数输出函数查找函数修改函数删除函数退出主函数菜单输入功能输出功能删除功能修改功能查找功能3、输入函数4、输出函数5、删除函数(以查询姓名为例)数据不为空?NY输出”无记录”输出学生信息输出”输入要删除的名字”输入名字Name=p-name?NY将名字赋给nameP指向下一位学生直到查到空记录删除信息跳出循环结束执行函数输出”无此人”定义指针变量tempp将形参head的地址给p输入信息存在temp将temp的信息存回headTemp移向下一个地址返回head地址P指向下一条记录直到读取空记录输出”查询完成”6、修改函数(以查询名字为例)7、查找函数(以查询名字为例)输出”输入要修改的名字”输入名字Name=p-name?NY将名字赋给nameP指向下一位学生直到查到空记录修改信息跳出循环结束执行函数输出”无此人”输出”输入要查找的名字”输入名字Name=p-name?NY将名字赋给nameP指向下一位学生直到查到空记录输出信息跳出循环结束执行函数输出”无此人”三.各模块的功能介绍,参数说明。各模块的功能介绍:函数名详细功能Main主函数,提供欢迎界面Add输入函数,输入新的数据Delete删除函数,按需删除数据Modify修改函数,修改指定条目上的数据Find查找函数,按输入的关键字进行查找需要的数据show输出函数,将内蹲中的数据输出到界面上显示各参数说明参数名说明ChoiseFilename[]NamePhoneAddressfname字符型变量*fp,FILE类型变量structpersonstructaddress-list结构体数组四.程序代码#includestdio.h#includestdlib.h#includestring.h#includectype.h#defineN3#defineADstructaddress_liststructperson{charname[20];/*姓名*/charaddress[40];/*宿舍地址*/charbrithday;/*出生年月*/intphone[15];};/*联系电话*/AD{charname[20];charaddress[40];charbrithday;intphone[15];AD*next;};FILE*fp;AD*load(charfilename[])/*由文件中的数据生成一个通讯录的链表*/{AD*p,*q,*head;structpersonper;head=(AD*)malloc(sizeof(AD));q=head=NULL;if((fp=fopen(filename,rb))==NULL)returnhead;else{while(!feof(fp)){if(fread(&per,sizeof(structperson),1,fp)==1)/*读取数据*/{p=(AD*)malloc(sizeof(AD));strcpy(p-name,per.name);strcpy(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(\n\t请输入姓名:);scanf(%s,temp-name);printf(\n\t请输入宿舍地址:);scanf(%s,temp-address);printf(\n\t请输入出生年月(纯数字):);scanf(%d,&temp-brithday);printf(\n\t请输入电话号码:);scanf(%s,&temp-phone);printf(\n\n\t添加完成\n);head=temp;/*将temp地址给head*/temp-next=p;/*地址后移*/returnhead;}voidsave(AD*head,charfilename[])/*保存到文件*/{AD*p;structpersonper;if((fp=fopen(filename,wb))==NULL)/*检查文件*/{printf(文件无法写入);exit(1);}else{p=head;while(p!=NULL)/*保存数据*/{strcpy(per.name,p-name);strcpy(per.address,p-address);per.brithday=p-brithday;strcpy(per.phone,p-phone);if(fwrite(&per,sizeof(structperson),1,fp)!=1){printf(文件不能写入数据,请检查后重新运行.\n);exit(1);}p=p-next;}fclose(fp);}}voidshow(AD*head)/*显示通讯录内容*/{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(查询完成\n\n);break;}}voidfind(AD*head)/*按姓名查找*/{AD*p;charname[20];printf(请输入要查找的人的姓名:);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;}elsep=p-next;}/*找不到就找下一条记录*/if(p==NULL)printf(\n\t\t查无此人\n\n);}voidfind1(AD*head)/*按电话查找*/{AD*p;charphone[20];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;}elsep=p-next;}if(p==NULL)printf(\n\t\t查无此人\n\n);}voidfind2(AD*head)/*按宿舍查找*/{AD*p;charadress[20];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;}e
本文标题:C语言课程设计
链接地址:https://www.777doc.com/doc-3180425 .html