C++课程设计报告样例 学生选课系统设计报告.docx
《C++课程设计报告样例 学生选课系统设计报告.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告样例 学生选课系统设计报告.docx(54页珍藏版)》请在冰豆网上搜索。
C++课程设计报告样例学生选课系统设计报告
计算机与信息科学系
学生选课系统设计报告
(C++)
班级:
计科系08级2班
专业:
计算机科学与技术
题目:
学生选课系统
指导教师:
学号:
姓名:
同组人:
无
2010年1月1日
(Contents)
引言............................................3
一.设计目的.....................................3
二.总体设计.....................................4
三.详细设计.....................................5
1.界面设计...........................................5
2.课程信息设计.......................................6
3.学生信息设计.......................................7
4.选课设计...........................................8
5.程序代码...........................................9
(1).头文件代码(xk.h)..............................9
(2).菜单代码(menu.app)...........................10
(3).课程信息代码(course.app).....................12
(4).学生信息代码(student.app)....................19
(5).选课信息代码(selectcourse.app)................25
(6).主函数代码(main.app).........................29
四.测试与调试.........................................30
五.心得体会...........................................31
引言
21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。
教育作为知识创新、传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。
尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径却在不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄、不同社会阶层和背景的人们所用。
在信息爆炸的时代,传统教学管理面临着诸多挑战。
一.设计目的
网上选课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式,传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学手段,如果仍然通过纸上的方式选课,一方面浪费的大量的人力、物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。
随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,这种弊端会越来越多的暴露出来。
因此,利用网络,使学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的作业量。
从教师的角度来说,同样是节省了大量的工作量,由于教师提出代课申请完成课程发布的工作较学生选课而言更加的复杂,因此通过网上进行课程发布能大幅度的减少教师的工作量,减少错误的发生几率。
作为教师,也只要通过自己的电脑来操作即可,不用再奔波于教务处和办公室之间。
二.总体设计
三.详细设计
运行环境:
VisualStudio2005
语言:
C++
1.界面设计
界面图示
菜单选择:
选1:
进入课程信息界面
选2:
进入学生信息界面
选3:
进入选课界面
选4:
退出,并保存相关记录到文件里
2.课程信息
课程信息界面图示
菜单选择:
选1:
进入课程信息浏览,先看是否有记录,无则退出到课程信息界面,有则显示出来.
选2:
进入课程信息录入,录入课程编号,先看是否重复,若
有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表.
选3:
进入课程信息修改,录入课程编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息.
选4:
进入课程信息删除,录入要删除的课程编号,看是否在表中有这条记录,无则提示错误,有则提示显示记录的相关信息,再提示是否确实要删除记录,要则删除.
选5:
进入课程信息查询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录.
选6:
退出课程信息界面.
3.学生信息
学生信息界面图示
菜单选择:
选1:
进入学生信息浏览,先看是否有记录,无则退出到学生信息界面,有则显示出来.
选2:
进入学生信息录入,录入学生编号,先看是否重复,若
有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表.
选3:
进入学生信息修改,录入学生编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息.
选4:
进入学生信息删除,录入要删除的学生编号,看是否在表中有这条记录,无则提示错误,有则提示显示记录的相关信息,再提示是否确实要删除记录,要则删除.
选5:
进入学生信息查询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录.
选6:
退出学生信息界面.
4.选课
选课界面图示
菜单选择:
选1:
进入选课信息浏览,先看是否有记录,无则退出到选课信息界面,有则显示出来.
选2:
进入学生选课,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则进行选课提示,输入选课的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就选上,进行重复选择.
选3:
进入学生退选,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则进行选课提示,输入退选课程的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就提示错误信息,若有就进行退选.再进行重复选择.
选6:
退出选课界面
5.程序代码
(1).头文件代码(xk.h)
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classstudent;
//建立一个课程结构
structcourse1
{
intcnumber;//课程编号
charcname[100];//课程名称
intxinzhi;//课程性质
intfloattime;//课程理论学时
inttesttime;//课程实验学时
intcredit;//课程学分
intterm;//课程开课学期
intselect;//课程数
};
//建立一个课程类
classcourse
{
public:
intc;//课程信息记录个数
course1cou[100];
voidcinput();//课程信息录入
voidcborrow();//课程信息浏览
voidcedit();//课程信息修改
voidcdelete();//课程信息删除
voidccx();//课程信息查找
voidcshuchu();//课程信息从文件中写到程序中
voidcshuru();//课程信息从程序输出到文件中
};
//建立一个学生结构
structstudent1
{
intsnumber;//学号
charsname[8];//姓名
intsxinbie;//性别
charsborn[11];//出生年月
charstelephone[11];//电话
intsage;//年龄
intsele[20];//选课情况
intx;//学生选了多少课
intsum;//学生选课的总学分
};
//建立一个学生类
classstudent
{
public:
ints;//学生信息记录个数
student1stu[100];
voidsborrow();//学生信息的浏览
voidsedit();//学生信息修改
voidsdelete();//学生信息删除
voidscx();//学生信息查询
voidsinput();//学生信息输出
voidsshuru();//学生信息从文件中输入到程序中
voidsshuchu();//学生信息从程序中输出到文件中
};
//选课类
classselectcourse:
publicstudent,publiccourse
{
public:
voidselsum(student&m,course&n);//计算选修的学分的总和
voidselcourse(student&m,course&n);//学生选课
voiddelecourse(student&m,course&n);//学生退选
voidselborrow(student&m,course&n);//学生选课浏览
};
charmenu();//主菜单
charcoursemenu();//课程信息菜单
charstudentmenu();//学生信息菜单
charselectmenu();//选课菜单
(2).菜单代码(menu.app)
#include"xk.h"
//主菜单
charmenu()
{
system("cls");
charn[3];
cout<cout<<"\t\t"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t*"<cout<<"\t\t"<cout<while
(1)
{
cout<<"\t\t请选择需要的功能(1-4):
";
cin>>n;
if(strlen(n)==1)
{
for(chari='1';i<='4';i++)
if(n[0]==i)returni;
}
cout<<"\t\t***输入有误,请重新输入"<}
}
//课程菜单
charcoursemenu()
{
system("cls");
charn[3];
cout<cout<<"\t\t"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t"<cout<while
(1)
{
cout<<"\t\t请选择需要的功能(1-6):
";
cin>>n;
if(strlen(n)==1)
{
for(chari='1';i<='6';i++)
if(n[0]==i)returni;
}
cout<<"\t\t***输入有误,请重新输入"<}
}
//学生菜单
charstudentmenu()
{
system("cls");
charn[3];
cout<cout<<"\t\t"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t"<cout<while
(1)
{
cout<<"\t\t请选择需要的功能(1-6):
";
cin>>n;
if(strlen(n)==1)
{
for(chari='1';i<='6';i++)
if(n[0]==i)returni;
}
cout<<"\t\t***输入有误,请重新输入"<}
}
//选课菜单
charselectmenu()
{
system("cls");
charn[3];
cout<cout<<"\t\t"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t#"<cout<<"\t\t"<cout<while
(1)
{
cout<<"\t\t请选择需要的功能(1-4):
";
cin>>n;
if(strlen(n)==1)
{
for(chari='1';i<='4';i++)
if(n[0]==i)returni;
}
cout<<"\t\t***输入有误,请重新输入"<}
}
(3).课程信息代码(course.app)
#include"xk.h"
voidcourse:
:
cshuru()
{
c=0;
ifstreamcin("course.txt");
for(strings;getline(cin,s);)
{
intn=1;
for(istringstreamsin(s);;)
{
switch(n)
{
case1:
sin>>cou[c].cnumber;break;
case2:
sin>>cou[c].cname;break;
case3:
sin>>cou[c].xinzhi;break;
case4:
sin>>cou[c].floattime;break;
case5:
sin>>cou[c].testtime;break;
case6:
sin>>cou[c].credit;break;
case7:
sin>>cou[c].term;;break;
case8:
sin>>cou[c].select;
}
n++;
if(n==9)break;
}
c++;
}
}
voidcourse:
:
cshuchu()
{
ofstreamcout("course.txt");
for(inti=0;i{
cout<cout<cout<}
}
//课程信息录入
voidcourse:
:
cinput()
{
system("cls");
charbol;
while
(1)
{
system("cls");
intp=0;
cout<<"\t\t请输入课程信息:
"<cout<<"\t\t课程编号:
";
cin>>cou[c].cnumber;
for(inti=0;i{
if(cou[i].cnumber==cou[c].cnumber)
{
cout<<"\t\t***课程编号已存在,请重新输入"<p=1;
getch();
}
}
if(p==1)continue;
if(cou[c].cnumber>100||cou[c].cnumber<0)
{
cout<<"\t\t***输入错误,课程编号在-100之间!
\n"<getch();
continue;
}
cout<<"\n\t\t课程名称:
";
cin>>cou[c].cname;
cout<<"\n\t\t课程性质:
";
cin>>cou[c].xinzhi;
if(cou[c].xinzhi!
=1&&cou[c].xinzhi!
=0)
{
cout<<"\t\t***课程性质输入错误,请输入(、考查/0、考核)!
\n"<getch();
continue;
}
cout<<"\n\t\t课程理论学时:
";
cin>>cou[c].floattime;
if(cou[c].floattime>100||cou[c].floa