《程序设计语言》word文档.docx
《《程序设计语言》word文档.docx》由会员分享,可在线阅读,更多相关《《程序设计语言》word文档.docx(19页珍藏版)》请在冰点文库上搜索。
《程序设计语言》word文档
《程序设计语言(C++)》课程设计
设计题目:
学生选修课选课系统
班级:
14信计1班
姓名:
但昕
学号:
1411111115
设计日期:
第19周
设计地点:
科技楼804,805
1.需求分析
网上选课系统是针对在校学生和教师使用的,从学生的角度来说,由于教学制度的改革,现在大部分的高等院校开始实行学生自主选课模式,传统的教学模式已经不能适应新的教学模式,如果还只是通过纸上的方式选课,一方面浪费大量的人力、物力,另一方面浪费时间以及在统计过程中不可避免的会出现差错。
随着高校的人数增加,暴露出来的弊端会越来越多。
因此,利用网络,使学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的作业量。
从教室的角度来讲,同样可以节约大量的时间和减少工作量以及减少错误的发生率。
2.程序结构图
3.主功能函数设计
(1)选课函数voidselectCourse(Students1[10],Coursec1[M],ints_num1)对当前学生对象进行操作,覆盖其选修课对象成员c1或c2,即学生的选课。
(2)两种输出所需选修课函数按学分输出选修课函数voidselectScore(Coursec1[M])按类型输出选修课voidselectNature(Coursec1[M])对传递进来的选修课数组进行扫描,输出符合要求的选修课。
(3)选修课排序函数voidxu(Coursec1[M])使用冒泡排序法对选修课数组进行编号从小到大的排序。
(4)主菜单函数voidmenu(Coursec1[6],Students1[10])所有菜单循环都在其中,调用其他函数来实现具体功能。
4.源程序
#include
#include
#defineM10
classCourse//选修课课程类
{private:
char*id;
char*name;
char*nature;
char*date;
intshours;
intahours;
intzhours;
doublescore;
public:
Course()
{
id="unknown";
name="unknown";
nature="unknown";
zhours=0;
shours=0;
ahours=0;
date="unknown";
score=0;
}
Course(char*a,char*b,char*c,char*d,inte,intf,doubleg)
{
id=a;
name=b;
nature=c;
date=d;
shours=e;
ahours=f;
score=g;
zhours=e+f;
}
voidset(char*a,char*b,char*c,char*d,inte,intf,doubleg)
{
id=a;
name=b;
nature=c;
date=d;
shours=e;
ahours=f;
score=g;
zhours=e+f;
}
char*getDate()
{returndate;}
intgetZhours()
{returnzhours;}
intgetShours()
{eturnshours;}
intgetAhours()
{returnahours;}
doublegetScore()
{returnscore;}
char*getNature()
{returnnature;}
char*getId()
{eturnid;}
char*getName()
{returnname;}
voidprint()
{
cout<<"编号:
"<cout<<"名称:
"<cout<<"类型:
"<cout<<"上课时间:
"<cout<<"总学时:
"<cout<<"授课学时"<cout<<"实验学时:
"<cout<<"学分:
"<}
};
classStudent//学生类
{
private:
//学生选的课程是对象的成员
char*id;
char*name;
Coursec1;
Coursec2;
doublezscore;
public:
Student()
{id="unknown";
name="unknown";
zscore=0;
}
voidsetId(char*a1)
{d=a1;}
voidsetName(char*a1)
{name=a1;}
char*getName()
{returnname;}
voidprint()
{
cout<<"\n学号"<cout<<"姓名:
"<cout<<"您已选的选修课:
\n1.";
c1.print();
cout<<"2.";
c2.print();
cout<<"选修课总学分:
"<}
voidselectCourse_1(Coursecc)//修改对象的课程成员
{
c1.set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.g
etScore());
}
voidselectCourse_2(Coursecc)
{
c2.set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.g
etScore());
}
};
voidselectCourse(Students1[10],Coursec1[M],ints_num1)//选课
{
charid[2][10],select1;
inti,j,k;
for(j=0;j<2;j++)
{
cout<<"\n您想选您的第几门选修课(1or2):
";
cin>>k;
cout<<"请输入您想要选的选修课的编号:
";
cin>>id[j];
for(i=0;i=0;i++)//扫描所有选修课,如果当前选修课为空则跳出循环
{
if(strcmp(id[j],c1[i].getId())==0)
{
if(1==k)
{
s1[s_num1].selectCourse_1(c1[i]);
break;
}
if(2==k)
{
s1[s_num1].selectCourse_2(c1[i]);
break;
}
}
}
if(0==j)
{
cout<<"\n您是否想要继续选课?
(y/n):
";
cin>>select1;
if('n'==select1)break;
}
}
cout<<"\n选课成功!
"<}
voidselectScore(Coursec1[M])//按学分查询选修课
{
intselect,num,i;
cout<<"\n请输入选修课的学分:
";
cout<<"\n1.0.5\n2.1.0"<cout<<"请选择:
";
cin>>select;
num=1;
if(1==select);
{
for(i=0;i=0;i++)
{
if(0.5==c1[i].getScore())
{
cout<c1[i].print();
cout<num++;
}
}
}
elseif(2==select)
{
for(i=0;i=0;i++)
{
if(1.0==c1[i].getScore())
{
cout<c1[i].print();
cout<num++;
}
}
}
elsecout<<"对不起,您的输入有误,请重新输入!
\n\n";
}
voidselectNature(Coursec1[M])//按类型查询选修课
{
intselect,num,i;
charn1[10]="艺术类",n2[10]="学术类";
cout<<"请输入选修课的学分:
";
cout<<"\n1.艺术类\n2.学术类"<cout<<"请选择:
";
cin>>select;
num=1;
if(1==select)
{
for(i=0;i=0;i++)
{
if(strcmp(n1,c1[i].getNature())==0)
{
cout<c1[i].print();
cout<num++;
}
}
}
elseif(2==select)
{
for(i=0;i=0;i++)
{
if(strcmp(n2,c1[i].getNature())==0)
{
cout<c1[i].print();
cout<num++;
}
}
}
elsecout<<"对不起,您的输入有误,请重新输入!
\n\n";
}
voidxu(Coursec1[M])//当前所有选修课进行排序(编号从小到大)
{
inti,j,k=0,num=0;
Coursecc;
for(j=0;j=0;j++)
{
for(i=num;i=0;i++)
{
if(strcmp(c1[i].getId(),c1[i+1].getId())>0)
{
k++;
cc.set(c1[i].getId(),c1[i].getName(),c1[i].getNature(),c1[i].getDate(),c1[i].getShours(),c1[i].
etAhours(),c1[i].getScore());
c1[i].set(c1[i+1].getId(),c1[i+1].getName(),c1[i+1].getNature(),c1[i+1].getDate(),c1[i+1].get
Shours(),c1[i+1].getAhours(),c1[i+1].getScore());
c1[i+1].set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(
),cc.getScore());
}
elsek=2;
if(1==k)num=i;
}
k=0;
}
}
voidmenu(Coursec1[6],Students1[10])//菜单
{
intflag0,flag1,flag2,flag3,flag4,password=0
intselect,s_num=0,i,j,num,newNum;
charid[10][10];
charselect1;
charid1[10];
charname1[10];
charda[20];
charna[10];
intsh;
intah;
doublesc;
flag0=1;
while(flag0)
{
cout<<"\n============"<cout<<"|菜单|"<cout<<"============"<cout<<"|1.管理员|"<cout<<"|2.学生|"<cout<<"|3.退出|"<cout<<"============"<cout<<"\n请选择:
:
;
cin>>select;
switch(select)
{
case1:
flag3=1;
while
(1)
{
cout<<"请输入密码(输入-1退出):
";
cin>>password;
if(-1==password)
{
flag3=0;
break;
}
if(123==password)
{
cout<<"\n管理员,你好!
欢迎登录!
"<break;
}
cout<<"密码错误,请重新输入!
\n";
}
while(flag3)
{
cout<<"\n================"<cout<<"丨菜单|"<cout<<"================"<cout<<"|1.添加选修课|"<cout<<"|2.删除选修课|"<cout<<"|3.查看选修课|"<cout<<"|4.返回上一层|"<cout<<"================"<cout<<"\n请选择:
";
cin>>select;
switch(select)
{
case1:
newNum=0;
for(i=0;i=0;i++)newNum++;
cout<<"\n请按格式依次输入选修课的编号、名称、上课时间(x.xx-x.xx)、类型(艺术类或学术类)、授课学时、实验学时、学分:
"<cin>>id1>>name1>>da>>na>>sh>>ah>>sc;
c1[newNum].set(id1,name1,da,na,sh,ah,sc);
xu(c1);
cout<<"添加成功!
"<break;
case2:
flag4=1;
j=0;
num=0;
while(flag4)
{
cout<<"\n请输入您想要删除课程的编号:
";
cin>>id[j];
for(i=0;i=0;i++)
{
if(strcmp(id[j],c1[i].getId())==0)
{
for(num=i;num=0;num++)
{
c1[num].set(c1[num+1].getId(),c1[num+1].getName(),c1[num+1].getNature(),c1[num+1].get
Date(),c1[num+1].getShours(),c1[num+1].getAhours(),c1[num+1].getScore());
}
c1[num]=Course();
break;
}
cout<<"删除成功!
\n";
cout<<"\n您是否想要继续删除?
(y/n):
";
cin>>select1;
if('n'==select1)break;
j++;
}
break;
case3:
flag2=1;
while(flag2)
{
cout<<"\n============================"<cout<<"|菜单|"<cout<<"============================"<cout<<"|1.按学分查询选修课|"<cout<<"|2.按选修课类型查询选修课|"<cout<<"|3.显示全部|"<cout<<"|4.返回上一层|"<cout<<"============================"<cout<<"请选择:
";
cin>>select;
switch(select)
{
case1:
selectScore(c1);
break;
case2:
selectNature(c1);
break;
case3:
for(i=0;i=0;i++)
{
cout<
c1[i].print();
cout<}
break;
case4:
flag2=0;
break;
default:
cout<<"对不起,您的输入有误,请重新输入!
\n\n";
}
}
break;
case4:
flag3=0;
break;
default:
cout<<"对不起,您的输入有误,请重新输入!
\n\n";
}
}
break;
case2:
chara[10],b[10];
s1[s_num]=Student();
cout<<"\n请输入您的学号:
";
cin>>a;
s1[s_num].setId(a);
cout<<"请输入您的姓名:
";
cin>>b;
s1[s_num].setName(b);
flag1=1;
while(flag1)
{
cout<<"\n================"<cout<<"|菜单|"<cout<<"================"<cout<<"|1.选课|"<cout<<"|2.个人信息|"<cout<<"|3.返回上一层|"<cout<<"================"<cout<<"请选择:
";
cin>>select;
switch(select)
{
case1:
flag2=1;
cout<<"\n"<欢迎登录!
"<while(flag2)
{
cout<<"\n============================"<cout<<"|菜单|"<cout<<"============================="<cout<<"|1.按学分查询选修课|"<cout<<"|2.按选修课类型查询选修课|"<cout<<"|3.显示全部|"<cout<<"|4.返回上一层|"<cout<<"============================="<cout<<"请选择:
";
cin>>select;
switch(select)
{
case1:
selectScore(c1);
selectCourse(s1,c1,s_num);
break;
case2:
selectNature(c1);
selectCourse(s1,c1,s_num);
break;
case3:
for(i=0;i=0;i++)
{
cout<
c1[i].print();
cout<selectCourse(s1,c1,s_num);
break;
}
case4:
flag2=0;
break;
default:
cout<<"对不起,您的输入有误,请重新输入!
\n\n";
}
}
break;
case2:
s1[s_num].print();
break;
case3:
flag1=0;
s_num++;
break;
default:
cout<<"对不起,您的输入有误,请重新输入!
\n\n";
}
}
break;
case3:
flag0=0;
cout<<"谢谢使用!
\n再见!
"<break;
de