1、重庆科技学院课程设计报告 院(系):_电子信息工程学院_ 专业班级: 学生姓名: 学 号: 设计地点(单位):_ _ 设计题目:_ _完成日期: 2010年 3月 5日 指导教师评语: _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _ 重庆科技学院课程设计报告重庆科技学院课程设计任务书设计题目:个人通讯录管理系统学生姓名 课程名称C语言程序设计课程设计专业班级计算机科学与技术2009地 点起止时间 设计内容及要求建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。系统所涉及的信息以二进制文件的形式保存在磁盘上。进一步掌握利用C语言进行程序
2、设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图表示算法。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计参数(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求3月1日 - 3月1日明确设计任务,学习相关知识;3月2日 - 3月2日查阅相关资料,进行基础练习;3月3日 - 3月4日根据题目要求,进行设计和实现;3月5日 - 3月5日撰写课程设计报告,进行答辩。参考资料1C程序设计经典教程,美Deitel,H.M.
3、,美Deitel,P.J.著,清华大学出版社,20062 Windows程序设计,美 Charles Petzold 著,北京大学出版社,2004其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任: 指导教师: 2010年 2 月27 日摘要 本次课程设计的题目是个人通讯录管理系统,要求在磁盘中以二进制文件的形式存储人员的姓名、年龄、性别等基本信息,并运用程序将磁盘文件中的个人基本信息进行查询、修改和删除等。我编写的程序从整体上看可分为五大部分,分
4、别是“添加”、“查询”、“修改”、“删除”和“全部显示”。其中添加信息是将人员的基本信息输入并以二进制文件的形式保存在文件中,当添加完所要输入的个人通讯信息后继续选择其它功能;若要对文件中存储的个人通讯信息进行查询、修改和删除等时,则可按照程序提示分别进行。关键词:通讯信息、添加、查询、修改、删除、全部显示。目录1 设计内容与要求11.1 设计内容11.2 设计要求12 概要设计22.1 信息的存储22.2个人通讯信息的设计22.3主函数设计22.4信息添加的设计22.5信息查询的设计32.6信息删除的设计32.7信息修改的设计32.8 信息显示的设计33 详细设计43.1 主函数43.2信息
5、输入63.3信息查询73.4信息删除73.4信息修改83.4信息显示94 调试分析104.1 问题解决10测试结果11.1文件输入11输入个人通讯信息,运行结果如下:1111.查询结果12. 修改结果135.4 删除结果14.5 全部显示结果14总结15参考文献16致谢17附录18291 设计内容与要求1.1 设计内容 建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。系统所涉及的信息以二进制文件的形式保存在磁盘上。1.2 设计要求进一步掌握利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法
6、;学会调试一个较长程序的基本方法;学会利用流程图表示算法。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告2 概要设计2.1 信息的存储运行编写好的程序,通过提示,输入人员的姓名、性别、年龄和电话等信息,再根据提示反复输入,并以二进制文件形式保存。 2.2个人通讯信息的设计需定义一个结构体类型,用来表示学生的各种信息,如下。typedef struct Man char Name12; char Sex4; char Old4; char Mobil12;char Tel12; char Address16; char QQ12; char Email16; c
7、har Sort12;man;2.3主函数设计其功能实现从屏幕输出6个选择: 1添加信息2. 查询信息3.删除信息4.修改信息5.显示信息6.退出程序,从中选择任一一个来进行个人通讯信息的管理。2.4信息添加的设计 此模块通过void TianJia( );函数实现。从键盘输入个人通讯信息,以二进制文件将这些信息写入文本。先建立一个文件指针(FILE *fp),打开文件,输入信息,写入文件,关闭文件。2.5信息查询的设计此模块通过void ChaXun()。从键盘输入要查询的人员姓名,程序将从文件中读出先前出入的个人通讯信息,再从屏幕上输出您要查找的信息。2.6信息删除的设计此模块通过void
8、 ShanChu( )函数实现。从屏幕上输出所要删除的人员姓名,根据操作提示,然后删除信息。2.7信息修改的设计此模块通过void XiuGai( )函数实现。从屏幕上输出:请输入您要修改的人员姓名,然后显示要修改的人员信息,并根据提示继续输入需修改后的信息,这些信息将以二进制形式写入文本。这需要打开文件读出原信息,再将修改后的所有通讯信息一起写入文件并保存。 2.8 信息显示的设计此模块通过void XianShi( )函数实现,只需选择显示信息菜单即可显示全部通讯录信息。3 详细设计3.1 主函数(1)函数说明先从屏幕上显示6个选项,以供选择。第一个选项调用了TianJia函数、第二个调用
9、了ChaXun函数,第三个选项调用了ShaChu函数,第四个调用了XiuGai函数,第五个选项调用XianShi函数,从而实现学生信息的添加、查询、删除、修改、 显示 等功能;最后一个选项实现退出的功能。 (2)流程图start输入cCase1调用TianJia函数breakbreak调用ChaXun函数Case2Case3Case4Case5调用ShanChu函数调用XiuGai函数break调用XianShif函数breakbreakendCase6输入有误,请重新输入!breakdefault谢谢使用!输入y3.2信息输入(1) 函数说明 此函数用于输入个人通讯信息。先定义一个文件指针F
10、ILE(*fp),然后用fopen()函数打开文件,从键盘输入数据,用fwrite函数将信息写入到文件中,最后用fclose()函数关闭文件。屏幕上会显示“请输入y继续其他功能”您可以根据您的需要进行选择然后进行下面的操作。(2)流程图start输出提示输入人员通讯信息返回主函数end3.3信息查询(1) 函数说明此函数用于查找学生信息,用fopen()函数打开文本文件,用fread函数从文件中将原有信息读出,屏幕上会显示“请输入您要查找的人员姓名”,从键盘输入,屏幕上会显示您要查找的学生信息,最后用fclose()函数关闭文件。(2)流程图start输入姓名显示信息end3.4信息删除(1)
11、 函数说明此函数用于删除个人通讯信息,用fopen()函数打开文本文件,读出原有信息并输出到屏幕,从屏幕上输出提示“请输入要删除的人员姓名”,输入后显示该信息即被删除。最后用fclose()函数关闭文件。 (2)流程图start输入姓名显示并删除信息end3.4信息修改(1)函数说明此函数用于修改信息。用fopen()函数打开文本文件,读出原有信息并输出到屏幕,此时屏幕上会显示请输入您要修改的人员姓名:,从键盘输入姓名,屏幕上将会显示要修改的信息 用fwrite()函数将现在的信息写入到磁盘中,最后用fclose()函数关闭文件。(2) 流程图start输入姓名显示信息输入修改后信息end3.
12、4信息显示(1)函数说明: 此函数用来打印学生全部信息,用fopen( )函数打开文本文件,读出原所有信息并输出到屏幕,最后用fclose()函数关闭文件。(2) 流程图:start显示所有信息end4 调试分析4.1 问题解决首先,由于所要将输入通讯信息要以二进制文件的形式进行存储,所以在添加信息和查询信息就遇到了麻烦,读取信息的时候显示的全部是乱码,一个是因为在输入和读取“年龄”、“电话”等信息的时候是以%d的形式,二是因为没有运用到”rb+”对信息进行存储和输出。在同学的帮助下对程序进行了反复的修改,最终达到了以二进制存储和读取的目的。其次就是在对存储的信息进行删除的时候是以空白来覆盖的
13、,而在全部显示存储的信息时用来覆盖的空白信息也被读取,最后是在仔细查询课本的时候,按照书上的方法进行了修改。最后就是在全部显示文件中存储的信息时,而最后一个信息会被读取两次,最终我运用的计数器对文件中存储的信息量统计,而对读取信息的次数进行控制,以达到全部显示的目的。测试结果.1文件输入输入个人通讯信息,运行结果如下:.查询结果查询个人通讯信息,运行结果如下:. 修改结果修改个人通讯信息,运行结果如下:5.4 删除结果删除个人通讯信息,运行结果如下:.5 全部显示结果删除个人通讯信息,运行结果如下:总结本次课程设计的要求是建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找
14、、添加、修改及删除。虽然我对该实验的内容及要求都有所了解,在对程序的大体规划上还很清楚,但是在编写程序时思维却很混乱,由于在对个人通讯信息的输入、查询、修改和删除中要求逻辑思维严密谨慎,所以在本次程序的编写中不能独立完成,而是在同学的帮助下,对每一个步骤的深入思考才得出了结果。通过这次的专题实验让我意识到,自己在该门学科中还有很多不懂的地方,其主要原因是上机操作太少,对一些细节考虑还不够全面,今后我会努力学习本课程,要求自己能熟练掌握程序的编写。参考文献1C程序设计经典教程,美Deitel,H.M.,美Deitel,P.J.著,清华大学出版社,20062 Windows程序设计,美 Charl
15、es Petzold 著,北京大学出版社,2004致谢我要感谢老师对我们的认真负责的教导,在我们与到问题不理解时能构给我们耐心的讲解,并且在学习该专业课是对我们的要求,迫使我们在平日里抓紧时间学习。还要感谢学校为我们提供了良好的学习环境和设备,让我们能够更好的学习计算机方面的知识。以及在平日的学习中同学们对我的帮助。附录#include#include#includetypedef struct Man char Name12; char Sex4;char Old4;char Mobil12;char Tel12;char Address16;char QQ12;char Email16;c
16、har Sort12;man; void TianJia( FILE *fp);void XiuGai( FILE *fp);void ShanChu( FILE *fp);void ChaXun( FILE *fp);void XianShi( FILE *fp);int jishu(char *p); int main()system(color 51);char b,c; FILE *fp;do printf(ttn); printf(tt 通 讯 录 n);printf(tt 1、添加信息 2、查询信息 n); printf(tt n);printf(tt 3、删除信息 4、修改信息
17、n);printf(tt n);printf(tt 5、显示信息 6、退出程序 n);printf(ttn); printf(请选择您想要执行操作的代码: );scanf(%d,&c);printf(n); switch ( c )case 1: fp = fopen(d:tongxunlu.txt,ab+);TianJia( fp);break;case 2: fp = fopen(d:tongxunlu.txt,rb);ChaXun( fp);break;case 3: fp = fopen(d:tongxunlu.txt,rb+); ShanChu( fp); break;case 4:
18、fp = fopen(d:tongxunlu.txt,rb+);XiuGai( fp);break;case 5:fp = fopen(d:tongxunlu.txt,rb);XianShi( fp);break;case 6:printf(谢谢使用!n);exit(0);default:printf(输入有误,请重新输入!n); break; fflush( stdin); fclose(fp); printf(请输入y继续其他功能n); scanf(%c,&b); if(b = y) system(cls);while(c != 6); return 0;void TianJia( FIL
19、E *fp)man a1;printf(请输入您要添加的人员信息n);rewind( fp); printf(n); printf(姓名:); scanf(%s,&a1.Name); fflush(stdin); printf(n); printf(性别:); scanf(%s,&a1.Sex); fflush(stdin); printf(n); printf(年龄:); scanf(%s,&a1.Old); fflush(stdin); printf(n); printf(移动电话:); scanf(%s,&a1.Mobil); fflush(stdin); printf(n); prin
20、tf(固定电话:); scanf(%s,&a1.Tel); fflush(stdin); printf(n); printf(住址:); scanf(%s,&a1.Address); fflush(stdin); printf(n); printf(QQ:); scanf(%s,&a1.QQ); fflush(stdin); printf(n); printf(Email:); scanf(%s,a1.Email); fflush(stdin); printf(n); printf(类别:); scanf(%s,a1.Sort); fflush(stdin); fp = fopen(d:ton
21、gxunlu.txt,a+); fwrite(&a1,sizeof( a1),1,fp); fclose( fp);void ChaXun( FILE *fp) man a2; char name112; printf(请输入你要查找的人员姓名:); scanf(%s,name1); fflush( stdin); rewind(fp); while( fread( &a2, sizeof( a2), 1, fp) != NULL) if( strcmp( name1, a2.Name) = 0) printf(您所查询的人员信息如下:n); printf(姓名:%snn性别:%snn年龄:%
22、snn住址:%snn移动电话:%snn固定电话:%snnQQ:%snnEmail:%snn类别:%sn, a2.Name, a2.Sex, a2.Old, a2.Address, a2.Mobil,a2.Tel, a2.QQ, a2.Email, a2.Sort); else printf(您要查询的人员资料不存在!n); fclose( fp); return;void XiuGai( FILE *fp)man a3;man one;int count1 = 0;char name212; printf(请输入您要修改的人员姓名:); scanf(%s, &name2); fflush( s
23、tdin); while( !feof( fp) fread( &a3,sizeof( a3), 1, fp); count1+;if( strcmp( name2,a3.Name) =0) printf(姓名:%sn性别:%sn年龄:%sn住址:%sn移动电话:%sn固定电话:%snQQ:%snEmail:%sn类别:%sn, a3.Name, a3.Sex, a3.Old, a3.Address, a3.Mobil, a3.Tel, a3.QQ, a3.Email, a3.Sort);printf(请输入您要修改的资料.n);printf(n); printf(姓名:); scanf(%s
24、,&one.Name); fflush(stdin); printf(n); printf(性别:); scanf(%s,&one.Sex); fflush(stdin); printf(n); printf(年龄:); scanf(%s,&one.Old); fflush(stdin); printf(n); printf(移动电话:); scanf(%s,&one.Mobil); fflush(stdin); printf(n); printf(固定电话:); scanf(%s,&one.Tel); fflush(stdin); printf(n); printf(住址:); scanf(
25、%s,&one.Address); fflush(stdin); printf(n); printf(QQ:); scanf(%s,&one.QQ); fflush(stdin); printf(n); printf(Email:); scanf(%s,&one.Email); fflush(stdin); printf(n); printf(类别:); scanf(%s,&one.Sort); fflush(stdin);fseek(fp,(count1 - 1)*sizeof( a3),SEEK_SET); fwrite(&one,sizeof( one),1,fp); printf(修改
26、成功!n);return; Else printf(您要修改的人员不存在!n); return; fclose( fp); return; void ShanChu( FILE *fp) man a4; man blank = 0; char name312; int count = 0; rewind(fp); printf(请输入您要删除的人员姓名:); scanf(%s,&name3); fflush( stdin); while( !feof( fp) fread( &a4,sizeof( a4), 1, fp); count+; if( strcmp( name3,a4.Name)
27、=0) printf(姓名:%sn性别:%sn年龄:%sn住址:%sn移动电话:%sn固定电话:%snQQ:%snEmail:%sn类别:%sn, a4.Name, a4.Sex, a4.Old, a4.Address, a4.Mobil, a4.Tel, a4.QQ, a4.Email, a4.Sort); fseek( fp,( count - 1) * sizeof( a4), SEEK_SET); fwrite( &blank, sizeof( blank), 1, fp); printf(删除成功!); fclose( fp); return; else printf(您要删除的人员
28、不存在!n); return; fclose( fp); return; void XianShi( FILE *fp)char m = 0, n;man a5; while( !feof( fp) fread( &a5,sizeof( a5), 1, fp); m+; for( n = 0; n m -1; n+ ) fread( &a5, sizeof( a5), 1, fp); printf(您所需要的资料如下:n); printf(姓名:%sn性别:%sn年龄:%sn住址:%sn移动电话:%sn固定电话:%snQQ:%snEmail:%sn类别:%sn, a5.Name, a5.Sex
29、, a5.Old, a5.Address, a5.Mobil, a5.Tel, a5.QQ, a5.Email, a5.Sort); fclose( fp); 其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。二培训的及要求培训目的安全生产目标责任书为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:一、目标值:1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。2、现金安全保管,不发生盗窃事故。3、每月足额
30、提取安全生产费用,保障安全生产投入资金的到位。4、安全培训合格率为100%。二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生
31、产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。 7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育;11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落