《最新C语言教材管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《最新C语言教材管理系统课程设计报告.docx(160页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言教材管理系统课程设计报告C语言教材管理系统课程设计报告合肥学院计算机科学与技术系课程设计报告2012 2013 学年第 二 学期课程面向过程综合设计课程设计名称 教材管理系统学生姓名 陈琳学号 1204091022 专业班级 软件工程指导教师 何立新、高玲玲 2013年6月一需求分析1.需要解决的问题:对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合
2、设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C程序设计语言的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握结构化程序设计方法,熟悉面向过程程序设计方法。(6)熟练掌握C语言的基本语
3、法,灵活运用各种数据类型。(7) 进一步掌握在集成环境下如何调试程序和修改程序。2.课程设计名称及内容课程设计名称:教材管理系统设计内容:编写一个简单的教材管理程序,帮助管理教材信息。要求具有教材信息管理的功能。其中包括教材信息的录入、删除、查询和修改等功能。还应包括对课程信息管理的功能。其中包括对课程信息的录入、删除、修改和查询等功能。3.任务和要求运用面向过程的程序设计方法,要求选择数组或链表,任务中要运用对文件进行读写操作。本题程序应提供的基本管理功能有:1) 添加:即增加一条信息到教材信息中,或增加一条信息到课程信息中;2) 显示:即在屏幕上显示所有教材或课程信息;3) 存储:即将教材
4、信息和课程信息分别保存在文件中;4) 装入:即将文件中的信息读入程序;5) 查询:可根据教材名称或编号查找相关信息,若找到,显示在屏幕上;也可根据课程编号或名称查找相关信息并显示; 6) 修改:可修改教材信息,或对课程信息进行修改。二 算法设计1.设计思想:开始 管理员登录用户登录教材录入添加教材删除教材修改教材查询按编号或名称或总体查询返回上一层教材录入课程信息录入教材删除课程信息删除教材修改课程信息修改2.设计表示main()让人选择俩种方式而防止程序混乱。num1()是验证你是否是管理员 从而让你进入管理员子菜单;menu1()是管理员子菜单;是管理的更加轻松; menu1()可以进入n
5、um1()num2()num3()num6() num1()是进行录入数据的程序num2()是进行查询的菜单可进入menu2()教材管理和menu3()课程信息的菜单menu2()进入num8()num9()num7()进行相应操作menu3()进入num10()num11()num12()进行相应操作num7()是根据教材名称查询教材信息num8()是根据教材编号查询教材信息num9()是总的查询教材信息num10()是根据课程编号查询课程信息num11()是根据课程名称查询课程信息num12()是总的查询;num3()是进行修改的教材程序num6()是进行删除的教材程序主要就是利用主函数和
6、子函数之间的调用实现了系统的运行,函数之间的调用使代码不会显得那么的杂乱,能够较好的查出在哪个部分发生了错误。3实现注释: 任务中界面的协调比较好的做出来了,每一个界面都有返回的输入,可以较好地实现各个界面的切换,还有就是实现不少字符串的函数,有比较的、有复制的等。比如说新用户注册的时候会有两次输入密码的机会,第一次是自己的想设的密码,而第二次就是自己确认的。管理员在这个系统中可以在文件中随便添加、修改、删除,实现对信息的不断更新,及时删除、修改一些过时的信息,能够给用户最新的资讯,可以实现信息的及时性。 4算法设计中一些新的想法: 但是也有不少的要求实现的不是很完善,比如说可以对修改的教材或
7、课程进行分类标明什么是修改后的什么是修改前的删除的时候可以显示删除的是哪个显示出来如果删除错了可以重新替换回原来的文件再重新删除普通用户也可以升级注册成为会员从而拥有添加和查询的资格。管理员可以修改自己设定的密码该系统可以更完善更人性化。起到真正的教材管理,实现更加可观的效果。三、用户手册使用该系统的时候,先进入主菜单按给出的提示输入信息,进入密码项目后输入六位数字的密码,注意按回车。在输入密码的时候请注意如果输入错误想退格是不行的。因为退格也代表了密码,密码不一定是数字。你总共有三次机会输入密码根据提示输入;进入管理界面时注意进入录入的信息的程序,录入的程序要正确不能全是数字导致排列不整齐录
8、入其实也就是添加程序,当问你是否继续时,提示叫你输入YorN你就得输入YorN否则程序一致将其当N来处理如果所有返回菜单你都输入N你就会主动退出程序修改程序有三个选择设定如果都没选择就自动默认是结束查询信息的时候要输入正确的否则不能显示出应有的信息查询信息的返回菜单返回的主菜单是第一个查询菜单可通过该菜单返回管理菜单,但是返回管理菜单必须再输入管理员密码该程序课反复运行并且会自动依据输入的信息来更新数据库,希望各位用户按操作流程走,不用擅自输入其他数据如果程序出现死机情况,可以先把程序复制下来粘贴另行操作。四、 调试及测试1.问题与解决方案调试的时候发现自己不会打开读取文件并覆盖进去,后来会文
9、件操作,但发现每次覆盖修改后再次输入时候总是将原有的数据全部消除,txt文件中只剩下了烫,显示字符过多,经过自己认真研究和在同学的帮助下,终于发现原来是数组的原因,因为输入的最后的数组是空导致文件无法正常覆盖,出现了许多烫,而后又是因为查询的时候没有分类导致程序过于简单单调,而后增加了8个子函数来进行分类查询。2.回顾与分析设计和编码的时候遇到很多问题就会和同学在一起讨论,和同学一起讨论的时候你会感到其中的乐趣,关键是能够从中学习很多东西,而且记忆会更加地深刻。俗话说的好,文化是在碰撞之后才有的,和同学在一起讨论问题,思想就会发生碰撞,可能会收到意想不到的收获。一开始不会用子函数,结果用了一连
10、串的goto语句而导致主函数的程序过于庞大而无法找出其中存在的不足之处,而后来做查询时候只有一个总览,还是和同学商量后进行改编加入了不同的分类。3.程序运行的时空效率分析非常便捷只要先输入数字确定哪种方式登录,再输入密码进入各种不同类的菜单,可进行认为的操作有不同输入方式可供选择。查询时也有三种方式,分类较多有多种不同的花样可供选择使用,录入修改删除都是慢慢跳出,等一个输入结束下个才进行。几乎每一个子函数都有返回的程序,可以从一个子函数跳到另一个子函数,可以多次运用同种函数。4.测试数据集教材信息:01c语言 电业出版社 1040 大一下学期 0102英语大学听说教程 人民出版社 1045 大
11、一下学期 0203英语大学读写教程 人民出版社 1046 大一下学期 0304高等数学 延边出版社 1055 大一下学期 0405离散数学 高等教育出版社 1066 大一下学期 0506电路 科学出版社 2013 大一下学期 06课程信息:01 c语言 2012年7月5日 项响琴 02 高数 2012年7月5日 阎桂芳03 英语 2012年7月5日 田进英04 离散 2013年6月6日 华珊珊05 电路 2013年1月4日 肖连军4.运行实例主界面:普通用户:查询:管理员界面:信息录入和删除:5.本课程设计经验和体会:课程设计做完感觉自己的C语言知识好像变得充实了,变得自己好像这学期也不是什么
12、都没有学到,C语言程序的编写首先要从大局考虑,把自己编写整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序。编写的程序从理论上来说并没有错,但以上机就问题不断。甚至有些课本上的知识照搬不变,也不能得到正确的结果。有时一个程序改了一遍又一遍,但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试时却屡屡出错。经反复的修改后,结果正确了,一切都是值得的。这时所有的乏味都显得那么无力,原来通过实践完成自己的劳动成果的感觉就是很舒服,很有成就感。这主要是通过这次实践锻炼了自己的动手能力,所以以后应该多动手,不能做语言上的巨人,行动上的矮人。顾起此课程设计,至
13、今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的
14、结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。五小结:过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永
15、远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事
16、情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。六 参考文献:1 黄明等编著C语言课程设计北京:电子工业出版社2 郭翠英编著C语言课程设计案例精编北京:中国水利水电出版社3 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1版4 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版5 谭浩强编著C程序设计题解与上机指导(第3版) 北京:清华大学出版社6 谭浩强编著C程序设计(第3版) 北京:清华大学出版社7 洪国胜 等编著 C+ Builder程序设计轻松上手北京:清华大学出版社附录:#includestdio.
17、h#include stdlib.h#include string.htypedef struct informationchar name20;char size20;char num20; char num120;char date20;char num220;INF;void num1();void num2();void num3();void num6(); void menu1() int a; system(cls); printf(ttt请输入序号以选择你进入界面n);printf(ttt *1.录入信息*n); printf(n); printf(n); printf(ttt
18、 *2.查询信息*n); printf(n); printf(n); printf(ttt *3.修改信息*n); printf(n); printf(n); printf(ttt *4.删除信息*n); printf(n); printf(n); scanf(%d,&a); if(a=1) num1(); if(a=2) num2(); if(a=3)num3(); if(a=4) num6(); void mean1();void num() char A7;int i,flag=0;R:system(cls);printf(t*欢迎进入管理员登录系统*n); printf(n); pri
19、ntf(n);printf(*用户名:陈琳n); printf(*密码:); for(i=0;i=5;i+) Ai=getch(); printf(*); A6=0; getchar(); getchar(); if(strcmp(A,123456)=0) printf(tt密码正确正在登录系统.n); printf(tt请输入回车键继续n); getchar(); menu1(); elseflag+;printf(你还有%d次机会n,3-flag); printf(tt请输入回车键继续n);getchar();if(flag3)goto R; void menu1(); void num1
20、() int b; INF A20; char ch1; char ch2; char ch3; FILE *fp; int j;int i=0; L: printf(*1.教材信息录入*n); printf(n); printf(*2.课程信息录入*n); scanf(%d,&b); if(b=1)M: system(cls);fp=fopen(教材管理.txt,r+);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,Ai.name,Ai.size,Ai.num,Ai.date,Ai.num1,Ai.num2);i+; printf(*请录入教材编号*n); sc
21、anf(%s,Ai.name);printf(*请录入教材名称*n); scanf(%s,Ai.size); printf(*请录入出版社*n); scanf(%s,Ai.num); printf(*请录入征刊号*n); scanf(%s,Ai.date); printf(*请录入订学期*n); scanf(%s,Ai.num1); printf(*请录入课程编号*n); scanf(%s,Ai.num2);fclose(fp);fp=fopen(教材管理.txt,w+);for(j=0;j=i;j+)fprintf(fp,%st%st%st%st%st%sn,Aj.name,Aj.size,
22、Aj.num,Aj.date,Aj.num1,Aj.num2);system(cls);fclose(fp);printf(*你是否还想继续添加教材信息,请输入Y或N*n);scanf(%s,&ch1);if(ch1=Y)goto M;elseprintf(*你是否想返回菜单请输入Y或N*n);scanf(%s,&ch2);if(ch2=Y)goto L;else printf(*你是否想返回主菜单进行其他操作!请输入Y或N*n); scanf(%s,&ch3); if(ch3=Y) menu1();elseG:system(cls); fp=fopen(课程信息.txt,r+);while(
23、!feof(fp) fscanf(fp,%s%s%s%s,&Ai.name,&Ai.size,&Ai.num,&Ai.date);i+;i-;printf(*请录入课程编号*n); scanf(%s,&Ai.name); printf(*请录入课程名称*n); scanf(%s,&Ai.size); printf(*请录入开学学期*n); scanf(%s,&Ai.num); printf(*请录入主讲教师*n); scanf(%s,&Ai.date);fclose(fp);fp=fopen(教材管理.txt,w+);for(j=0;j=i;j+) fprintf(fp,%st%st%st%s
24、n,Aj.name,Aj.size,Aj.num,Aj.date);fclose(fp);system(cls);printf(*你是否还想继续添加课程信息,请输入Y或N*n);scanf(%s,&ch1);if(ch1=Y)goto G;elseprintf(*你是否想返回菜单*);scanf(%s,&ch2); if(ch2=Y) goto L; else printf(*你是否想返回主菜单进行其他操作!请输入Y或N*); scanf(%s,&ch3);if(ch3=Y)menu1(); void num(); void menu2(); void menu3(); void num2()
25、 int a; char ch1; system(cls); printf(ttt*欢迎进入教材系统*n);printf(n);printf(n); printf(ttt*1.教材管理*n);printf(n);printf(n); printf(ttt*2.课程信息*n); scanf(%d,&a); if(a=1) menu2();else if(a=2) menu3();else printf(n); printf(n); printf(n);printf(要返回主菜单么?请输入Y或Nn);scanf(%s,&ch1); if(ch1=Y)num(); void num2();void
26、num();void num7();void num8();void num9();void menu2() int a; char ch1; char ch2; system(cls);printf(ttt*1.根据教材名查询*n); printf(n); printf(n); printf(ttt*2.根据编号查询*n);printf(n); printf(n); printf(ttt*3.总览全部*n); printf(n); printf(n);printf(ttt*4.若想进入返回界面请输入任意数字n);scanf(%d,&a); if(a=1) num7(); else if(a=
27、2) num8(); else if(a=3) num9(); printf(n); printf(n); printf(n); printf(要返回上一层么?请输入Y或Nn); scanf(%s,&ch1); if(ch1=Y) num2();else printf(要返回主菜单么?请输入Y或Nn);scanf(%s,&ch2); if(ch2=Y)num(); void menu2(); void num7() INF S; FILE *fp; char B100; char ch1; fp=fopen(教材管理.txt,r+); L: printf(tt请输入你要查询的教材名称:n);
28、printf(tt);scanf(%s,&B);printf(教材编号t教材名称t出版社tt刊号t征订学期t课程编号n);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&S.name,&S.size,&S.num,&S.date,&S.num1,&S.num2);if(strcmp(B,S.size)=0)printf( %st %st%st%st%st %sn,S.name,S.size,S.num,S.date,S.num1,S.num2);printf(你是否还要继续查询其他教材?请输入Y或Nn);scanf(%s,&ch1);if(ch1=Y)goto L
29、;else if(ch1=N)menu2(); void menu2();void num8() INF S; FILE *fp; char B10; char ch1; int i=1; fp=fopen(教材管理.txt,r+); L: printf(tt请输入你要查询的教材编号:n); printf(tt);scanf(%s,&B);printf(教材编号t教材名称t出版社tt刊号t征订学期t课程编号n);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&S.name,&S.size,&S.num,&S.date,&S.num1,&S.num2);if(strcmp(B,S.name)=0)printf( %st %st%st%st%st %sn,S.name,S.size,S.num,S.date,S.num1,S.num2);printf(你是否还要继续查询其他教材?请输入Y或Nn);scanf(%s,&ch1);if(ch1=Y)goto L;else if(ch1=N)menu2();void num();void menu2();void num9() FILE *fp; INF S
限制150内