xxxxxxx高级语言课程设计实验报告系别:xxxxxxxx专业班级:xxxxxxxxx学号:xxxxxxxxxxx班内序号:xx姓名:xxxx指导老师:xxxxxxxxx实验课题:学生通讯信息管理系统实验时间:2008.6.10~2008.6.202008年6月17日一、实验目的1.熟悉C语言的编译,链接和运行过程;2.掌握C语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值,掌握不同的类型数据之间的赋值规律,赋值使用方法;3.掌握if语句及switch语句的运用方法及嵌套应用方法;4.掌握实现循环结构的三种语句while、do-while.、for的使用;5.掌握C语言函数的定义,声名及调用方法和调用过程;6.掌握C语言主函数和被调用函数之间的参数传递方式,学会函数的嵌套调用和递归调用的过程和方法;7.掌握数组的定义,赋值引用及输入输出方法,并正确用字符数组储存字符串,学会字符串的使用;8.掌握结构体类型变量的定义和使用;9.掌握指针变量和指向指针的指针变量的定义及使用,进一步了解指向结构体数组的指针变量的概念及使用方法;10.掌握链表的概念及链表的操作,并理解链表与数组的不同点及优缺点;11.掌握文件和文件指针的定义及文件建立,打开,关闭,读写等的操作方法12.能够采用模块化思想调试程序;二.实验内容1.编写程序并进行调试运行;2.输入学生通讯信息并保存于文件,每个学生包含信息如:序号,姓名,省份,电话,生日,邮编,大学,班级,QQ号信息;3.对已存入的学生信息进行更新操作,包括添加一个学生信息、删除某个学生信息和修改某个学生信息;4.通过输入姓名,学号的方式查询学生信息;5.可以通过省份,生日来统计通讯信息;6.最后输出学生信息,供需要时打印。一、需求分析1.该程序可用于对学生的通讯方式基本信息的存储、更新、查询、输出等操作,以实现对学生通讯录信息的管理,便于同学之间的联系交往;2.其中更新功能包括:添加信息,删除信息,修改信息,可根据需要添加一个或多个学生信息,也可针对个别学生信息进行适当的删除或修改,以便随时更新学生通讯信息。3.程序中设计的查询功能可根据需要从若干数据中查询某个学生信息,并且可根据两种不同的方法查询:按姓名查询和按电话查询,以满足不同的需要;4.可以通过输出的方式查看整个通讯录;5.可以通过排序的方式查看同学生日的先后。四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要实现许多功能,因此遵循结构化程序设计思想来进行本系统的设计:—,自顶向下逐步细化,将系统设计任务分解出许多子功能模块来计;结构图如下:2.模块功能说明对各个模块进行功能的描述(1).输入模块:录入需要管理的通讯信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。(2).添加模块:可添加一个或多个学生的通讯信息,并将所添加的信息保存,方便查找。(3).删除模块:可对失去联系的学生通讯信息做删除处理。学生通讯录信息管理系统统计模块查询模块更新模块输出模块输入模块排序模块添加模块删除模块修改模块按姓名按电话退出模块按省份按生日退出模块保存通讯信息退出系统退出模块选择模块(4).修改模块:可对通讯信息发生改变的学生信息进行修改。(5).查询模块:可对已建立的学生通讯信息进行查询,并且可根据需要选择按姓名查询或按电话查询。(6).保存模块:用于对通讯信息进行保存。(7).输出模块:将所有学生通讯信息或想要查询的学生信息显示于屏幕,用于打印学生通讯信息或查找某些学生通讯信息。(8).退出系统:选择该项,自动退出该系统。五、详细设计及运行结果流程图,函数之间相互调用的图示,程序设计及编码,运行结果。统计模块查询模块更新模块输出模块输入模块退出模块添加模块删除模块修改模块按姓名按电话退出模块按省份按生日退出模块排序模块判断i值输入变量退出模块输入变量判断i值输入变量判断i值保存模块结束开始输入变量i判断i的值输入模块:输入模块:m==ys[i].num!=0排序模块:更新模块:否是i=1i=2i=3是否是否开始i=0isum输入通讯信息i++结束开始i=0isum输入通讯信息i++sum=i结束开始i=0j=i+1i的年龄大于j的年龄交换i与j的信息j=j+1i=i+1jsumisum-1输出信息结束判断i的值删除模块添加模块修改模块退出系统返回主界面结束开始输入i的值查询模块:统计模块:六.调试情况及运行结果1.对自己设计进行评价,指出合理和不足之处,提出改进的方案。此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,运行的结果也没有预想中的好,数据的输出格式不太规范,而且各模块也出现了一些小问题,在同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可着毕竟是第一次独立完成这样的大程序,结果还不是太理想。由于时间很短,在选题报告中设想到的好多功能都没有实现。已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:再录入数据时,没有设计数据输入出错的提示。2.在设计过程中的感受。本次C语言的实习课让我对C语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏返回主界面结束姓名查询电话查询生日统计返回主界面结束判断i值退出系统开始输入i判断i值退出系统省份统计开始输入i的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。本次实习中遇到了很多以前没有遇到过的问题,也曾想过要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。并且,通过一种题材两中方式的学习,我掌握了更多的知识,也认识到对比学习的重要性。七.参考文献参考书名编者姓名出版社出版时间《C语言程序设计》王曙燕曹锰科学出版社2005年2月八。附录:1.链表方式:#includestdio.h#includestring.h#defineNsizeof(structstud)#includemath.h#includeconio.h#includestdlib.h/*日期结构体类型*/structdate{inty;intm;intd;}bir;/*学生信息结构体类型*/structstud{intnum;/*序号*/charname[20];/*姓名*/chartel[40];/*电话*/charaddr[40];/*省份*/charyb[20];/*邮编*/chardaxue[50];/*大学*/structdatebir;/*生日*/structstud*next;};chara;参考书名编者姓名出版社出版时间《C语言程序设计》王曙燕曹锰科学出版社2005年2月《C语言程序设计》谭浩强清华大学出版社1999年12月structstud*h;FILE*fp;/*建立链表*/structstud*creat(){inti,k;structstud*p1,*p2,*head;printf(\n请输入学生数:\n);scanf(%d,&k);head=NULL;head=p1=p2=(structstud*)malloc(N);/*head,p1,p2指向首结点*/for(i=0;ik;i++){p1=(structstud*)malloc(N);/*p1指向新申请的结点*/printf(\n请输入序号:);scanf(%d,&p1-num);printf(\n请输入姓名:);scanf(%s,p1-name);printf(\n请输入电话:);scanf(%s,p1-tel);printf(\n请输入籍贯:);scanf(%s,p1-addr);printf(\n请输入邮编:);scanf(%s,p1-yb);printf(\n请输入大学:);scanf(%s,p1-daxue);printf(\n请输入出生日期:(年-月-日));scanf(%d-%d-%d,&p1-bir.y,&p1-bir.m,&p1-bir.d);p2-next=p1;/*将新结点链接到表尾*/p2=p1;/*p2指向新的表尾*/}p2-next=NULL;head=head-next;/*头指针后移*/save_message(head);/*立即保存*/returnhead;}/*输入模块*/input_message(){clrscr();printf(\n\n**********输入学生信息**********\n);printf(-----------------------------------\n);h=creat();bioskey(0);printf(输入完毕,按任意键返回主菜单!);bioskey(0);}/*输出模块*/output_message(structstud*p){clrscr();if(p==NULL)printf(暂无信息!请回主菜单录入信息!\n);else{printf(\n\n=======================通讯录信息表======================\n\n);printf(姓名=省份====电话=====生日(年-月-日)=邮编======大学\n);while(p!=NULL){printf(-----------------------------------------------------------------------\n);printf(%s%s%s%d-%d-%d%s%s\n,p-name,p-addr,p-tel,p-bir.y,p-bir.m,p-bir.d,p-yb,p-daxue);printf(-----------------------------------------------------------------------\n);printf(\n);p=p-next;}}printf(\n);printf(按任意键返回主菜单!\n\n);bioskey(0);}/*保存学生信息*/save_message(structstud*h){FILE*fp;structstud*f;f=h;/*保证指针位置*/if((fp=fopen(zhuyan.txt,wb))==NULL){printf(不能打开文件!\n);return;}while(h!=NULL){if(fwrite(h,sizeof(structstud),1,fp)!=1)/*向文件写入数据*/{printf(文件写入错误!);return;}h=h-next;}h=f;/*保证指针位置*/printf(已存盘,按任意键回上层菜单:\n);getch();fclose(fp);return;}/*读取信息*/read_message(){FILE*fp;if((fp=fopen(zhuyan.txt,rb))==NULL){printf(\n\n****暂时还没有该生信息,请按任意键返回上一级菜单.\n);return;}do{if(fread(h,sizeof(structstud),1,fp)!=1){if(feof(fp))printf(已到文件末尾.\n);/*已到文件末尾.*/elseprintf(文件读取错误!\n);/*文件读取错误.*/return;}h=h-next;}while(h!=NULL);fclose(fp);getch();bioskey(0);}/*添加学生信息*/add_message(structstud*w){structstud*p,*q;p=(structstud*)malloc(N);/*p指向新申请的结点*/clrscr(