




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上武汉理工大学华夏学院课程设计报告书课程名称:C课程设计题目:学生选课系统程序设计系名:信息工程系专业班级:姓名:学号:指导教师:成绩:2016年 3 月4日课程设计任务书学生姓名:专业班级:指导教师:工作单位:设计题目:学生选课系统程序设计初始条件:学生选课系统能提供学生选课,以及学生和课程信息管理等一系列功能。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、任务描述假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选
2、修课程系统,使之能提供以下功能:(1)系统以菜单方式工作(2)课程信息和学生选课信息录入功能(课程信息用文件保存)(3)课程信息浏览功能(4)查询功能(5)按学分查询(6)某门课程学生选修情况(可选项)2、本课程涉及的知识点变量的定义、输入和输出函数、结构体类型的定义、结构体数组、循环语句、选择语句,文件的操作等。设计报告撰写格式要求:一、课程设计说明书(或报告书)正文内容【设计题目】例如:学生选课系统【开发环境】硬件环境:微机系列,内存在1G以上,软件环境:MicrosoftWindowsXP【开发工具】MicrosoftVisualC+6.0【完成时间】2016-2-29-2016.3.4
3、【需求分析】分析阐述用户的需要以及要实现的程序应具有什么样的功能。【系统总体设计】在明确了所要解决的问题后,很自然地就要提出自己解决问题的思路和方案。让读者了解方案的总体设计和关键技术。要阐述自己的设计方案,说明为什么要选择或设计这样的方案。具体包括:系统总的设计思路,功能模块图;使用的设计软硬件环境和开发技术和平台等。【系统详细设计】在这部分中,应该具有相关关键实现技术(如使用什么库函数,使用什么循环结构等)。【系统调试和测试】调试:介绍设计过程中遇到的问题和解决方法。测试:介绍如何测试系统,测试中发现的问题和解决方案。【结束语】这部分篇幅不大,对整个设计中做的工作、获得的成果、心得体会等做
4、一个简单小结。【参考文献】罗列在设计过程中查阅的文献名称注意:参考文献罗列的格式为资料编号作者姓名文献或期刊名称出版社名称,文献的出版时间或期刊的期号例如:文献1谭浩强.,C程序设计(第二版)M,北京:清华大学出版社,2001年期刊2于振海.officeXP网上数据存取.计算机应用文摘J,2003,24;69(页)二、课程设计说明书(或报告书)正文的书写格式简介一、 正文标题层次正文题序层次是文章结构的框架,一般采用社会通用的论文书写形式。即章条序码统一用阿拉伯数字表示,题序层次可以分为若干级,各级号码之间加小圆点,末尾一级的后面不加小圆点,层次分级一般不超过四级为宜,示例如下:第一级(章)1
5、23第二级(条)1.11.22.12.23.13.2第三级(条)1.1.11.1.21.2.11.2.22.1.12.1.22.2.12.2.23.1.13.1.23.2.13.2.2二、表格每个表格应有自己的表序与表题,表序与表题间空一格。例如:表1.1XXXX,且表题与表序应写在表格的上方正中处。三、插图插图图面要整齐、美观,插图应与正文呼应,不能脱节。每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。四、公式公式应另起一行写在稿纸的中央时间安排:周次星期一星期二星期三星期四星期五第2周第1-4节第3-4节第1-4节第1-2节第1-4节地点现教221现教22
6、1现教221现教221现教221课程设计考核及评分标准1.系统完成任务:50分2.各种技术的综合应用:10分3、回答提问情况:20分4.设计报告:20分目录1设计题目12开发环境12.1硬件环境12.2软件环境13开发工具14完成时间15需求分析16系统总体设计27系统详细设计27.1系统主菜单27.1.1系统主菜单界面27.1.2系统功能模块图37.1.3系统主菜单流程图47.1.4系统主菜单代码47.2录入课程信息67.2.1录入课程信息界面67.2.2录入课程信息模块图67.2.3录入课程信息流程图77.2.4录入课程信息代码77.3课程管理87.3.1课程管理界面87.3.2课程管理模
7、块图97.3.3课程管理流程图97.3.4课程管理代码107.4学生信息管理127.4.1学生信息管理界面127.4.2学生信息管理界面模块图127.4.3学生信息管理流程图127.4.4学生信息管理代码137.5学生选课157.5.1学生选课界面157.5.2学生选课模块图167.5.3学生选课流程图177.5.4学生选课代码188系统调试和测试228.1调试228.2测试259结束语2510参考文献25专心-专注-专业1设计题目学生选课系统2开发环境2.1硬件环境微机系列,内存在1G以上2.2软件环境Win7系统3开发工具MicrosoftVisualC+6.04完成时间2016年2月29
8、日2016年3月4日5需求分析用户需求如下:假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统。故此,经过分析后我觉得程序应该具有以下功能:(1)系统以菜单方式工作(2)课程信息和学生选课信息录入功能(3)课程信息浏览功能(4)查询功能(5)按学分查询6系统总体设计系统由哪几个功能模块构成,给出功能模块图。C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下六大模块。选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模
9、块、完成选择模块。模块图如下图1所示。菜单选择模块课程信息管理管理录入课程信息退出系统学生选课学生信息管理录入学生信息完成选择模块图1系统功能模块图另外,程序用了两个结构体和五个全局变量N1,N2,kk1,kk2,kk3。五个全局变量是用来控制输入数据的循环的。两个结构体分别是课程信息结构体:structcouse/课程信息结构体intnum1;/课程编号charname120;/课程名称charxinzhi30;/课程性质intztime;/课程总学时intstime;/授课学时intshiyan;/实验学时intscore;/学分longintdate;/开学学期intnelepeo;/课
10、程已选人数intMelepeo;/课程人数上限structcouse*next;和存储学生信息的结构体:structstudent/学生信息结构体intnum2;charname220;intnelenum50;/已选课程编号intnelen;/已选课程数量structstudent*next;voidMs()for(kk1=0;kk1<1100;kk1+)for(kk2=0;kk2<1200;kk2+)for(kk3=0;kk3<1200;kk3+);7系统详细设计7.1系统主菜单系统界面设计图包括六个选项,用户可根据自己的需求选择不同的选项。系统界面设计图如图2所示。图2
11、系统界面设计图系统模块图分为六大模块。分别是录入课程信息模块,课程信息管理模块,录入学生信息模块,学生信息管理模块,学生选课模块和退出系统模块。系统功能模块图如下图3所示。录入课程信息课程信息管理录入学生信息学生信息管理学生选课退出系统主菜单图3系统功能模块图图3主菜单设计模块图当用户进入主菜单后,会显示有六个选项的界面,需要用户从1-6个选项中选择一个选项来进行操作,若所选数非1-6,则会退出系统。系统主菜单流程图如图4所示。开始根据n的值调用各功能模块函数输入n,判断n是否是1-6定义nNYY调用完成结束图4系统总流程图该程序实现代码如下。intmain()/主函数inti;start:p
12、rintf("nttt欢迎使用学生选课系统!n");printf("n");printf("t主菜单:n");printf("t*n");printf("t*n");printf("t*1.录入课程信息*n");printf("t*2.课程信息管理*n");printf("t*3.录入学生信息*n");printf("t*4.学生信息管理*n");printf("t*5.学生选课*n");prin
13、tf("t*6.退出系统*n");printf("t*n");printf("t*n");printf("n请输入菜单选项(16):");scanf("%d",&i);if(i<1|i>6)printf("输入错误,请重输:n");gotostart;switch(i)case1:system("cls");inputc();gotostart;break;case2:system("cls");management
14、c();gotostart;break;case3:system("cls");inputs();gotostart;break;case4:system("cls");managements();gotostart;break;case5:system("cls");elective();gotostart;break;case6:system("cls");printf("感谢使用本系统!nn再见!n");return0;7.2录入课程信息录入课程信息有两个选项,录入课程和返回主菜单。录入课
15、程信息界面设计如图5所示。图5录入课程信息界当用户进入录入课程后,会有两个选项,录入课程和返回主菜单。录入课程信息流程图如图6所示。开始YNN定义nn=1?n=2?返回主菜单录入课程录入完成Y结束图6录入课程信息流程图实现该功能代码如下。voidkeyboardc()/录入课程子函数structcouse*p1,*p2;N1=0;p1=p2=(structcouse*)malloc(sizeof(structcouse);printf("课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限n");scanf("%d%s%s%d%d%d%d%d&quo
16、t;,&p1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);p1->nelepeo=0;head1=NULL;while(p1->num1!=0)N1=N1+1;if(N1=1)head1=p1;elsep2->next=p1;p2=p1;p1=(structcouse*)malloc(sizeof(structc
17、ouse);scanf("%d%s%s%d%d%d%d%d",&p1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);p1->nelepeo=0;p2->next=NULL;voidinputc()/录入课程主函数inti;printf("ttt录入课程信息n");printf(&q
18、uot;n1.录入课程n");printf("2.返回主菜单n");printf("请选择(12):n");scanf("%d",&i);switch(i)case(1):keyboardc();break;case(2):break;7.3课程管理课程管理有三个选项,新增课程,删除课程和返回主菜单。课程管理界面设计如图7所示。图7课程管理界面课程管理可以选择增添或删除课程,若输入课程格式错误会显示错误,用户需要重新输入程管理流程图如图8所示。输入课程信息新增或删除课程开始N结束显示失败保存Y图8课程管理流程图实现该
19、功能代码如下。voiddelc(intnum1)/课程管理子函数(删除课程)structcouse*p1,*p2;if(head1=NULL)printf("n没有课程,无法删除!n");gotoend;p1=head1;while(num1!=p1->num1&&p1->next!=NULL)p2=p1;p1=p1->next;if(num1=p1->num1)if(p1=head1)head1=p1->next;elsep2->next=p1->next;printf("已删除该编号课程!n"
20、);N1=N1-1;elseprintf("无该编号的课程!n");end:;voidmanagementc()/课程管理主函数structcouse*incouse;inti,num1;printf("ttt课程信息管理n");printf("1.新增课程n");printf("2.删除课程n");printf("3.返回主菜单n");printf("请选择(13):n");scanf("%d",&i);switch(i)case(1):inco
21、use=(structcouse*)malloc(sizeof(structcouse);printf("课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限n");scanf("%dn%sn%sn%dn%dn%dn%dn%dn%dn",&incouse->num1,&incouse->name1,&incouse->xinzhi,&incouse->ztime,&incouse->stime,&incouse->score,&incouse->
22、;date,&incouse->Melepeo);incouse->nelepeo=0;insertc(incouse);break;case(2):printf("请输入要删除课程的编号:n");scanf("%d",&num1);delc(num1);break;case(3):break;7.4学生信息管理学生信息管理可选新增或删除学生信息,若都不操作则可选返回主菜单。学生信息管理界面设计如图9所示。图9学生信息管理界面学生信息管理有增加和删除学生信息,若选择此项,则会提示用户输出入相关信息,若输入格式错误则会有提示错误
23、信息,当操作完成后会退回主菜单界面。学生信息管理界面流程图如图10所示。开始保存信息输入错误输入姓名,考号新增学生信息或删除学生信息退出结束NY图10学生信息管理界面流程图实现该功能代码如下。voidinserts(structstudent*incouse)/学生信息管理子函数(填加学生信息)structstudent*p0,*p1,*p2;p1=head2;p0=incouse;if(head2=NULL)head2=p0;p0->next=NULL;elsewhile(p0->num2>p1->num2)&&(p1->next!=NULL)p
24、2=p1;p1=p1->next;if(p0->num2<=p1->num2)if(head2=p1)head2=p0;elsep2->next=p0;p0->next=p1;elsep1->next=p0;p0->next=NULL;N2=N2+1;voiddels(intnum2)/学生信息管理子函数(删除学生信息)structstudent*p1,*p2;if(head2=NULL)printf("n没有该学生信息,无法删除!n");gotoend;p1=head2;while(num2!=p1->num2&
25、;&p1->next!=NULL)p2=p1;p1=p1->next;if(num2=p1->num2)if(p1=head2)head2=p1->next;elsep2->next=p1->next;printf("已删除该学生信息!n");N2=N2-1;elseprintf("无该学号的学生!n");end:;voidmanagements()/学生信息管理主函数structstudent*incouse;inti,num2;printf("ttt学生信息管理n");printf(&q
26、uot;1.新增学生信息n");printf("2.删除学生信息n");printf("3.返回主菜单n");printf("请选择(13):n");scanf("%d",&i);switch(i)case(1):incouse=(structstudent*)malloc(sizeof(structstudent);incouse->nelen=0;incouse->nelenum0=0;printf("学生学号t学生姓名n");scanf("%d%s&
27、quot;,&incouse->num2,incouse->name2);inserts(incouse);break;case(2):printf("请输入要删除学生的学号:n");scanf("%d",&num2);dels(num2);break;case(3):break;7.5学生选课学生选课可以查询已选和可选课程,此外还有返回主菜单选项学生选课界面设计如图11所示。图11学生选课界面进入选课选项则会提示用户输入学号然后再进行选课。若不选则可以退回主菜单。学生选课流程图如图12所示。开始学生选课输入nn=1?Y查询可
28、选课程输入学号Nn=2?Y返回主菜单查询完成查询完成n=3?N输入学号查询已选课程NNY结束图12学生选课流程图实现该功能代码如下。选课程序如下。用户要选课时,查询可选课程后会提示输入所要选的课程的编号,然后程序会根据所选的课程编号将所选课程信息储存。voidelect(structstudent*s)/选课structcouse*p;intnum1,i;printf("请输入要选课的编号:n");scanf("%d",&num1);for(i=0;s->nelenumi!=0;i+);s->nelenumi=num1;(s->
29、nelen)+;p=head1;while(p->num1!=num1)p=p->next;(p->nelepeo)+;voidcheak()/学生选课子函数(查询可选课程)chare;structcouse*c;structstudent*s;intnum2,i,j=0,t=0;printf("请输入你的学号:");scanf("%d",&num2);s=head2;while(s->num2!=num2&&s->next!=NULL)s=s->next;if(s->num2!=num2
30、)printf("不存在你的信息,请进入主菜单录入你的信息!n");gotoend;c=head1;printf("你的可选课程编号:n");while(c!=NULL)for(t=0,i=0;s->nelenumi!=0;i+)if(c->num1=s->nelenumi)t=1;if(t=0&&(c->nelepeo!=c->Melepeo)printf("%dn",c->num1);j+;c=c->next;if(j=0)printf("你已选完所有课程,无法再
31、多选!n");gotoend;printf("选课(y/n)?:n");getchar();e=getchar();i=0;while(e='y')elect(s);printf("继续选课(y/n)?:n");getchar();e=getchar();end:;退课程序如下。首先输入要退掉课程的编号,若该课程存在,则显示退课成功,若不存在,则失败。voidback(structstudent*p)/退课structcouse*p1;intnum1,i,j;printf("请输入你要退掉的课程编号:n");
32、scanf("%d",&num1);p1=head1;while(p1->num1!=num1)p1=p1->next;for(i=0;p->nelenumi!=num1;i+);for(j=i;p->nelenumj!=0;j+)p->nelenumj=p->nelenumj+1;p->nelenum-j=0;(p1->nelepeo)-;printf("退课成功!n");查询已选课程代码如下。首先输入学号,若系统中无记录,则会提示不存在该信息,请用户录入该信息,然后用goto语句跳转到主菜单界面
33、。若有记录,则继续输入课程编号,若未选此课,则会提示你还没有选这个课程。voidhcheak()/学生选课子函数(查询已选课程)charc;structcouse*p0;structstudent*p;intnum2,i,f=0;printf("请输入学号:n");scanf("%d",&num2);p=head2;while(p->num2!=num2&&p!=NULL)p=p->next;if(p=NULL)printf("不存在你的信息,请回主菜单录入信息:n");gotoend;printf
34、("已选课程编号:n");if(p->nelenum0=0)printf("你还没选课!n");gotoend;for(i=0;p->nelenumi!=0;i+)printf("%dn",p->nelenumi);p0=head1;while(p0->num1!=p->nelenumi)p0=p0->next;f=f+p0->score;printf("总学分:%dn",f);printf("是否进行退课(y/n)?");getchar();c=get
35、char();while(c='y')back(p);printf("继续退课(y/n)?");getchar();c=getchar();(p->nelen)-;end:;选课主界面程序如下。用printf输出界面,用switch语句选择调用对应的函数以实现选择各种情况。voidelective()/学生选课主函数inti;printf("ttt学生选课n");printf("1.查询可选课程n");printf("2.查询已选课程n");printf("3.返回主菜单n");printf("请输入(13):n");scanf("%d",&i);switch(i)case(1):cheak();break;case(2):hcheak();break;case(3):break;8系统调试和测试8.1调试在调试程序的过程中,一方面遇到了一些编程序时的通病,比如经常性的漏掉了语句尾的分号,还偶尔的漏掉大括号,导致程序不能正常编译。另
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖尿病肾衰竭护理计划
- 2025年扬州仪征市扬子文旅控股集团有限公司招聘笔试参考题库含答案解析
- 2025年绍兴市镜湖新区城市建设发展有限公司招聘笔试参考题库含答案解析
- 语言教学中的课程设计
- 2025伊春市乌翠区抚育河经营所社区工作者考试真题
- 2025双鸭山市四方台区集贤街道社区工作者考试真题
- 2025台州市椒江区章安街道社区工作者考试真题
- 泌尿外科护理进修
- 要下雨了模拟课件
- 我爱我们班教学设计
- 《工程科学与技术》论文投稿模板
- 精美乒乓球运动活动策划方案PPT
- GB/T 18050-2000潜油电泵电缆试验方法
- GB 7793-2010中小学校教室采光和照明卫生标准
- FZ/T 24011-2019羊绒机织围巾、披肩
- 金螳螂企业管理课件
- 炊事机械安全操作规程
- 最新版教育心理学课件3-成就动机
- 离合器-汽车毕业设计-设计说明书
- 中国民间美术年画-完整版PPT
- 2022年《趣味接力跑》教案
评论
0/150
提交评论