学生选课系统说明书.docx
《学生选课系统说明书.docx》由会员分享,可在线阅读,更多相关《学生选课系统说明书.docx(23页珍藏版)》请在冰点文库上搜索。
![学生选课系统说明书.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/a243fb2d-3772-48d1-8aa9-88fbbcbb8323/a243fb2d-3772-48d1-8aa9-88fbbcbb83231.gif)
学生选课系统说明书
山东建筑大学计算机科学与技术学院
课程设计说明书
题目:
学生选课系统
课程:
C/C++课程设计
院(部):
计算机科学与技术学院
专业:
计算机科学与技术
班级:
计科143
学生姓名:
肖洋
学号:
20141111099
指导教师:
夏传良
完成日期:
2015//12//30
目录
1、课程设计目的1
2、课程设计任务1
3、学生选课系统2
4、参考文献12
5、课程设计总结13
1、课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学习完《C/C++语言》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
(1)巩固和加深学生对C/C++课程的基本知识的理解和掌握;
(2)掌握C/C++编程和程序调试的基本技能;(3)利用C/C++进行简单软件设计的基本思路和方法,初步理解面向过程和面向对象的编程思想;(4)提高运用C/C++解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。
(6)培养实际操作能力,为以后的工作打下坚实的基础
2、课程设计任务
设计题目
学生选课系统
已知技术参数和设计要求
假定有N门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。
试设计一个选修课程系统,使之能提供以下功能:
1、系统以菜单方式工作
2、课程信息和学生选课信息录入功能(课程信息用文件保存)
3、课程信息浏览功能
4、查询功能
5、按学分查询
6、某门课程学生选修情况(可选项)
设计内容与步骤
1、模块化程序设计。
2、具体数据结构的定义及其处理数据算法的设计。
3、锯齿型程序书写格式。
4、程序设计、实现、调试。
5、课程设计说明书。
设计工作计划与进度安排
1、程序设计10学时。
2、实现与调试6学时。
3、课程设计说明书4学时。
设计考核要求
1、考勤20%。
2、课程设计说明书50%。
3、答辩、成果演示30%。
3、学生选课系统
3.1问题描述与功能设计
第一步:
分析问题
a)对于不同的函数,luru(),luru2(),xxqingkuang(),liulan(),find(),确定要产生的数据(输出),应定义表示输入和输出的各种符合类型的变量。
c)根据需要,定义结构体,并通过顺序操作,通过循环操作完成包括许多文本和图象处理操作。
Structkech[N]
课程的结构数组
charname[10];
课程名称
charxz[20];
课程性质
intnum;
课程编号
inttime;
学时
intAtime;
授课学时
intBtime;
实验或上机学时
intbegintime;
开课学期
intscore;
学分
intpeople;
该课程选课人数
Structxuanke[N]
选课信息的结构数组
doublexuehao;
学号
intbianhao[10]
选课课程编号
inthdxf;
可获得学分
学生选修课程系统主要功能有
录入课程信息(并保存文件):
录入学生选课信息(也可以保存在文件中)
课程信息浏览功能
按学分查询功能
某门课程学生选修情况功能
各种功能之间以菜单方式工作,实现信息对信息的灵活获取和操作。
3.2概要设计
总体框图
3.3详细设计
流程图
3.4测试数据与测试情况
4、参考文献
[1]何钦铭、颜晖著,C语言程序设计,高等教育出版社,2011年12月。
[2]杜茂康、李昌兵著,C++面向对象程序设计(第二版),电子工业出版社,2009年11月。
[3]钱能,C/C++程序设计教程(修订版)—设计思想与实现,清华大学出版社,2013年1月。
[4]郑秋生:
C/C/C++程序设计教程,电子工业出版社,2007年10月。
5、课程设计总结
通过这次课程设计,认识了C语言结构的用法和各种流程的控制输出样式:
1、设计课程结构和学生选课的结构元素时应考虑存储字节大小其中char型数组,整型数据,其中存储学号的整形数组在存储例如20141111099学号时内存不足会导致运行出错。
2、对异常的处理能力也得到提升,在按学分查询课程时,首先没有录入数据时应该输出“你还没有录入课程”其次查询录入的数据中,如果存在则输出在该结构数组,如果不存在则输出“没有该课程”。
3、在一次次的修改文件的执行代码和编辑时,在菜单显示的功能上也需要排列整齐和有序,在完成设计功能的同时也增加了一些相应的小功能,对学生的选课信息进行可获得学分的计算。
4、通过本次课程设计也培养了我独立思考、综合运用所学有关相应知识能力,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关。
在这次课程设计中也知道了自己的动手能力不强有待进一部的提高,只是掌握的还不够,还需强化知识。
6.附件(源程序)
#include
#include
#include
usingnamespacestd;
#defineN5
structkech{//定义课程结构
charname[10];//课程名称
charxz[20];//课程性质
intnum;//课程编号
inttime;//学时
intAtime;//授课学时
intBtime;//实验或上机学时
intscore;//学分
intbegintime;//开课学期
intpeople;
}kech[N];
structxuanke{//定义学生选课结构
doublexuehao;//学号
intbianhao[10];//选课编号
inthdxf;//可获得学分
}xuanke[N];
intsubject=0,index=0;
voidluru()//录入课程信息
{
inti=subject;
ofstreamofile("e:
\\ksfiles\\text.txt",ios:
:
app);
cout<<"/******请输入课程信息******/\n";
cout<<"课程编号:
";//输入课程编号
cin>>kech[i].num;
ofile<cout<<"课程名称:
";//输入课程名称
cin>>kech[i].name;
ofile<cout<<"课程性质:
";//输入课程性质
cin>>kech[i].xz;
ofile<cout<<"总学时:
";//输入总学时
cin>>kech[i].time;
ofile<cout<<"授课学时:
";//输入授课学时
cin>>kech[i].Atime;
ofile<cout<<"实验或上机学时:
";//输入实验或上机学时
cin>>kech[i].Btime;
ofile<cout<<"学分:
";//输入学分
cin>>kech[i].score;
ofile<cout<<"开课学期:
";//输入开课学期
cin>>kech[i].begintime;
ofile<kech[i].people=0;
ofile<ofile.close();
subject++;
}
voidluru2()//录入学生选课信息
{
inti=index;
intn;
if(subject==0)
{
cout<<"你还没有录入课程信息!
"<return;
}
ofstreamopen("e:
\\ksfiles\\class.txt",ios:
:
app);//保存文件
cout<<"/******请输入选课学生信息******/"<cout<<"学生学号:
";//输入学号
cin>>xuanke[i].xuehao;
open<cout<<"请输入该生所选课程数量:
";
cin>>n;
intj=0;
intpanduan=0;
xuanke[i].hdxf=0;
while(j!
=n)
{
cout<<"第"<";
cin>>xuanke[i].bianhao[j];
open<for(intk=0;k{
if(xuanke[i].bianhao[j]==kech[k].num)
{
panduan=1;
xuanke[i].hdxf+=kech[k].score;
kech[k].people++;//对可获得学分进行计算
}
}
if(panduan==0)
cout<<"该课程编号不存在!
请重新输入"<elsej++;
}
cout<<"该学生可获得"<open<open.close();
index++;
}
voidliulan()//浏览课程信息
{
inti;
if(subject!
=0)
{
cout<for(i=0;i{
cout<<""<}
}
else
{
cout<<"你还没有录入课程信息!
"<return;
}
}
intfind()//查询功能
{
ints;
intpanduan=0;
cout<<"请输入你所要查询课程的学分为:
";
cin>>s;
if(subject==0)
cout<<"你还没有录入课程信息!
"<else
{
for(inti=0;i{
if(s==kech[i].score)
{
panduan=1;
cout<cout<<""<}
}
if(panduan==0)cout<<"没有该学分的课程!
"<}
return-1;
}
voidxxqingkuang()//某课程的选课情况统计
{
intm;
intpanduan=0;
cout<<"请输入您要查询的的课程编号:
";
cin>>m;
if(subject==0)
cout<<"你还没有录入课程信息!
"<else
for(inti=0;i{
if(m==kech[i].num)
{
panduan=1;
cout<<"该课程的选课人数为"<}
}
if(panduan==0)
cout<<"抱歉,还没有该课程编号!
"<}
voidmain()//主函数
{
intchoice=0;
while(choice!
=6)
{
cout<<"/*************欢迎使用本系统,请根据需要进行操作!
*************/"<cout<<"/**********主菜单**********/"<cout<<"1.课程录入"<cout<<"2.课程浏览"<cout<<"3.课程查询"<cout<<"4.学生选课"<cout<<"5.学生选修情况"<cout<<"6.系统退出"<cout<<"请选择:
"<cin>>choice;
switch(choice)
{
case1:
luru();break;
case2:
liulan();break;
case3:
find();break;
case4:
luru2();break;
case5:
xxqingkuang();break;
case6:
cout<<"/*************感谢使用本系统!
*************/\n";break;
default:
cout<<"选择错误,请重新选择!
"<}
}
}