




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学计算机科学与技术学院C语言程序设计课程设计实验报告题目: 安全事故信息管理系统 专业: 信息安全 班级: 0902 学号: U 姓名: 吴健斌 成绩: 指导教师: 李开 完成日期: 2010年 10月 28日系统功能模块结构图 系统媒体信息修改删除统计基本信息省份信息媒体信息基本信息省份信息插入各年份事故统计媒体报道统计事故类型统计事故等级统计各省份事故统计查询打开媒体信息基本信息省份信息媒体信息基本信息省份信息读取数据保存数据创建链表 数据结构设计及用法说明 所属省份监管信息:中文字段名类型及长度举例所属省份char15“shanxi” 山西监管负责人char15“zhangsan” 张三联系电话char15“0351*” 安全事故基本信息:中文字段名类型及长度举例事故编号char12“” 年+月+日+顺序编号发生时间char15“yyyymmdd-hh:mm”事故类型char15“wasibaozha” 瓦斯爆炸事故等级char1、2、3、4 四个等级分别对应特大、重大、较大和一般所属省份char8“shanxi”事故发生地所属省份事故发生单位char20“shanxijiaomeijituan”山西焦煤集团死亡人数int74重伤人数int114直接经济损失float9500.0 单位:万元人民币媒体报道基本信息:中文字段名类型及长度举例事故编号char12“” 年+月+日+顺序编号报道日期char10“” 年(4)+月(2)+日(2)媒体类别char1、2、3、4 分别代表四大媒体:报纸、广播、电视和互联网媒体名称char20“souhuxinwenwang” 搜狐新闻网内容索引char50“/ n.shtml”附加说明:安全生产事故类型限制为触电、火灾、灼烫、淹溺、高处坠落、坍塌、透水、火药爆炸、瓦斯爆炸、锅炉爆炸、其他爆炸、中毒和窒息、其他伤害13种。程序结构主函数流程图指令是否为alt+x?输入指令显示主菜单开始指令是否为enter? 否 是显示子菜单 是 输入指令调用功能函数 是指令是否为enter?指令是否为alt+x?结束 是 否 否指令是否为esc?各模块的功能文件模块:1、创建三方向十字交叉链表。2、将各级链表所有结点的数据保存到相应的三个文件里。3、将三个文件里数据读取,并建立起三方向十字交叉链表。4、退出系统。查询模块:1、以省份名称为条件来查找并显示满足条件的所属省份监管信息。2、以监管负责人姓名为条件来查找并显示满足条件的所属省份监管信息。3、以事故编号为条件查找并显示满足条件的安全事故基本信息。4、事故类型和所属省份为条件查找并显示满足条件的安全事故基本信息。(以回车为指令依次显示满足条件的不同结果)5、以事故编号和媒体名称为条件查找并显示满足条件的媒体报道基本信息。6、以报道日期和媒体名称的一部分为条件查找并显示满足条件的媒体报道基本信息。(以回车为指令依次显示满足条件的不同结果)插入模块:插入省份信息、基本信息、媒体信息结点(插入的位置同一设置在链表末尾)删除模块:删除省份信息、基本信息、媒体信息结点修改模块:修改省份信息、基本信息、媒体信息结点(为保证统计的准确性,省份信息中的“所属省份”,基本信息中的“事故编号”、“所属省份”,媒体信息中的“事故编号”、“所属省份”均不能修改。若需修改需先删除结点再重新插入。)统计模块:1、统计历年来各省份安全事故发生数、死亡人数、重伤人数和直接经济损失,按安全事故发生数降序排序后,输出统计结果。2、统计某年度全国发生的特大、重大、较大和一般四类等级安全事故发生数。3、统计各种类型安全事故发生数,按死亡人数降序排序后输出安全事故类型名称、事故发生总数、死亡总人数、重伤总人数和直接经济损失总额。4、统计媒体报道数最多的10次安全事故,按报道数降序排序后输出事故编号、事故类型、事故等级、所属省份和媒体报道次数。 5、统计各年份安全事故发生数,按死亡人数降序排序后输出安全事故类型名称、事故发生总数、死亡总人数、重伤总人数和直接经济损失总额。试验结果数据已经提前输入并保存在文件里打开程序,在open菜单下选择load项,读取数据。读取成功,按esc键返回。一、以查询媒体信息为例应用系统的查询功能。在check菜单下选择media项。选择第1种查询并输入要查找的事故编号和媒体信息。下图为没有找到重新选择并输入另一查询信息。下图找到并显示找到的媒体信息。下面选择第2种查询并输入相关信息回车查看输出结果。回车可查看下一个结果。二、以插入省份信息为例应用系统的插入功能。在insert菜单下选择province项输入省份信息并回车确认。插入成功。查看插入结果三、应用系统删除功能在delete菜单下选择province项输入要删除的省份并确认删除成功。查看删除结果。四、以修改基本信息为例应用系统修改功能。在change菜单下选择basic项输入要修改的事故编号现实原来的数据并要求输入新的数据查看修改结果五、查看系统的统计功能1各省份事故统计统计结果2某年份事故等级统计输入统计年份查看统计结果3事故类型统计统计结果4媒体报到统计统计结果5其他统计(即年份事故统计)统计结果体会课程设计是培养综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整几个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 我做的是安全事故信息管理系统的课程设计,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天做了一整天却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。 特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。 编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。 开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。 通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。 在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!参考文献C语言程序设计 李开 编著 科学出版社附录:源程序代码#include#include#include#includestruct pro_inf char pro10; char name15; char phone15; struct pro_inf *next1; struct ba_inf *next2;struct ba_inf char num12; char time15; char type15; char level; char pro10; char place20; int die_num; int injure_num; float money; struct ba_inf *next1; struct media_inf *next2;struct media_inf char num12; char date10; char med_type; char med_name20; char inf50; char pro10; struct media_inf *next;struct s_list /*统计所需的数据结构*/ char type15; int happen; int die; int injure; float loss; struct s_list *next;char *Menu = Open, Check, Insert, Count, Delete, Change;char *Menus = Create, Save, Load, Quit Alt-X, Province, Basic, Media, Province, Basic, Media, Province count, Accident level count, Accident type count, Media report count, Other count, Province, Basic, Media, Province, Basic, Media;int MnN = 4, 3, 3, 5, 3, 3;int MnLoc5 = 4,3,2,18,7, 11,10,2,23,6, 19,17,2,30,6, 28,23,2,57,8, 36,33,2,45,6, 45,40,2,52,6;int Mnm, Mns;char buf30*25*2, buf140*3*2;void ShowMenuM (void);void SetMenuM (int );void ClrMenuM (int );void ShowMenuS (int );void HideMenuS (int );void SetMenuS (int );void ClrMenuS (int );void SelLR (int );void SelUD (int );void ExeItem (int, int,struct pro_inf *);void Clr (int);void ScanKb (int *, int *);void Clear(void) window(1,1,80,25); textbackground(BLUE); textcolor(WHITE); clrscr( ); ShowMenuM(); printf(n);void create_list(struct pro_inf *head) /*建立三方向十字链*/ struct pro_inf *hp=NULL,*p; struct ba_inf *pcrs1; struct media_inf *pcrs2; char s80=,ch; double x; printf(press any number to link floatn); scanf(%lf,&x);getchar(); loop: p=(struct pro_inf *)malloc(sizeof(struct pro_inf); /*建立省份信息结点*/ printf(input province,name,phonen); scanf(%s %s %s,p-pro,p-name,p-phone); /*数据赋值*/ getchar(); p-next2=NULL; p-next1=hp; hp=p; printf(continue input data of province? yes or non); ch=getchar();getchar(); if(ch=y|ch=Y) goto loop; (*head)=hp; p=(*head); while(p!=NULL) printf(input %s provinces basic informations? yes or non,p-pro); ch=getchar();getchar(); while(ch=y|ch=Y) pcrs1=(struct ba_inf *)malloc(sizeof(struct ba_inf); /*建立基本信息结点*/ printf(input number,time,type,level,province,place,die number,injure number,moneyn); /*数据赋值*/ scanf(%s %s %s %c %s %s %d %d %f,pcrs1-num,pcrs1-time,pcrs1-type,&pcrs1-level,pcrs1-pro,pcrs1-place,&pcrs1-die_num,&pcrs1-injure_num,&pcrs1-money); getchar(); pcrs1-next2=NULL; pcrs1-next1=p-next2; p-next2=pcrs1; printf(input %s accidents media informations? yes or non,pcrs1-num); ch=getchar();getchar(); while(ch=y|ch=Y) pcrs2=(struct media_inf *)malloc(sizeof(struct media_inf); /*建立媒体信息结点*/ printf(input number,date,media type,media name,informations,provincen); /*数据赋值*/ scanf(%s %s %c %s %s %s,pcrs2-num,pcrs2-date,&pcrs2-med_type,pcrs2-med_name,pcrs2-inf,pcrs2-pro); getchar(); pcrs2-next=pcrs1-next2; pcrs1-next2=pcrs2; printf(input %s accidents media informations? yes or non,pcrs1-num); ch=getchar();getchar(); printf(input %s provinces basic informations? yes or non,p-pro); ch=getchar();getchar(); p=p-next1; void insert1(struct pro_inf *head) /*插入省份结点*/ struct pro_inf *p=head; while(p-next1!=NULL) p=p-next1; /*指针遍历*/ p-next1=(struct pro_inf *)malloc(sizeof(struct pro_inf); /*建立插入结点*/ p=p-next1; printf(input province,name,phonen); /*数据赋值*/ scanf(%s %s %s,p-pro,p-name,p-phone); getchar(); p-next1=NULL; p-next2=NULL;void insert2(struct pro_inf *head) /*插入基本结点*/ struct pro_inf *p=head; struct ba_inf *pcrs1,*pcrs; double x; printf(press any number to link floatn); scanf(%lf,&x);getchar(); pcrs1=(struct ba_inf *)malloc(sizeof(struct ba_inf); /*建立插入结点*/ printf(input number,time,type,level,province,place,die number,injure number,moneyn); /*数据赋值*/ scanf(%s %s %s %c %s %s %d %d %f,pcrs1-num,pcrs1-time,pcrs1-type,&pcrs1-level,pcrs1-pro,pcrs1-place,&pcrs1-die_num,&pcrs1-injure_num,&pcrs1-money); getchar(); while(p!=NULL) if(!strcmp(p-pro,pcrs1-pro) /*所属省份是否一致*/ pcrs=p-next2; if(pcrs!=NULL) while(pcrs-next1!=NULL) pcrs=pcrs-next1; /*二级指针遍历*/ pcrs-next1=pcrs1; pcrs1-next1=NULL; break; else p-next2=pcrs1; pcrs1-next1=NULL; pcrs1-next2=NULL; else p=p-next1; void insert3(struct pro_inf *head) /*插入媒体结点*/ struct pro_inf *p=head; struct ba_inf *pcrs1; struct media_inf *pcrs2,*pcrs; pcrs2=(struct media_inf *)malloc(sizeof(struct media_inf); /*建立插入结点*/ printf(input number,date,media type,media name,informations,provincen); /*数据赋值*/ scanf(%s %s %c %s %s %s,pcrs2-num,pcrs2-date,&pcrs2-med_type,pcrs2-med_name,pcrs2-inf,pcrs2-pro); getchar(); while(p!=NULL) if(!strcmp(p-pro,pcrs2-pro) /*所属省份是否一致*/ pcrs1=p-next2; while(pcrs1!=NULL) if(!strcmp(pcrs1-num,pcrs2-num) /*事故编号是否一致*/ pcrs=pcrs1-next2; if(pcrs!=NULL) while(pcrs-next!=NULL) pcrs=pcrs-next; /*三级指针遍历*/ pcrs-next=pcrs2; pcrs2-next=NULL; goto end; else pcrs1-next2=pcrs2; pcrs2-next=NULL; else pcrs1=pcrs1-next1; else p=p-next1; end:;void delete1(struct pro_inf *head) /*删除省份结点*/ struct pro_inf *current=*head,*prior=*head; char c8; printf(input the province informations you want to delete:n); gets(c); while(current) if(strcmp(current-pro,c) prior=current; current=current-next1; else break; if(current=NULL) printf(not found!n); /*没有符合条件结点*/ if(current=*head) *head=current-next1; else prior-next1=current-next2; free(current); /*释放被删结点存储*/void delete2(struct pro_inf *head) /*删除基本信息结点*/ struct pro_inf *p=head; struct ba_inf *current,*prior; char c12; printf(input the number informations you want to delete:n); gets(c); while(p) current=p-next2; while(current) if(strcmp(current-num,c) prior=current; current=current-next1; else goto end; p=p-next1; end:; if(p=NULL) printf(not found!n); /*没有符合条件结点*/ if(current=p-next2) p-next2=current-next1; else prior-next1=current-next1; free(current); /*释放被删结点存储*/void delete3(struct pro_inf *head) /*删除媒体信息结点*/ struct pro_inf *p=head; struct ba_inf *pcrs; struct media_inf *current,*prior; char c50; printf(input the informations:n); gets(c); while(p) pcrs=p-next2; while(pcrs) current=pcrs-next2; while(current) if(strcmp(current-inf,c) prior=current; current=current-next; else goto end; pcrs=pcrs-next1; p=p-next1; end:; if(p=NULL) printf(not found!n); /*没有符合条件结点*/ if(current=pcrs-next2) pcrs-next2=current-next; else prior-next=current-next; free(current); /*释放被删结点存储*/void show_list1(struct pro_inf *p) /*显示省份信息*/ printf(n); printf(province:%sn,p-pro); printf(responsible name:%sn,p-name); printf(phone number:%sn,p-phone);void show_list2(struct ba_inf *p) /*显示基本信息*/ printf(n); printf(accident number:%sn,p-num); printf(happen time:%sn,p-time); printf(accident type:%sn,p-type); printf(accident level:%cn,p-level); printf(province:%sn,p-pro); printf(happen place:%sn,p-place); printf(die number:%dn,p-die_num); printf(injure number:%dn,p-injure_num); printf(lose money:%f wan yuann,p-money);void show_list3(struct media_inf *p) /*显示媒体信息*/ printf(n); printf(accident number:%sn,p-num); printf(report date:%sn,p-date); printf(media type:%cn,p-med_type); printf(media name:%sn,p-med_name); printf(report informations:%sn,p-inf); printf(province:%sn,p-pro);void change1(struct pro_inf *head) /*修改省份信息*/ struct pro_inf *p=head; char c15; printf(which province do you want to change?n); gets(c); while(p) if(strcmp(p-pro,c) p=p-next1; else Clear(); printf( Original Informationn); show_list1(p); /*显示原始信息*/ printf(n); printf(input %s provinces name,phonen,p-pro); scanf(%s %s,p-name,p-phone); /*重新赋值*/ getchar(); break; if(p=NULL) printf(not found!n);void change2(struct pro_inf *head) /*修改基本信息*/ struct pro_inf *p=head; struct ba_inf *pcrs; char c15; printf(input accident number which you want to changen); gets(c); while(p) pcrs=p-next2; while(pcrs) if(strcmp(pcrs-num,c) pcrs=pcrs-next1; else Clear(); printf( Original Informationn); show_list2(pcrs); /*显示原始信息*/ printf(n); printf(input NO.%s accidents time,type,level,place,die number,injure number,moneyn,pcrs-num); scanf(%s %s %c %s %d %d %f,pcrs-time,pcrs-type,&pcrs-level,pcrs-place,&pcrs-die_num,&pcrs-injure_num,&pcrs-money); /*重新赋值*/ getchar(); goto end; p=p-next1; end:; if(p=NULL) printf(not found!n);void change3(struct pro_inf *head) /*修改媒体信息*/ struct pro_inf *p=head; struct ba_inf *pcrs1; struct media_inf *pcrs2; char c120,c220; printf(input accident numbern); gets(c1); printf(input media namen); gets(c2); while(p) pcrs1=p-next2; while(pcrs1) pcrs2=pcrs1-next2; while(pcrs2) if(strcmp(pcrs2-num,c1)|strcmp(pcrs2-med_name,c2) pcrs2=pcrs2-next; else Clear(); printf( Original Informationn); show_list3(pcrs2); /*显示原始信息*/ printf(n); printf(input report date,media type,media name,informationsn); scanf(%s %c %s %s,pcrs2-date,&pcrs2-med_type,pcrs2-med_name,pcrs2-inf); /*重新赋值*/ getchar(); goto end; pcrs1=pcrs1-next1; p=p-next1; end:; if(p=NULL) printf(not found!n);void search_list1(struct pro_inf *head) /*查询省份信息*/ struct pro_inf *p=head; char c15,ch; printf(input a wordn); gets(c); printf(1:input is provincen); /*选择输入数据类型*/ printf(2:input is responsible namen); ch=getchar();getchar(); switch(ch) case1: while(p) if(strcmp(p-pro,c) /*核对信息是否一致*/ p=p-next1; else break; Clear(); if(p=NULL) printf(not found
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿莲蓬创意画课件
- 我的学校绘画课件
- 经济法概论考试高效复习宝典试题及答案
- 创意斑马美术课件
- 酒店餐饮服务质量试卷
- 4S店新车销售和售后维修合同
- 经济师考试复习指导手册试题及答案
- 眼睛管理知识培训课件
- 语言学语法结构分析试卷
- 行政管理专科公共关系案例分析题目及试题及答案
- 旧房改造施工设计方案
- 2024年山东职业学院高职单招语文历年参考题库含答案解析
- 2024认定实际施工人法律风险防范与合同完善服务合同3篇
- 2025年度会计人员继续教育会计法律法规答题活动测试100题答案
- 农贸批发市场管理制度(3篇)
- 2022年新高考全国Ⅱ卷英语高考真题试卷(含详解)
- 《糖尿病监测及意义》课件
- 4.1.2-元素周期表-课件 高一上学期化学人教版(2019)必修第一册
- 跨学科实践活动5基于碳中和理念设计低碳行动方案(教学课件)九年级化学上册(人教版2024)
- 舞蹈演出编导排练合同模板
- 【MOOC】遥感原理与应用-西北大学 中国大学慕课MOOC答案
评论
0/150
提交评论