版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、系:班级:姓名:指导老师:2010-8-28 至 2010-9-4目录、设计目的、设计要求三、题目及其要求.四、需求分析五、总体设计六、详细设计6.1、主函数6.2、菜单函数6.3各模块设计 631输入函数632添加函数 6.3.3修改函数 6.3.4查找函数 6.3.5选择课程 6.3.6删除课程 6.3.7浏览函数 6.3.8退出操作 6.3.9公共函数一一保存函数 TOC o 1-5 h z 七、上机实习 .28八、设计实习心得 .29九、参考书目 .29十、学生选课系统与程序 .30一、设计目的随着信息技术对人类社会进行的全方位渗透,一种新的文化形态一一信息时代的计算机文化已经形成。计
2、算机知识成为当代知识分子结构中不可缺少的重要部分C语言是近年来国内外得到迅速推广使用的一种咼级语言。C语言功能丰富,表达能力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级语言的优点, 又具有低级语言的语言特点,因此 C 语言对我们来说很重要。学习的目的在于将所学到的东西运用于实践,这样方可在实践中巩固以前所学的理论 知识,同时提咼自己学习的能力,完善自己掌握的技能,使得我们既能够从实践中强化以 前所学的知识,也能让我们在实践中学到更多新的东西,还能锻炼我们的动手能力,这是 书本上不能学到的。此次设计就在于让我们把以往所学运用于实践中,让我们通过对实际生活中的实例进 行观察和理
3、论分析后,总结出一套可行的解决方案,然后用编程的方法,把解决方案变为 可能。此次设计,也让我们巩固和加深了对 C语言课程的基本知识的理解和掌握,帮助我 们掌握C语言编程和程序调试的基本技能,让我们体验了如何用C语言进行基本的软件设计,同时也提高了我们书写程序说明的能力和用 C语言解决实际问题的能力。二、设计要求认真分析实习指导老师分配的课程设计题目的要求;写出详细设计说明,分块论述;编写程序代码,调试程序使其能正确运行,并且可以实现预期的功能;设计完成的软件要便于操作和使用,有整齐、美观的使用界面;设计完成后提交课程设计报告和源代码文件的电子文档三、题目及其要求假定有 n 门课程,每门课程有课
4、程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:(1)系统以菜单方式工作(2)课程信息和学生选课信息录入功能(课程信息用文件保存)(3)课程信息浏览功能(4)查询功能(5)按学分查询(6)某门课程学生选修情况(可选项)四、需求分析根据题目要求, 由于课程和学生所选课程的信息是存放在文件中的, 所以要提供文件的 输入输出等操作;在程序过程中还要进行添加课程、浏览课程、查找课程、选择课程、删 除课程以及退出系统等操作,所以应提供相应的输入、现实、查找、选择、删除和退出等 功能
5、的函数来实现;另外还要在最开始设置菜单函数,实现其它功能的选择。五、总体设计根据以上的题目要求以及需求分析, 我认为可将我要设计的程序分为十一个模块: 主函数、菜单函数、输入课程、添加课程、修改课程、查找课程、选择课程、删除课程、浏览课程、退出系统、保存文件。(系统功能模块如图5-1所示)六、详细设计6.1、主函数主函数一般设计简洁,本次设计遵循程序清晰可读,功能完善的原则,尽量合理简化 程序。在主函数中,仅提供了标准输出函数的调用和菜单函数的调用。主函数流程图如下图所示:其代码如下所示:/*主函数 */void mai n()int b=1;system(color 6f);正在启动系统 t
6、n );prin tf(nnnnnnnnnnt ttsystem(color 2f);menu();6.2、菜单函数根据所要实现的功能,我编译了一个菜单函数,将所有选择功能集中,提供给用户进行选择。这样做既可以使程序更加紧然有序,也为用户提供了方便快捷的选择,使得整个 设计更加人性化。菜单函数的流程图如下图所示:菜单函数的代码如下所示:void menu()char k100=nnnttttt052081班 王兵武 nnnnnnn;char *m=k;dosystem(cls);*);puts(ntttt1.输入课程 .);puts(ntttt2.puts(ntttt3.puts(ntttt4
7、.puts(ntttt5.puts(ntttt6.puts(ntttt7.puts(ntttt8.添加课程 .); 修改课程 .); 查找课程 .); 选择课程 .); 删除课程 .); 浏览课程 .);退出系统 .n);puts(tt*n);printf(ntt 请输入您的选择 (1-8):t);scanf(%d,&a);nn);printf(nttswitch(a)case 1: input(); break;case 2: add(); break;case 3: amend(); break;case 4: search(); break;case 5: select(); break
8、;case 6: cross_off(); break;case 7: output(); break;case 8: system(color 8f);puts(nnnnttt 谢谢使用。已退出 系统。 );for(m=k;mk+1;m+)printf(%s,m);exit(0);break;default:puts( 输入错误! );break;printf( 按任意键返回首层 n);getch();while(a!=8);运行主函数和菜单函数效果如下:显示进入系统进入主菜单:6.3 各模块设计通过主函数调用菜单函数,通过菜单函数里的开关语句选择调用各功能函数。下面详述各功能函数。6.3.
9、1 输入函数 通过菜单函数调用此函数用于输入已有课程信息,并通过输入函数调用保存函数将课程信息保存在“课程 .txt ”文件中。其流程图如下所示:调用输入函数其代码如下:/*输入函数*/void in put()int i,flag=0,num=0;char q;doflag = 0;prin tf(请输入课程编号:);scanf(%d,&num);for(i=0;icount;i+)if(num=KCi.num)flag = 1;break;if(flag)printf(此课程已存在!按任意键返回主菜单。 n);printf( printf(请输入: );q=getch(); menu();
10、elseKCcount.num=num;printf(请输入课程名称:);scanf(%s,KC);printf(请输入课程性质: );scanf(%s,KCcount.xingzhi);printf(请输入课程学时: );scanf(%d,&KCcount.xueshi);printf(输入实验上机学时: );scanf(%d,&KCcount.shiyan_shangji);printf(请输入课程学分: );scanf(%f,&KCcount.xuefen);printf(请输入开课学期: );scanf(%d,&KCcount.xueqi);count+;baocu
11、n(); printf( 输入成功! n); while(flag=1);输入函数运行效果如下图:输入新课程,显示继续添加:重复输入则运行如下:632添加函数通过菜单函数调用添加课程函数,进行新课程的添加。输入课程编号,判断其是否已 经存在,已存在则选择重新输入或者返回主菜单,不存在则继续添加该课程的其他信息, 并调用保存函数将其信息保存在“课程.txt ”文件中。其流程图如下所示:程序代码如下:void add()int i,j,flag=0,num=0;char q;doflag = 0;printf( 请输入课程编号: );scanf(%d,&num);for(i=0;i 重新输入 ;
12、其它键 - 返回 主菜单 n);printf( 请输入: n);printf(n);q=getch();if(q=1) add();else menu();elsej=count;KCj.num=num;printf( 请输入课程名称: );scanf(%s,KC);scanf(%s,KCj.xingzhi);printf( 请输入课程学时: );scanf(%d,&KCj.xueshi);printf( 输入实验上机学时: );scanf(%d,&KCj.shiyan_shangji);printf( 请输入课程学分: );scanf(%f,&KCj.xuefen);printf
13、( 请输入开课学期: );scanf(%d,&KCj.xueqi);count+;baocun();printf( 添加成功! n);printf( 请继续选择: 1- 继续输入 ; 其它键- 返回主菜单 n);q=getch();if(q!=1)menu();while(flag=1);其运行效果如下图所示:(1)所添加课程原来不存在,则继续添加该课程信息:(2)所添加课程已经存在,则继续选择进行下一步操作:6.3.3 修改函数修改函数用于对已经存在的课程信息进行相应的修改,用来修改已有课程的名称、学 时、实验上机学时、学分和开课学期相关信息。调用该函数时,先输入课程编号,判断其 实都存在,
14、如果存在,则进行相应项的修改,修改完毕保存然后选择继续修改或者返回主 菜单。若不存在,则进行选择,选择继续修改或者返回主菜单。流程图如下所示改课程已经存惟,则继续修改丿继续修改,则继邈调用修改函数丿调用修改函数输入课程编号判断课程若课程不存在,I则继续选择。丿选择返回主菜k单,贝碉用菜单丿选择继续修改,若选择返回,则1则继续调用修改丿I调用菜单函数,丿修改模块代码如下:/*修改函数*/void ame nd()int num,i,flag=0;char q;doprintf( 请输入要修改的课程编号: );scanf(%d,&num);for(i=0;i 继续修改 ;其它键 - 返回主菜单 n
15、);flag=0;printf(n);printf(请输入: );q=getch();if(q!=1)menu();else amend();elseprintf( 无此课程! 1- 重新输入 ; 任意键 - 返回主菜单 n);printf(请输入: );q=getch();if(q!=1)menu();else amend();while(flag=0);运行修改函数效果如下:(1)输入已有课程,继续修改其他信息,显示修改成功,然后继续选择:2)输入课程不存在,选择继续修改或者返回主菜单:6.3.4查找函数调用查找函数,先选择按编号查找或者按学分查找,然后进行下一步。输入1,则按编号进行查找
16、,若该课程存在,则程序将该课程信息打印在屏幕上,若不存在,则打印不 存在信息并提示继续选择查找或者返回主菜单;输入2,则按学分进行查找,若该课程已存在,则程序将其信息打印与屏幕上,若不存在则打印不存在的信息,并提示继续选择。查找模块流程图如下调用查找输入2,输入2,输入其他键按编号查找丿按学分11输入编号存编号不存输入学分,输入的学分提示输入错f,则打印丿I在打印不丿I存在,则打丿I不存在,打丿.误,按任意/其代码如下所示:void search()char q;int num,i,xuefen,m,flag=0;puts(nnntt 请选择: 1- 按编号查询; 2- 按学分查询 n); s
17、canf(%d,&m);if(m=1)doprintf( 请输入课程编号: );scanf(%d,&num);for(i=0;i重新输入 ; 其它键 - 返回主菜单 n);printf( 请输入: n);printf(n);q=getch(); if(q!=1) menu();while(flag=0);if(m=2)doprintf( 请输入课程学分: );scanf(%d,&xuefen);for(i=0;i 重新输入 ; 其它键- 返回主菜printf(n);printf(请输入: n);printf(n);q=getch(); if(q!=1) menu();while(flag=0)
18、;if(m!=1)&(m!=2) printf(ntt您 的 输 入 有 误 。 按 任 意 键 返 回 主 菜 单 。 t);q=getch();menu(); 运行效果如下五幅图所示:( 1)有主菜单选择“ 4”查找课程,提示选择按编号或者学分进行查找:(1)按编号输入查找,输入已有课程math 编号 2,效果如下:2)按编号查询课程,输入编号不存在,提示相关信息及作出相关选择:(4)按学分查询,输入已有课程学分,打印相关信息并提示选择:(5)输入的学分不存在,显示不存在的信息并提示选择:6.3.5选择课程在菜单函数中选择5,进入选课函数,系统会提示输入课程编号已经学生的学号。若 输入的课
19、程编号存在,则打印选课成功,并将所选择的课程的信息存入“选课 .txt ”文档 中,并提示选择继续选课或者返回主菜单;若输入的课程编号不存在,则打印岂不存在并 提示进行选择继续选课或者返回主菜单。其流程图如下所示:选课函数的代码如下:/*选课课程*/void select()long num2=0,xuehao1;int i,flag=0;char q;FILE *fp_;fp_=fopen( 选课 .txt,w);if(fp_= NULL)printf(File open error!n);exit(0);doprintf( 请输入课程编号: );scanf(%d,&num2);printf
20、( 请输入您的学号: );scanf(%ld,&xuehao1);for(i=0;i 继续选课;菜单 nn);printf( *nn);q=getch();if(q=1)select();else menu();else其它键 - 返回主返回主菜单 nn);printf( 无此课程!请选择: 1-继续选课;其它键 - printf( *nn);q=getch();if(q=1)select();else menu();while(flag=0);调用选课函数后效果如下两幅图所示:(1)输入课程编号存在时,打印选课成功,并将信息存入文档:(2)输入的课程编号不存在,则打印不存在的信息,并提示做出
21、选择:6.3.6 删除课程有主菜单选择 6,进入删除函数。执行此函数,先输入课程编号,若编号存在,则从文件中删除该课程,并打印删除成功,提示按任意键返回主菜单;若编号不存在,则打印输入课程不存在,提示重新输入或者返回主菜单。其流程图如下所示:其代码如下:void cross_off()char q;int num4=0;int i,j,flag=0;doprintf(请输入要删除的课程编号:);scan f(%d,&n um4);for(i=0;ico un t;i+) if(nu m4=KCi. num) flag = 1; break; if(flag)for(j=i;j 重新输入 ; 任
22、意键 - 返回主菜单 n);printf(n);printf( 请输入: );printf(n);q=getch();if(q=1)cross_off();else menu(); while(flag=0);其运行效果图如下所示:( 1) 当输入的课程编号存在,删除成功,显示如下:(2)当输入的课程编号不存在,系统提示重新输入或者返回主菜单:637浏览函数在主菜单选择7,进入浏览函数,程序将自动将课程文档中存储的课程的所有信息打印在屏幕上。此函数的功能就是输出课程文档中保存的课程信息。程序的流程图如下所示:进入浏览函数I)r系统打印课程信息,并提示按任意键返回主菜单。I程序代码如下:void
23、 sea n()int i,j,xueshi, nu m,xueqi=0;char *n ame,*x in gzhi; float xuefe n;for(i=1;ico un t;i+)for(j=0;jco un t-1;j+)if(KCj.num=KCj+1.num)num=KCi.num;strcpy(name,KC);strcpy(xingzhi,KCi.xingzhi);xueshi = KCi.xueshi;KCj.shiyan_shangji= KCj-1.shiyan_shangji;xuefen = KCi.xuefen;xueqi = KCi.xueqi;K
24、Ci.num=KCi+1.num;strcpy(KC,KCi+1.name);strcpy(KCi.xingzhi,KCi+1.xingzhi);KCi.xueshi = KCi+1.xueshi;KCj.shiyan_shangji= KCj-1.shiyan_shangji;KCi.xuefen = KCi+1.xuefen;KCi.xueqi = KCi+1.xueqi;KCi+1.num=num;strcpy(KCi+1.name,name);strcpy(KCi+1.xingzhi,xingzhi);KCi+1.xueshi = xueshi;KCj.shiyan_sha
25、ngji= KCj-1.shiyan_shangji;KCi+1.xuefen = xuefen;KCi+1.xueqi= xueqi;printf( 课程编号 课程名称 课程性质 课程学时 实验上机 课程学分 开课学期n);for(i=0;icount;i+)printf( %dt %st %st %dt %dt %.1ft %dn,KCi.num,KC,KCi.xingzhi,KCi.xueshi,KCi.shiyan_shangji,KCi.xuefen,KCi.xueqi);baocun();运行效果图如下:6.3.8 退出操作 在主菜单选择 8,程序进入退出界面的提示操作
26、。按任意键,继退出了系统。 操作效果如图所示:6.3.9 公共函数保存函数在以上操作中,很多函数都调用了保存函数,它的主要作用是将输入、添加、修改、删除后的课程信息保存在“课程 .txt ”中。其代码如下所示:void baocun()int i;FILE *fpp;fpp = fopen( 课程 .txt,w+);fprintf(fpp, 课程号 课程名 课程性质 学时 实验学时 学分 学期 n);for(i=0;icount;i+)fprintf(fpp,%d%s %s %d %d %1.f%dn,KCi.num,KC,KCi.xingzhi,KCi.xueshi,KCi.sh
27、iyan_shangji,KCi.xuefen,KCi.xueqi);if(fclose(fpp)printf(Can not close the file!n);exit(0);七、上机实习经过前期学习及准备,理清了设计项目所有需求后,我通过上机实践,慢慢想出大概 的程序模块。刚开始遇到了很多的问题,通过查阅书籍和上网查阅资料,大致理清了此程 序设计的详细思路,并通过不断实践,编出了各个模块的代码。期间,我通过上机时间针 对各个模块的功能进行了测试,不断调试成功后,最终将整个程序整合在一起。这个过程 真的不简单,要长时间坐在屏幕前不断调试和修改程序。我还请教了现在在学计算机的老 同学帮助我修
28、改程序,最终完善了整个程序。因此,我成功的完成了此次编程设计。程序运行的效果图请分别参考前面详细设计中各个模块的运行效果,在此不再赘述。八、实习心得此次实习开始阶段自己确实不在状态,经过一两天的调整,我才端正了态度,认真的 对待此次实习的每一个细节。应该说经过这六天的奋战,加上自己认真的对待,这次实习还是比较成功的这次实习的第一个感触就是实践出真知。虽然大二C 语言、 cpp 学的都还比较好,但是要真正运用所学的系统知识设计一个完整的源程序,并让其实现一些功能来为实际生活 服务,真的不是一件简单的事情。记得刚学习 C 语言的时候,我的心里还怀着以前听其他 同学传述的C语言如何如何难学的畏惧。经
29、过一段时间的学习,我感觉到C语言真的很难学,关键在于C语言的知识点很细,涉及面很广泛,而且 C语言逻辑性非常强,对个人的 思维逻辑能力提出了很高的要求。可是只要下功夫,将各个知识点弄清楚,同时李清学习 的思路,学号C语言并不是难事。经过半年努力,我的 C语言学得很顺利,期末考试也很 顺利。大二的cpp学的也还好,虽然比C语言还要难,但是有了 C语言的基础,学起来还 是相对简单很多。可是这次实习让我认识到学习上的不足了。虽然两门课程学得很好,但当我拿到设计 的题目时,真的不知道该从何下手。思路上是混乱的,理论知识也不知如何派上用场,所 以刚开始真的不知所措。虽然如此,我还是没有放弃探索。一点一点
30、的尝试,写的不对的 语句,我就单独隔离出来,建立 c 程序进行测试,直到将其完善到最佳。借助于 C 语言 课程设计与学习指导和 C语言以及C+教材,我渐渐找到了设计的门路,慢慢的编出各 个模块的雏形,不断更改完善,并通过查阅书籍和电脑资料以及请教计算机专业的同学, 最终我讲这个程序较好的完成了。这次实习让我体会到编程很有趣,而且当我用所学的知 识做出一个“小软件”,我有较大的成就感。此次实习的第二个收获就是我们学习面要广泛,同时要不断提高自学能力。实习过程 中我遇到了很多的困难,但是老师又不在身边,我就通过查阅书籍和上网查阅资料,以及 请教同学,解决了很多的困难,同时也学到了很多知识,而这种通
31、过实践和自学得来的知 识可以让我获益终生。此次实习,让我爱上了自学,让我时时刻刻都沉浸在学习的快乐中最后的感受是这次实习我自我感觉很成功。虽然上网是搜索出了很多近似于此次题目 要求的设计程序,而且我在设计自己的程序中也借用了,但通过自己对自己所编程序的不 断修改和完善,最终,我的程序完全符合题目需求。这点让我对自己的努力感到满意。九、参考书目C 程序设计,谭浩强主编,清华大学出版社出版。C 语言课程设计与学习指导 ,张冬梅、刘远兴等主编,中国铁道出版社出版。Visual C+ 面对对象程序设计 ,戴光明、李向主编,高等教育出版社。十、程序代码#include#include#include#i
32、nclude#include struct kechengint num;char name20;char xingzhi20;int xueshi;int shiyan_shangji;float xuefen;int xueqi;struct kecheng KC100;struct Xuanxiulong xuehao;int KCnum;struct Xuanxiu xuanke100;int a=0,count=0,i=0,count1=0;void input();void add();void amend();void search();void select();void cr
33、oss_off();void scan();void baocun();void main()int b=1;system(color 6f);在启动系printf(nnnnnnnnnnt tt 正统 tnnnnnnnnnn);system(color 2f);void menu()班 王兵武 nnnnnnn; char k100=nnnttttt052081 char *m=k;dosystem(cls);puts(ntt*管理员菜单*);puts(ntttt1.puts(ntttt2.puts(ntttt3.puts(ntttt4.puts(ntttt5.puts(ntttt6.puts(ntttt7.put
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026河北衡水湖城高级中学教师招聘笔试参考题库及答案解析
- 2026辽宁省药品审评查验中心赴高校招聘11人笔试参考试题及答案解析
- 2026河北大学公开招聘工作人员33名笔试备考试题及答案解析
- 2026海南定安县招聘紧缺高中教师36人笔试备考试题及答案解析
- 2026山西水利职业技术学院招聘博士研究生20人笔试备考题库及答案解析
- 2026年周口川汇区公益性岗位招聘94人笔试备考题库及答案解析
- 2026西北政法大学专职辅导员招聘7人备考题库及答案详解(易错题)
- 2026西安市鄠邑区南关初级中学银龄讲学教师招聘备考题库(8人)含答案详解
- 2026贵州毕节市织金县城北幼儿园招聘备考题库含答案详解(预热题)
- 2026贵州黔西南州安龙栖凤街道养老服务中心招聘护理员2名备考题库附答案详解(精练)
- 语文●全国Ⅰ卷丨2024年普通高等学校招生全国统一考试语文试卷及答案
- CJ/T 192-2017内衬不锈钢复合钢管
- 2025年电工三级(高级工)理论100题及答案
- 车库金刚砂地坪施工的防滑措施
- 油田钻井工程技术操作规范
- 2025年《家校共育共话成长》一年级下册家长会课件
- 第二单元第1课《观照自然》教学设计 2025人美版美术七年级下册
- 车间装配知识培训课件
- 王海明新伦理学课后答案及复习资料
- 高血压患者围手术期的护理
- DBJ50-T-303-2018 玻璃幕墙安全性检测鉴定技术标准
评论
0/150
提交评论