C语言课程设计学生选课系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scanf("%d",&num2);
dels(num2);
break;
}
case(3):break;
}
}
学生选课
学生选课可以查询已选和可选课程,此外还有返回主菜单选项学生选课界面设计如图11所示。
图11 学生选课界面
进入选课选项则会提示用户输入学号然后再进行选课。若不选则可以退回主菜单。学生选课流程图如图12所示。
printf("请输入(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
8
调试
在调试程序的过程中,一方面遇到了一些编程序时的通病,比如经常性的漏掉了语句尾的分号,还偶尔的漏掉大括号,导致程序不能正常编译。另一方面在编写函数模块时,由于之前设计考虑得不足,会有一些功能无法实现,最后只有删掉这些无法实现的设计模块。
图9 学生信息管理界面
学生信息管理有增加和删除学生信息,若选择此项,则会提示用户输出入相关信息,若输入格式错误则会有提示错误信息,当操作完成后会退回主菜单界面。学生信息管理界面流程图如图10所示。
N
Y
图10 学生信息管理界面流程图
实现该功能代码如下。
void inserts(struct student * incouse)增学生信息\n");
Y
N
Y
N源自文库
N
Y
图12 学生选课流程图
实现该功能代码如下。
选课程序如下。用户要选课时,查询可选课程后会提示输入所要选的课程的编号,然后程序会根据所选的课程编号将所选课程信息储存。
void elect(struct student * s)询可选课程\n");
printf("2.查询已选课程\n");
printf("3.返回主菜单\n");
printf("课程编号 课程名称 课程性质 总学时 授课学时 实验学时 学分 开课学期 人数上限\n");
scanf("%d\n%s\n%s\n%d\n%d\n%d\n%d\n%d\n%d\n",&incouse->num1,&incouse->name1,&incouse->xinzhi,&incouse->ztime,&incouse->stime,&incouse->score,&incouse->date,&incouse->Melepeo);
(2)课程信息和学生选课信息录入功能(课程信息用文件保存)
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
(6)某门课程学生选修情况(可选项)
2、本课程涉及的知识点
变量的定义、输入和输出函数、结构体类型的定义、结构体数组、循环语句、选择语句,文件的操作等。
设计报告撰写格式要求:
一、课程设计说明书(或报告书)正文内容
查询已选课程如下图20所示。
图20 查询已选课程
退出系统如下图21所示。
图21 退出系统
测试
测试过程中测试了菜单的一些功能是否能正常实现以及输入数据是否能储存。
图22 课程数据储存
图23 存储学生信息
图24 删除学生信息
9
经过几天的努力,终于是完成了这次的c课程设计,这期间我碰到了很多的问题,比如说在刚开始的时候,完全没有思路,不知到该从何入手,后来慢慢的琢磨,才想到要先写出一份设计方案出来,然后每个功能用一个函数来实现,即是c里面的模块化设计。但是,这并没有想象之中的一帆风顺,其间在我发现原先设计的一些功能根本无法用函数实现,于是又只能转过头去修改设计方案,删掉一些不能实现的功能,以此完善来设计。此外,有一些功能的实现也不是那么容易,比如说从二级菜单返回主菜单这个程序,我想了很久,试了几种方法,但都不行,最后只有用goto语句来实现这个功能。还有一些主要功能以我个人能力确实无法实现,所以只能从网上找答案了。总的来说,这个设计虽然并不是很完美,但我却在设计的过程中学到了很多东西,以前有些不懂的也渐渐的搞懂了。所以对于这次的c设计我还是比较满意的。
1设计题目
学生选课系统
2开发环境
硬件环境
微机系列,内存在1G以上
软件环境
Win7系统
3
Microsoft Visual C++
4完成时间
2016年2月29日—2016年3月4日
5
用户需求如下:
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统。
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("请输入要删除课程的编号:\n");
scanf("%d",&num1);
delc(num1);
break;
}
case(3):break;
}
}
学生信息管理
学生信息管理可选新增或删除学生信息,若都不操作则可选返回主菜单。学生信息管理界面设计如图9所示。
录入课程信息如下图13所示。
图13 录入课程信息
课程信息管理如下图14所示。
图14新增课程
删除课程如下图15所示。
图15删除课程
录入学生信息如下图16所示。
图16录入学生信息
新怎学生信息如下图17所示。
图17新增学生信息
删除学生信息如下图18所示。
图18删除学生信息
查询可选课程如下图19所示。
图19 查询可选课程
注意:参考文献罗列的格式为
资料编号作者姓名文献或期刊名称出版社名称,文献的出版时间或期刊的期号
例如:文献 [1] 谭浩强.,C程序设计(第二版)[M],北京:清华大学出版社,2001年
期刊 [2] 于振海.office XP网上数据存取.计算机应用文摘[J],2003,24;69(页)
二、课程设计说明书(或报告书)正文的书写格式简介
switch(i)
{
case(1):keyboardc();break;
case(2):break;
}
}
课程管理
课程管理有三个选项,新增课程,删除课程和返回主菜单。课程管理界面设计如图7所示。
图7课程管理界面
课程管理可以选择增添或删除课程,若输入课程格式错误会显示错误,用户需要重新输入程管理流程图如图8所示。
1.2.1
1.2.2…
2.1.1
2.1.2…
2.2.1
2.2.2…
3.1.1
3.1.2…
3.2.1
3.2.2…
……
二、表格 每个表格应有自己的表序与表题,表序与表题间空一格。
例如:表XXXX ,且表题与表序应写在表格的上方正中处。
三、插图 插图图面要整齐、美观,插图应与正文呼应,不能脱节。每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。
武汉理工大学华夏学院
课程设计报告书
课程名称:C课程设计
题 目:学生选课系统程序设计
系 名:信息工程系
专业班级:
姓 名:
学号:
指导教师:
成 绩:
2016年3月4日
课程设计任务书
学生姓名:专业班级:
指导教师:工作单位:
设计题目:学生选课系统程序设计
初始条件:
学生选课系统能提供学生选课,以及学生和课程信息管理等一系列功能。
故此,经过分析后我觉得程序应该具有以下功能:
(1)系统以菜单方式工作
(2)课程信息和学生选课信息录入功能
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
6
系统由哪几个功能模块构成,给出功能模块图。C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下六大模块。
选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。模块图如下图1所示。
printf("2.删除学生信息\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
case 5:
{
system("cls");
elective();
goto start;
break;
}
case 6:
{
system("cls");
printf("感谢使用本系统!\n\n再见!\n");
}
}
return 0;
}
录入课程信息
录入课程信息有两个选项,录入课程和返回主菜单。录入课程信息界面设计如图5所示。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、任务描述
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作
四、公式 公式应另起一行写在稿纸的中央
时间安排:
周次
星期一
星期二
星期三
星期四
星期五
第2周
第1-4节
第3-4节
第1-4节
第1-2节
第1-4节
地点
现教221
现教221
现教221
现教221
现教221
课程设计考核及评分标准
1. 系统完成任务:50分
2. 各种技术的综合应用:10分
3、回答提问情况:20分
4. 设计报告:20分
printf("\n请输入菜单选项(1~6):");
scanf("%d",&i);
if(i<1 || i>6)
{
printf("输入错误,请重输:\n");
goto start;
}
switch(i)
{
case 1:
{
system("cls");
inputc();
goto start;
break;
}
case 2:
N
Y
图8课程管理流程图
实现该功能代码如下。
void delc(int num1)增课程\n");
printf("2.删除课程\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
一、正文标题层次 正文题序层次是文章结构的框架,一般采用社会通用的论文书写形式。即章条序码统一用阿拉伯数字表示,题序层次可以分为若干级,各级号码之间加小圆点,末尾一级的后面不加小圆点,层次分级一般不超过四级为宜,示例如下:
第一级(章)
1
2
3
……
第二级(条)
…
…
…
……
第三级(条)
1.1.1
1.1.2…
图1 系统功能模块图
另外,程序用了两个结构体和五个全局变量N1,N2,kk1,kk2,kk3。五个全局变量是用来控制输入数据的循环的。两个结构体分别是课程信息结构体:
struct couse 入课程信息 *\n");
printf("\t* 2.课程信息管理 *\n");
printf("\t* 3.录入学生信息 *\n");
printf("\t* 4.学生信息管理 *\n");
printf("\t* 5.学生选课 *\n");
printf("\t* 6.退出系统 *\n");
printf("\t* *\n");
printf("\t*******************************************************\n");
图5录入课程信息界
当用户进入录入课程后,会有两个选项,录入课程和返回主菜单。录入课程信息流程图如图6所示。
Y
N
N
Y
图6 录入课程信息流程图
实现该功能代码如下。
void keyboardc()入课程\n");
printf("2.返回主菜单\n");
printf("请选择(1~2):\n");
scanf("%d",&i);
{
system("cls");
managementc();
goto start;
break;
}
case 3:
{
system("cls");
inputs();
goto start;
break;
}
case 4:
{
system("cls");
managements();
goto start;
break;
}
【系统详细设计】
在这部分中,应该具有相关关键实现技术(如使用什么库函数,使用什么循环结构等)。
【系统调试和测试】调试:介绍设计过程中遇到的问题和解决方法。
测试:介绍如何测试系统,测试中发现的问题和解决方案。
【结束语】这部分篇幅不大,对整个设计中做的工作、获得的成果、心得体会等做一个简单小结。
【参考文献】罗列在设计过程中查阅的文献名称
incouse->nelen=0;
incouse->nelenum[0]=0;
printf("学生学号\t学生姓名\n");
scanf("%d%s",&incouse->num2,incouse->name2);
inserts(incouse);
break;
}
case(2):
{
printf("请输入要删除学生的学号:\n");
【设计题目】例如:学生选课系统
【开发环境】硬件环境:微机系列,内存在1G以上,软件环境:Microsoft WindowsXP
【开发工具】 Microsoft Visual C++
【完成时间】2016-2【需求分析】分析阐述用户的需要以及要实现的程序应具有什么样的功能。
【系统总体设计】
在明确了所要解决的问题后,很自然地就要提出自己解决问题的思路和方案。让读者了解方案的总体设计和关键技术。要阐述自己的设计方案,说明为什么要选择或设计这样的方案。具体包括:系统总的设计思路,功能模块图;使用的设计软硬件环境和开发技术和平台等。
dels(num2);
break;
}
case(3):break;
}
}
学生选课
学生选课可以查询已选和可选课程,此外还有返回主菜单选项学生选课界面设计如图11所示。
图11 学生选课界面
进入选课选项则会提示用户输入学号然后再进行选课。若不选则可以退回主菜单。学生选课流程图如图12所示。
printf("请输入(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
8
调试
在调试程序的过程中,一方面遇到了一些编程序时的通病,比如经常性的漏掉了语句尾的分号,还偶尔的漏掉大括号,导致程序不能正常编译。另一方面在编写函数模块时,由于之前设计考虑得不足,会有一些功能无法实现,最后只有删掉这些无法实现的设计模块。
图9 学生信息管理界面
学生信息管理有增加和删除学生信息,若选择此项,则会提示用户输出入相关信息,若输入格式错误则会有提示错误信息,当操作完成后会退回主菜单界面。学生信息管理界面流程图如图10所示。
N
Y
图10 学生信息管理界面流程图
实现该功能代码如下。
void inserts(struct student * incouse)增学生信息\n");
Y
N
Y
N源自文库
N
Y
图12 学生选课流程图
实现该功能代码如下。
选课程序如下。用户要选课时,查询可选课程后会提示输入所要选的课程的编号,然后程序会根据所选的课程编号将所选课程信息储存。
void elect(struct student * s)询可选课程\n");
printf("2.查询已选课程\n");
printf("3.返回主菜单\n");
printf("课程编号 课程名称 课程性质 总学时 授课学时 实验学时 学分 开课学期 人数上限\n");
scanf("%d\n%s\n%s\n%d\n%d\n%d\n%d\n%d\n%d\n",&incouse->num1,&incouse->name1,&incouse->xinzhi,&incouse->ztime,&incouse->stime,&incouse->score,&incouse->date,&incouse->Melepeo);
(2)课程信息和学生选课信息录入功能(课程信息用文件保存)
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
(6)某门课程学生选修情况(可选项)
2、本课程涉及的知识点
变量的定义、输入和输出函数、结构体类型的定义、结构体数组、循环语句、选择语句,文件的操作等。
设计报告撰写格式要求:
一、课程设计说明书(或报告书)正文内容
查询已选课程如下图20所示。
图20 查询已选课程
退出系统如下图21所示。
图21 退出系统
测试
测试过程中测试了菜单的一些功能是否能正常实现以及输入数据是否能储存。
图22 课程数据储存
图23 存储学生信息
图24 删除学生信息
9
经过几天的努力,终于是完成了这次的c课程设计,这期间我碰到了很多的问题,比如说在刚开始的时候,完全没有思路,不知到该从何入手,后来慢慢的琢磨,才想到要先写出一份设计方案出来,然后每个功能用一个函数来实现,即是c里面的模块化设计。但是,这并没有想象之中的一帆风顺,其间在我发现原先设计的一些功能根本无法用函数实现,于是又只能转过头去修改设计方案,删掉一些不能实现的功能,以此完善来设计。此外,有一些功能的实现也不是那么容易,比如说从二级菜单返回主菜单这个程序,我想了很久,试了几种方法,但都不行,最后只有用goto语句来实现这个功能。还有一些主要功能以我个人能力确实无法实现,所以只能从网上找答案了。总的来说,这个设计虽然并不是很完美,但我却在设计的过程中学到了很多东西,以前有些不懂的也渐渐的搞懂了。所以对于这次的c设计我还是比较满意的。
1设计题目
学生选课系统
2开发环境
硬件环境
微机系列,内存在1G以上
软件环境
Win7系统
3
Microsoft Visual C++
4完成时间
2016年2月29日—2016年3月4日
5
用户需求如下:
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统。
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("请输入要删除课程的编号:\n");
scanf("%d",&num1);
delc(num1);
break;
}
case(3):break;
}
}
学生信息管理
学生信息管理可选新增或删除学生信息,若都不操作则可选返回主菜单。学生信息管理界面设计如图9所示。
录入课程信息如下图13所示。
图13 录入课程信息
课程信息管理如下图14所示。
图14新增课程
删除课程如下图15所示。
图15删除课程
录入学生信息如下图16所示。
图16录入学生信息
新怎学生信息如下图17所示。
图17新增学生信息
删除学生信息如下图18所示。
图18删除学生信息
查询可选课程如下图19所示。
图19 查询可选课程
注意:参考文献罗列的格式为
资料编号作者姓名文献或期刊名称出版社名称,文献的出版时间或期刊的期号
例如:文献 [1] 谭浩强.,C程序设计(第二版)[M],北京:清华大学出版社,2001年
期刊 [2] 于振海.office XP网上数据存取.计算机应用文摘[J],2003,24;69(页)
二、课程设计说明书(或报告书)正文的书写格式简介
switch(i)
{
case(1):keyboardc();break;
case(2):break;
}
}
课程管理
课程管理有三个选项,新增课程,删除课程和返回主菜单。课程管理界面设计如图7所示。
图7课程管理界面
课程管理可以选择增添或删除课程,若输入课程格式错误会显示错误,用户需要重新输入程管理流程图如图8所示。
1.2.1
1.2.2…
2.1.1
2.1.2…
2.2.1
2.2.2…
3.1.1
3.1.2…
3.2.1
3.2.2…
……
二、表格 每个表格应有自己的表序与表题,表序与表题间空一格。
例如:表XXXX ,且表题与表序应写在表格的上方正中处。
三、插图 插图图面要整齐、美观,插图应与正文呼应,不能脱节。每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。
武汉理工大学华夏学院
课程设计报告书
课程名称:C课程设计
题 目:学生选课系统程序设计
系 名:信息工程系
专业班级:
姓 名:
学号:
指导教师:
成 绩:
2016年3月4日
课程设计任务书
学生姓名:专业班级:
指导教师:工作单位:
设计题目:学生选课系统程序设计
初始条件:
学生选课系统能提供学生选课,以及学生和课程信息管理等一系列功能。
故此,经过分析后我觉得程序应该具有以下功能:
(1)系统以菜单方式工作
(2)课程信息和学生选课信息录入功能
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
6
系统由哪几个功能模块构成,给出功能模块图。C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下六大模块。
选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。模块图如下图1所示。
printf("2.删除学生信息\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
case 5:
{
system("cls");
elective();
goto start;
break;
}
case 6:
{
system("cls");
printf("感谢使用本系统!\n\n再见!\n");
}
}
return 0;
}
录入课程信息
录入课程信息有两个选项,录入课程和返回主菜单。录入课程信息界面设计如图5所示。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、任务描述
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作
四、公式 公式应另起一行写在稿纸的中央
时间安排:
周次
星期一
星期二
星期三
星期四
星期五
第2周
第1-4节
第3-4节
第1-4节
第1-2节
第1-4节
地点
现教221
现教221
现教221
现教221
现教221
课程设计考核及评分标准
1. 系统完成任务:50分
2. 各种技术的综合应用:10分
3、回答提问情况:20分
4. 设计报告:20分
printf("\n请输入菜单选项(1~6):");
scanf("%d",&i);
if(i<1 || i>6)
{
printf("输入错误,请重输:\n");
goto start;
}
switch(i)
{
case 1:
{
system("cls");
inputc();
goto start;
break;
}
case 2:
N
Y
图8课程管理流程图
实现该功能代码如下。
void delc(int num1)增课程\n");
printf("2.删除课程\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
一、正文标题层次 正文题序层次是文章结构的框架,一般采用社会通用的论文书写形式。即章条序码统一用阿拉伯数字表示,题序层次可以分为若干级,各级号码之间加小圆点,末尾一级的后面不加小圆点,层次分级一般不超过四级为宜,示例如下:
第一级(章)
1
2
3
……
第二级(条)
…
…
…
……
第三级(条)
1.1.1
1.1.2…
图1 系统功能模块图
另外,程序用了两个结构体和五个全局变量N1,N2,kk1,kk2,kk3。五个全局变量是用来控制输入数据的循环的。两个结构体分别是课程信息结构体:
struct couse 入课程信息 *\n");
printf("\t* 2.课程信息管理 *\n");
printf("\t* 3.录入学生信息 *\n");
printf("\t* 4.学生信息管理 *\n");
printf("\t* 5.学生选课 *\n");
printf("\t* 6.退出系统 *\n");
printf("\t* *\n");
printf("\t*******************************************************\n");
图5录入课程信息界
当用户进入录入课程后,会有两个选项,录入课程和返回主菜单。录入课程信息流程图如图6所示。
Y
N
N
Y
图6 录入课程信息流程图
实现该功能代码如下。
void keyboardc()入课程\n");
printf("2.返回主菜单\n");
printf("请选择(1~2):\n");
scanf("%d",&i);
{
system("cls");
managementc();
goto start;
break;
}
case 3:
{
system("cls");
inputs();
goto start;
break;
}
case 4:
{
system("cls");
managements();
goto start;
break;
}
【系统详细设计】
在这部分中,应该具有相关关键实现技术(如使用什么库函数,使用什么循环结构等)。
【系统调试和测试】调试:介绍设计过程中遇到的问题和解决方法。
测试:介绍如何测试系统,测试中发现的问题和解决方案。
【结束语】这部分篇幅不大,对整个设计中做的工作、获得的成果、心得体会等做一个简单小结。
【参考文献】罗列在设计过程中查阅的文献名称
incouse->nelen=0;
incouse->nelenum[0]=0;
printf("学生学号\t学生姓名\n");
scanf("%d%s",&incouse->num2,incouse->name2);
inserts(incouse);
break;
}
case(2):
{
printf("请输入要删除学生的学号:\n");
【设计题目】例如:学生选课系统
【开发环境】硬件环境:微机系列,内存在1G以上,软件环境:Microsoft WindowsXP
【开发工具】 Microsoft Visual C++
【完成时间】2016-2【需求分析】分析阐述用户的需要以及要实现的程序应具有什么样的功能。
【系统总体设计】
在明确了所要解决的问题后,很自然地就要提出自己解决问题的思路和方案。让读者了解方案的总体设计和关键技术。要阐述自己的设计方案,说明为什么要选择或设计这样的方案。具体包括:系统总的设计思路,功能模块图;使用的设计软硬件环境和开发技术和平台等。