




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告课程设计名称: C程序设计 系 : 三 系 学 生 姓 名 : 班 级: 12通信(1)班 学 号: 20120306135 成 绩: 指 导 教 师: 开 课 时 间:2012-2013学年二学期目 录第一章 学生通讯录信息管理系统需求分析11.1设计题目及要求11.2设计思路(模块图)1第二章 学生通讯录信息管理系统概要设计2第三章 学生通讯录信息管理系统概要详细设计6第四章 学生通讯录信息管理系统测试15小 结20致谢21参考文献22第一章 学生通讯录信息管理系统需求分析1.1设计题目及要求1.题目:学生通讯录信息管理系统2功能要求:(1)能建立、修改和增删学生通讯录 (2)能够按多种方式进行查询3其他要求:(1)能够利用所学c语言知识实现模块化程序设计(2)能够编译和组件程序,修改程序中的语言类错误,调试程序中的逻辑类错误,使程序功能实现运行。(3)作出总结并写好实验报告。1.2设计思路(模块图)1根据功能要求和知识点编写学生通讯录信息管理系统程序,包括以下模块:(1)主函数和退出程序模块(main):可以菜单显示、按任意键退出程序(2)添加信息模块(add):可以一次完成若干条信息的输入。(3)显示信息模块(display):显示全部学生通讯录信息。(4)查找信息模块(find):按三种方式查找学生通讯录信息,并显示。(5)修改信息模块(modify):按姓名修改通讯录信息。(6)删除信息模块(remove):按姓名删除通讯录信息。(7)保存信息模块(save):保存通讯录信息。学生通讯录信息管理系统2.模块图(图1-2-1):显示学生通讯录信息添加学生通讯录信息查找学生通讯录信息修改学生通讯录信息删除学生通讯录信息保存学生通讯录信息主函数(包括退出程序)图1-2-1第二章 学生通讯录信息管理系统概要设计2.1模块流程图: 1.主函数程序流程图:系统的菜单显示如何运行(图2-1-1.1) 系统如何退出程序(图2-1-1.2)开始输入n1n7输出“输入错误,重选1-7:” Y N执行数字对应功能结束图2-1-1.1开始savedTag=0输出是否保存原来的记录?(Y/N) N输入mm!=n&str0!=N Y输出Press any key to continue N结束程序 Y保存结束图2-1-1.22.添加通讯录信息流程图:系统如何实现添加信息功能(图2-2-1)开始输入numberinumber Y N输入学生通讯录信息返回主菜单结束图2-2-23.显示信息流程图:系统如何实现显示信息功能(图2-2-3)开始numStus=0 N Y输出没有可供显示的记录! 显示信息返回主菜单结束图2-2-34.查找信息流程图:系统如何实现查找信息功能(图2-2-4)开始输入mm!=1&m!=2&m!=3&m!=4 Y N执行数字对应查找方式输出输入错误,请重新选择:输入查找信息numStus=0 Y N输出通讯录中没有此人! 返回在菜单显示查找结果结束图2-2-45.修改信息流程图:系统如何实现修改信息功能(图2-2-5)开始输入姓名numStus=0 N Y修改信息输出通讯录中没有此人! 输出修改成功! 返回主菜单结束图2-2-56.删除信息流程图:系统如何实现删除信息功能(图2-2-6)开始输入姓名numStus=0 N Y删除信息输出通讯录中没有此人! 输出已经成功删除! 返回主菜单结束 图2-2-67.保存信息流程图:系统如何实现保存信息功能(图2-2-7)开始numStus=0 N Y保存信息输出没有记录可存! 结束图2-2-7第三章 学生通讯录信息管理系统概要详细设计3.1 具体实现#include /*标准输入输出函数库*/#include /*标准函数库*/#include /*屏幕操作函数库*/#include /*字符串函数库*/#define INITIAL_SIZE 100 /数组初始大小#define INCR_SIZE 50 /数组每次增加的大小struct addbook_infochar name20; /姓名 char sex4; /性别char age4; /年龄char address20; /地址char phone15; /手机号char qq15; /qq号char email20; /电子信箱;typedef struct addbook_info AddInfo;extern int numStus; /记录的学生数extern AddInfo *records; /记录学生通讯录信息的数组extern char savedTag; /信息是否已保存的标志,0为已保存,1为未保存extern int arraySize; /数组大小 void handle_menu(void);int menu_select(void);void input(); /学生信息输入函数void addRecord(void);void display(void);void queryInfo(void);void modifyRecords(void);void removeRecords(void);void saveRecords(void);void quit(void);void showTable(void);int findRecord(char *target,int targetType,int from);void copyRecord(AddInfo *src,AddInfo *dest);#includeaddress.h/*初始化*/extern int numStus=0; /记录的学生数AddInfo *records=NULL; /记录学生通讯录信息的数组char savedTag=0; /信息是否已保存的标志,1为已保存,0为未保存int arraySize; /数组大小/* 主函数 */int main()/初始化数组records=(AddInfo*)malloc(sizeof(AddInfo)*INITIAL_SIZE); /开辟存储空间if(records=NULL)printf(memory fail!);exit(-1);arraySize=INITIAL_SIZE;printf(n);printf(t n);printf(t* 欢迎使用 * n);printf(t* 学生通讯录管理程序 * n);printf(t* 谢谢! * n);printf(t n);printf(n);handle_menu();/* 菜单处理函数 */void handle_menu(void)for (; ;)switch(menu_select()case 1:input(); /输入信息break;case 2:display(); /显示信息break;case 3:queryInfo(); /查找信息break;case 4:modifyRecords(); /修改信息break;case 5:removeRecords(); /删除信息break;case 6:saveRecords(); /保存信息 break;case 7:quit(); /结束程序break;/* 菜单选择函数menu_select */int menu_select()char s2;int cn=0;printf(n);printf(t*1.添加学生通讯录信息n);printf(t*2.显示学生通讯录信息n);printf(t*3.查找学生通讯录信息n);printf(t*4.修改学生通讯录信息n);printf(t*5.删除学生通讯录信息n);printf(t*6.保存学生通讯录信息n);printf(t*7.结束程序n);printf(nt数字对应功能选择,请选1-7:);for(; ;)gets(s);cn=atoi(s);if(cn7) printf(nt输入错误,重选1-7:);else break;return cn;/* * 结束运行,退出 * 参数 void */void quit(void)char str5;if(savedTag=0)printf(是否保存原来的记录?(Y/N); gets(str); if(str0!=n&str0!=N)saveRecords();free(records);exit(0);#includeaddress.h/*添加学生通讯录信息*/void input()FILE *fp;int i,number; /输入学生人数printf(请输入录入学生通讯录信息人数:);scanf(%d,&number);for(i=0;inumber;i+)printf(n);printf(姓名: ); /输入姓名scanf(%s,);printf(n); printf(性别: ); /输入性别scanf(%s,recordsi.sex);printf(n);printf(年龄: ); /输入年龄scanf(%s,recordsi.age);printf(n);printf(地址: ); /输入地址scanf(%s,recordsi.address);printf(n);printf(手机号: ); /输入手机号scanf(%s,recordsi.phone);printf(n);printf(qq号: ); /输入qq号scanf(%s,recordsi.qq);printf(n);printf(电子信箱: ); /输入电子信箱scanf(%s,recordsi.email);printf(n);numStus+; printf(输入结束!n); fp=fopen(address,w); for(i=0;inumber;i+) fwrite(&recordsi,sizeof(struct addbook_info),1,fp); /从地址中写出addbook_info文件内容/ fclose(fp); /关闭文件 printf(请按任意键返回n); return;#includeaddress.h/*输出表头*/void showTable(void)printf(姓名t性别t年龄t地址t手机号tqq号t电子信箱t);/*显示所有学生通讯录信息函数*/ void display(void)int i;if(numStus=0)printf(没有可供显示的记录! );return;showTable();for(i=0;inumStus;i+)/打印学生信息 printf(n%st%st%st%st%st%st%sn,,recordsi.sex,recordsi.age,recordsi.address,recordsi.phone,recordsi.qq,recordsi.email);/打印满20个记录后停下来if(i%19=0&i!=0)printf(输入任一个字符后继续.n);getch();printf(nn);showTable();#includeaddress.h/*按学生姓名或手机号或地址查询学生通讯录信息*/int findRecord(char *target,int targetType,int from)int i;for(i=from;inumStus;i+)if(targetType=0&strcmp(target,)=0)|(targetType=1&strcmp(target,recordsi.phone)=0)return i;return -1;void queryInfo(void)int m;printf(t请选择查询方式:n); printf(t*1.姓名n); printf(t*2.手机号n); printf(t*3.地址n); printf(t*4.返回n); printf(t请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(输入错误,请重新选择:);scanf(%d,&m);if(m=1)char s20; int i=0; printf(t请输入想查询的姓名:); scanf(t%s,s); while(strcmp(,s)!=0&i numStus) i+; if(numStus =0) printf(t通讯录中没有此人!n); return; showTable();printf(tt%st%st%st%st%st%st%st,,recordsi.sex,recordsi.age,recordsi.address,recordsi.phone,recordsi.qq,recordsi.email); ;if(m=2)char s20; int i=0; printf(t请输入想查询的手机号:); scanf(t%s,s); while(strcmp(recordsi.phone,s)!=0&i numStus) i+; if (numStus =0) printf(t通讯录中没有此人!n); return; showTable();printf(tt%st%st%st%st%st%st%st,,recordsi.sex,recordsi.age,recordsi.address,recordsi.phone,recordsi.qq,recordsi.email); ;if(m=3)char s20; int i=0; printf(t请输入想查询的地址:); scanf(t%s,s); while(strcmp(recordsi.address,s)!=0&i numStus) i+; if(numStus =0) printf(t通讯录中没有此人!n); return; showTable();printf(tt%st%st%st%st%st%st%st,,recordsi.sex,recordsi.age,recordsi.address,recordsi.phone,recordsi.qq,recordsi.email); ;#includeaddress.h/*修改学生通讯录信息*/void modifyRecords(void)char s20; int i=0; printf(t请输入想修改的记录中的名字:); scanf(%s,s); while(strcmp(,s)!=0&inumStus) i+; if(numStus=0) printf(t通讯录中没有此人!n); return; printf(t姓名:); scanf(t%s,); printf(t性别:); scanf(t%s,recordsi.sex);printf(t年龄:); scanf(t%s,recordsi.age);printf(t住址:); scanf(t%s,recordsi.address);printf(t手机号:); scanf(t%s,recordsi.phone);printf(tqq号:); scanf(t%s,recordsi.qq); printf(t电子信箱:);scanf(t%s,recordsi.email);printf(t修改成功!);#includeaddress.h/*删除学生通讯录信息*/void removeRecords(void) char s20; int i=0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(,s)!=0&inumStus) i+; if(numStus=0) printf(t通讯录中没有此人!n); return; for(j=i;j100-1;j+) strcpy(,recordsj+1.name);strcpy(recordsj.sex,recordsj+1.sex);strcpy(recordsj.age,recordsj+1.age);strcpy(recordsj.address,recordsj+1.address);strcpy(recordsj.phone,recordsj+1.phone);strcpy(recordsj.qq,recordsj+1.qq);strcpy(recordsj.email,recordsj+1.email); numStus-;printf(ttt已经成功删除!n); return; #includeaddress.h/*保存学生通讯录信息*/void saveRecords( )FILE * fp;char fname30;if(numStus=0)printf(没有记录可存! ); printf(请输入要存入的文件名(直接回车选择文件 addbook_info): ); gets(fname); if(strlen(fname) = 0) strcpy(fname,addbook_info); if(fp = fopen(fname,wb) = NULL) printf(不能存入文件!n); printf(n存文件.n); fwrite(records,sizeof(AddInfo) * numStus,1,fp); fclose(fp); printf(%d条记录已经存入文件,请继续操作。n,numStus); savedTag = 1; /更新是否已保存的标记return ; 第四章 学生通讯录信息管理系统测试4.1 程序运行截图1.初始界面,如图4-1-1图4-1-12.添加学生通讯录信息界面,如图4-1-2图4-1-23.显示学生通讯录信息界面,如图4-1-3图4-1-34.查找学生通讯录信息界面(1)按姓名查找界面,如图4-1-4.1图4-1-4.1(2)按手机号查找界面,如图4-1-4.2图4-1-4.2(3)按地址查找界面,如图4-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 休闲健身中心建筑设计与空间规划方案
- 2024年注册公用设备工程师模拟题库及参考答案详解(B卷)
- 2024-2025学年度自考专业(国贸)复习提分资料及答案详解(易错题)
- 支持低空经济起降基础设施建设的策略及实施路径
- 2024-2025学年度自考专业(护理)预测复习及参考答案详解(达标题)
- 2024-2025学年四川交通职业技术学院单招《职业适应性测试》试题预测试卷(综合卷)附答案详解
- 康复医学治疗技术副高级职称模拟题库及参考答案详解(培优)
- 2025年粮油食品检验人员每日一练试卷【突破训练】附答案详解
- 2024年自考专业(会计)高频难、易错点题含完整答案详解(各地真题)
- 2025年银行岗位模拟试题(预热题)附答案详解
- GB/T 27021.3-2021合格评定管理体系审核认证机构要求第3部分:质量管理体系审核与认证能力要求
- 3000储罐预制安装施工方案
- 食品工程原理(课堂)课件
- 五年级上册数学课件-《练习一》北师大版 (共10张PPT)
- 移动通信5G关键技术分析课件
- 理想与前途教育主题班会
- 无人机操作与使用教案
- 自悯量表中文版
- 砌体工程实测实量记录表
- 生命科学上游产业专题研究:下一个10年的高景气大赛道
- 内科学课件:原发性支气管肺癌
评论
0/150
提交评论