版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉理工大学华夏学院课程设计报告书课程名称:C 课程设计题目学生选课系统程序设计系名:_信息工程系 _专业班级:_姓 名:_学 号:_指导教师: _成 绩:_2016 年_3_月日课程设计任务书学生姓名: _ 专业班级: _指导教师: _ 工作单位: _设计题目:学生选课系统程序设计 初始条件:学生选课系统能提供学生选课,以及学生和课程信息管理等一系列功能。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、任务描述假定有 n n 门课程,每门课程有课程编号, 课程名称,课程性质,学时,授课学时, 实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得
2、少于1515)自由选课。试设计一个选修课程系统,使之能提供以下功能:(1 1)系统以菜单方式工作(2 2)课程信息和学生选课信息录入功能(课程信息用文件保存)(3 3)课程信息浏览功能(4 4)查询功能(5 5)按学分查询(6 6)某门课程学生选修情况(可选项)2、本课程涉及的知识点变量的定义、输入和输出函数、结构体类型的定义、结构体数组、循环语句、选择语句,文件的操作等。设计报告撰写格式要求:一、课程设计说明书(或报告书)正文内容【设计题目】 例如:学生选课系统【幵发环境】硬件环境:微机系列,内存在1G以上,软件环境:Microsoft WindowsXP开发工具 】 Microsoft V
3、isual C+ 6.0【需求分析 】分析阐述用户的需要以及要实现的程序应具有什么样的功能。 【系统总体设计 】在明确了所要解决的问题后,很自然地就要提出自己解决问题的思路和方案。 让读者了解方案的总体设计和关键技术。要阐述自己的设计方案,说明为什么要选择或设计这样的方案。具体包括:系统总的设计思路,功能模块图; 使用的设计软硬件环境和开发技术和平台等。【系统详细设计 】 在这部分中,应该具有相关关键实现技术(如使用什么库函数,使用什么循环结构等)。【系统调试和测试 】调试:介绍设计过程中遇到的问题和解决方法。 测试:介绍如何测试系统,测试中发现的问题和解决方案。【结束语 】 这部分篇幅不大,
4、对整个设计中做的工作、获得的成果、心得体会等做一个简单小结。参考文献 】罗列在设计过程中查阅的文献名称注意:参考文献罗列的格式为资料编号?作者姓名?文献或期刊名称?出版社名称,文献的出版时间或期刊的期号例如:文献1谭浩强.,C程序设计(第二版)M,北京:清华大学出版社,2001年期刊2 于振海.office XP网上数据存取.计算机应用文摘J ,2003,24; 69 (页)二、课程设计说明书(或报告书)正文的书写格式简介一、正文标题层次 正文题序层次是文章结构的框架,一般采用社会通用的论文书写形式。即章条序码统一用阿拉伯数字表示,题序层次可以分为若干级, 各级号码之间加小圆点,末尾一级的后面
5、不加小圆点,层次分级一般不超过四级为宜,示例如下:第一级(章)123第二级(条)1.12.13.11.22.23.2第三级(条)1.1.12.1.13.1.11.1.2 2.1.2 3.1.21.2.12.2.13.2.11.2.2 2.2.2 3.2.2 二、 表格每个表格应有自己的表序与表题,表序与表题间空一格。例如:表1.1 XXXX ,且表题与表序应写在表格的上方正中处。三、 插图插图图面要整齐、美观,插图应与正文呼应,不能脱节。每幅插图应 有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中 处。四、公式 公式应另起一行写在稿纸的中央时间安排:星期一星期二星期三星期四
6、星期五第2周第1-4节第3-4节第1-4节第1-2节第1-4节地点现教221现教221现教221现 教221现教221课程设计考核及评分标准1.系统完成任务:50分2.各种技术的综合应用:10分3.回答提问情况:20分4.设计报告:20分1设计题目2开发环境 . 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录
7、入课程信息界面 . 67.2.2录入课程信息模块图 . 67.2.3录入课程信息流程图 . 77.2.4录入课程信息代码 . 77.3课程管理 . 87.3.1课程管理界面 . 87.3.2课程管理模块图 . 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学生选课
8、代码 . 188系统调试和测试 . 228.1调试 . 228.2测试 . 259结束语 . 2510参考文献 . 251设计题目学生选课系统2开发环境2.1硬件环境微机系列,内存在 1G 以上2.2软件环境Win7系统3开发工具Microsoft Visual C+ 6.04完成时间2016年 2月 29日 2016年3 月4日5需求分析用户需求如下:假定有 n 门课程,每门课程有课程编号, 课程名称, 课程性质,学时,授课学时,实验或上机学时,学分,幵课学期等信息,学生可按要求(如 总学分不得少于15)自由选课。试设计一个选修课程系统。故此,经过分析后我觉得程序应该具有以下功能:(1)系统
9、以菜单方式工作(2)课程信息和学生选课信息录入功能(3)课程信息浏览功能(4)查询功能(5)按学分查询6系统总体设计系统由哪几个功能模块构成,给出功能模块图。C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下六大模块。选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。模块图如下图1所示菜单选择模完成选择模另外,程序用了两个结构体和五个全局变量 N1,N2,kk1,kk2,kk3 。五个全局变量是用来控制输入数据的循环的。两个结构体分别是课程信息结构体:struct couse/课程信息结构体int num1;/ 课程编号c
10、har name120;/ 课程名称char xinzhi30;/ 课程性质int ztime;/课程总学时int stime;/授课学时int shiyan;/实验学时int score;/学分long int date;/开学学期int nelepeo;/课程已选人数int Melepeo;/课程人数上限struct couse *next;和存储学生信息的结构体:struct student/学生信息结构体int num2;char name220;int nelenum50;/ 已选课程编号int nelen;/ 已选课程数量struct student * next;void Ms(
11、)for(kk1=0;kk11100;kk1+)for(kk2=0;kk21200;kk2+)for(kk3=0;kk31200;kk3+);1-6个系统7系统详细设计7.1系统主菜单系统界面设计图包括六个选项,用户可根据自己的需求选择不同的选项。系统界面设计图如图 2所示。图2系统界面设计图系统模块图分为六大模块。分别是录入课程信息模块,课程信息管理模块,录入学生信息模块,学生信息管理模块,学生选课模块和退出系统模块。系统功能模块图如下图 3所示。幵始定义n需要用户从,则会退出系统。主菜单流程图如图4所示prin tf(t*n);prin tf(t*调用完成结束4系统总流程图该程序实现代码如
12、下。int mai n()/主函数int i;sta比prin tf(nttt欢迎使用学生选课系统!n);prin tf(n);printf(t主菜单:n);*prin tf(t*n);1.录入课程信息*n);printf(t*n);printf(t*n);printf(t*n);printf(t*n);printf(t*n);printf(t*n);2. 课 程 信 息 管 理3. 录 入 学 生 信 息4. 学 生 信 息 管 理5. 学 生 选 课6. 退 出 系 统printf(t*printf(n 请输入菜单选项 (16):);scanf(%d,&i);if(i6)printf( 输
13、入错误 , 请重输 :n);goto start;switch(i)case 1:*n);system(cls);inputc();goto start;break;case 2:system(cls); managementc(); goto start;break;case 3:system(cls);inputs();goto start;break;case 4:system(cls); managements(); goto start;break;case 5:system(cls);elective();goto start;break;case 6:system(cls);pr
14、intf( 感谢使用本系统 !nn 再见 !n);return 0;7.2录入课程信息录入课程信息有两个选项,录入课程和返回主菜单。录入课程信息界面设计如图 5 所示图 5 录入课程信息界当用户进入录入课程后,会有两个选项,录入课程和返回主菜单。录实现该功能代码如下。void keyboardc()录入课程子函数struct couse *p1,*p2;N1=0;p1=p2=(struct couse*)malloc(sizeof(struct couse);prin tf(课程编号课程名称 课程性质总学时 授课学时 实验学时学分 幵课学期 人数上限n);scanf(%d%s%s%d%d%d%
15、d%d,&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;else p2-next=p1;p2=p1;p1=(struct couse * )malloc(sizeof(struct couse);scanf(%d%s%s%d%d%d%d%d,&p1-num1,p1-name1,&p1-xinzhi,&p1-ztime,&p1-st
16、ime,&p1-shiyan,&p1-score,&p1-date,&p1-Melepeo);p1-nelepeo=0;p2-next=NULL;void inputc()/ 录入课程主函数int i;printf(ttt 录入课程信息 n);printf(n1. 录入课程 n);printf(2.返回主菜单 n);printf( 请选择 (12):n);scanf(%d,&i);switch(i)case(1):keyboardc();break;case(2):break;7.3课程管理课程管理有三个选项,新增课程,删除课程和返回主菜单。课程管理界面设计如图7所示图7课程管理界面课程管理可
17、以选择增添或删除课程,若输入课程格式错误会显示错误,void delc(int num1)课程管理子函数(删除课程)struct couse *p1,*p2;if(head1=NULL)printf(n没有课程,无法删除!n);goto end;p1=head1;while(num1!=p1-num1 & p1-next!=NULL)p2=p1; p1=p1-next;if(num1=p1-num1)if(p1=head1) head1=p1-next;else p2-next=p1-next;printf( 已删除该编号课程 !n);N1=N1-1;else printf( 无该编号的课程
18、!n);end:;void managementc()/ 课程管理主函数struct couse * incouse;int i,num1;printf(ttt 课程信息管理 n);printf(1.新增课程 n);printf(2.删除课程 n);printf(3. 返回主菜单 n);printf( 请选择 (13):n);scanf(%d,&i);switch(i)case(1):incouse=(struct couse *)malloc(sizeof(struct couse);printf( 课程编号 课程名称 课程性质 总学时 授课学时实验学时 学分 开课学期 人数上限 n);sc
19、anf(%dn%sn%sn%dn%dn%dn%dn%dn%dn,&incouse-num1,&incouse-name1,&incouse-xinzhi,&incouse-ztime,&incouse-stime,& incouse-score,&incouse-date,&incouse-Melepeo);incouse-nelepeo=0;insertc(incouse);break;case(2):printf( 请输入要删除课程的编号 :n);scanf(%d,&num1);delc(num1);break;case(3):break;7.4学生信息管理学生信息管理可选新增或删除学生信
20、息,若都不操作则可选返回主菜单。学生信息管理界面设计如图 9所示。图9学生信息管理界面学生信息管理有增加和删除学生信息,若选择此项,则会提示用户输 出入相关信息,若输入格式错误则会有提示错误信息,当操作完成后会退 回主菜单界面。学生信息管理界面流程图如图 10所示。pO二in couse;if(head2=NULL)head2=p0;p0-next=NULL;elsewhile(p0-num2 p1-num2) & (p1-next!=NULL)p2=p1;p1=p1-next;if(p0-num2 num2)if(head2=p1) head2=p0;else p2-next=p0;p0-n
21、ext=p1;elsep1-next=p0;p0-next=NULL;N2=N2+1;void dels(int num2)/ 学生信息管理子函数(删除学生信息 ) struct student *p1,*p2;if(head2=NULL)printf(n 没有该学生信息 , 无法删除 !n);goto end;p1=head2;while(num2!=p1-num2 & p1-next!=NULL) p2=p1;p1=p1-next;if(num2=p1-num2)if(p1=head2) head2=p1-next;else p2-next=p1-next;printf( 已删除该学生信息
22、 !n);N2=N2-1;else printf( 无该学号的学生 !n); end:;void managements()/ 学生信息管理主函数struct student * incouse;int i,num2;printf(ttt学生信息管理 n);printf(1.新增学生信息 n);printf(2.删除学生信息 n);printf(3.返回主菜单 n);printf(请选择 (13):n);scanf(%d,&i);switch(i)case(1):incouse=(struct student *)malloc(sizeof(structstudent);incouse-nel
23、en=0;incouse-nelenum0=0;printf(学生学号 t 学生姓名 n);scanf(%d%s,&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所示。查
24、询可选课程实现该功能代码如下选课程序如下。用户要选课时,查询可选课程后会提示输入所要选的课程的编号,然后程序会根据所选的课程编号将所选课程信息储存。void elect(struct student * s)/选课struct couse * p;int num1,i;printf( 请输入要选课的编号 :n);scanf(%d,&num1);for(i=0;s-nelenumi!=0;i+);s-nelenumi=num1;(s-nelen)+;p=head1;while(p-num1!=num1) p=p-next;(p-nelepeo)+;void cheak()/ 学生选课子函数 (
25、查询可选课程 )char e;struct couse * c;!n);struct student * s;int num2,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)printf( 不存在你的信息 , 请进入主菜单录入你的信息 goto end;c=head1;printf( 你的可选课程编号 :n);while(c!=NULL)for(t=0,i=0;s-nelenumi!=0;i+)if(c-num1=s
26、-nelenumi) t=1;!n);if(t=0 & (c-nelepeo!=c-Melepeo)printf(%dn,c-num1);j+;c=c-next;if(j=0)printf( 你已选完所有课程,无法再多选goto end;printf( 选课 (y/n)?:n);getchar();e=getchar();i=0;while(e=y)elect(s);printf( 继续选课 (y/n)?:n);getchar();e=getchar();end:; 退课程序如下。首先输入要退掉课程的编号,若该课程存在,则显示退课成功,若不存在,则失败。void back(struct stu
27、dent * p)/ 退课struct couse * p1;int num1,i,j;printf( 请输入你要退掉的课程编号 :n);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);查询已选课程代码如下。首先输入学号,若系统中无记录,则会提示 不存在该信息, 请用户录入该信息, 然
28、后用 goto 语句跳转到主菜单界面 若有记录,则继续输入课程编号,若未选此课,则会提示你还没有选这个 课程。void hcheak()/ 学生选课子函数(查询已选课程 )char c;struct couse * p0;struct student * p;int num2,i,f=0;printf( 请输入学号 :n);scanf(%d,&num2);p=head2;while(p-num2!=num2 & p!=NULL) p=p-next;if(p=NULL)printf( 不存在你的信息 , 请回主菜单录入信息 :n);goto end;printf( 已选课程编号 :n);if(p
29、-nelenum0=0)printf( 你还没选课 !n);printf(继续退课 (y/n)?);goto end; 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=getchar();while(c=y)back(p);getchar();c=getchar();(p-nelen)-;end:;选课主界面程序如下。用
30、 printf 输出界面,用 switch 语句选择调用 对应的函数以实现选择各种情况。void elective()/ 学生选课主函数int i;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 调试在调试程序的过程中,一方面遇到了一些编程序时的通病,比如经常 性的漏掉了语句尾的分号, 还偶尔的漏掉大括号, 导致程序不能正常编译。 另一方面在编写函数模块时,由于之前设计考虑得不足,会有一些功能无 法实现,最后只有删掉这些无法实现的设计模块。录入课程信息如下图 13 所示。图 13 录入课程信息课程信息管理如下图14所示课程信息管理i 新壇课程 灣孃单请选择Ci3:张程编号课程名称课程性质总学时授课学时实验学时学分幵课学期人数上限图14新增课程删除课程如下图15所示图15删除课程 录入学生信息如下图16所示。图16录入学生信息 新怎学生信息如下图17所示。图17新增学生信息 删除学生信息如下图18所示。图18删除学生信息 查询可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工转岗培训课件
- 2025年油份测定仪项目合作计划书
- 护理接单服务成本控制与效益分析
- 护理服务定价的经济学原理
- 老年护理评估中的感染风险评估
- 内科护理安全风险管理
- 员工回炉培训课件
- 肝癌患者的皮肤护理
- 儿童早期口腔护理
- 吸氧说课课件
- 小学苏教版科学二年级上册(2024)知识点梳理及2025秋期末测试卷
- 2024-2025学年山东省烟台市招远市一年级(上)期末数学试卷
- 初中安全教育教案全集
- 培训学校教师安全教育课件
- 2025年12月“第一议题”学习内容清单
- 2025年关于意识形态工作自检自查报告
- 观赏鸟的营养需要
- 财税托管托管合同范本
- 发现自己的闪光点课件
- 2025建筑节能工程监理实施细则
- 2025-2026学年苏教版(新教材)小学科学三年级上册科学期末复习卷及答案
评论
0/150
提交评论