目录
第一章、摘要、关键词·············2
第二章、课程设计任务内容与思路········3
第三章、程序功能划分及流程图·········3
第四章、程序运行结果·············5
第五章、设计心得···············9
第六章、小组分工···············10
第七章、参考文献··············11
第一章、摘要与关键词:
1、摘要:
近年来,随着学校和扩招规模的不断扩大,在校学生的数量也相应的增加,有关学生的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致学生选课管理上的混乱,人力与物力过多浪费,学生管理费用的增加,从而使管理人员的负担过重,影响整个学生选课的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的学生选课系统,对学生以及课程进行集中统一的管理。系统开发的总的设计目标是实现学生选课的系统化、规范化和自动化,实现对学生和课程的集中统一的管理。
2、关键词:
选课系统、结构体、课程查询、跳转函数
第二章、课程设计任务内容与思路
1、创建学生、课程结构体,课程查询功能
2、课程与学生信息录入,管理
3、学生选课功能的实现
第三章、程序功能划分及流程图
1、主函数
2、选课函数
3、查询课程函数
4、课程增加与删除
第四章、程序运行结果
1、主界面
2、录入课程信息
3、课程信息管理
4、录入学生信息
5、学生信息管理
6、学生选课
7、系统信息查看及存储
8、退出系统
第五章、设计心得
由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。
本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。
通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。
程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。
对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。
总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。
第六章、小组分工
1、组长:
●信息录入函数设计(学生信息、课程信息)
1、从键盘录入
2、从文件录入
●算法设计。
●任务报告书的修订。
●信息文件的创建。
2、组员A:
●查询函数设计(课程名查询)
●退课函数设计。
●任务报告书初稿。
3、组员B:
●信息管理(学生信息、课程信息)
1、增加信息
2、删除信息
●结构体构造。
●查阅资料。
4、组员C:
●选课函数的实现。
●存储信息至文件。
●主函数设计。
第七章、参考文献
Visual C++课程设计案例精编
C语言课程设计案例精编
数据结构(C语言)
C语言程序设计教程(第二版)
附录、部分源程序
主函数:
int main()//主函数
{
int i;
start:
printf("\n\t\t\t欢迎使用学生选课系统!\n");
printf("菜单:\n");
printf("1.录入课程信息\n");
printf("2.课程管理\n");
printf("3.录入学生信息\n");
printf("4.学生信息管理\n");
printf("5.学生选课\n");
printf("6.系统信息查看及存储\n");
printf("7.退出系统\n");
printf("\n请输入菜单选项(1~7):\n");
scanf("%d",&i);
if(i<1||i>7)
{printf("输入错误,请重输:\n");
goto start;}
switch(i)
{case(1):
{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");
store();
goto start;
break;}
case(7):
{system("cls");
printf("感谢使用本系统!\n\n再见!\n");}
}
return(0);}
二、课程信息与学生信息
struct couse//课程信息结构体
{int num1;
char name1[20];
int score;
int nelepeo;//课程已选人数
int Melepeo;//课程人数上限
struct couse*next;};
struct student//学生信息结构体
{int num2;
char name2[20];
int nelenum[50];//已选课程编号
int nelen;//已选课程数量
struct student*next;
};
void Ms()
{for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)
for(kk3=0;kk3<1200;kk3++);}
三、选课函数
void elective()
{int i;
printf("\t\t\t学生选课\n");
printf("1.查询可选课程\n");
printf("2.查询已选课程\n");
printf("3.返回主菜单\n");
printf("请输入(1~3):\n");
scanf("%d",&i);
switch(i)
{case(1):cheak();break;
case(2):hcheak();break;
case(3):break;}
}
第二篇:C++课程设计报告样例 学生选课系统设计报告
计算机与信息科学系
学生选课系统设计报告
(C++)
班 级: 计科系08级2班
专 业: 计算机科学与技术
题 目: 学 生 选 课 系 统
指导教师 : 覃 凤 清
学 号: 081102008
姓 名: 朱 丽
同 组 人 : 无
宜宾学院
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世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。教育作为知识创新、传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。
尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径却在不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄、不同社会阶层和背景的人们所用。在信息爆炸的时代,传统教学管理面临着诸多挑战。
一. 设计目的
网上选课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式,传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学手段,如果仍然通过纸上的方式选课,一方面浪费的大量的人力、物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,这种弊端会越来越多的暴露出来。因此,利用网络,使学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的作业量。从教师的角度来说,同样是节省了大量的工作量,由于教师提出代课申请完成课程发布的工作较学生选课而言更加的复杂,因此通过网上进行课程发布能大幅度的减少教师的工作量,减少错误的发生几率。作为教师,也只要通过自己的电脑来操作即可,不用再奔波于教务处和办公室之间。
二. 总体设计
三.详细设计
运行环境:Visual Studio2005
语言: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<iostream>
#include<vector>
#include<sstream>
#include<fstream>
#include<conio.h>
#include<iomanip>
using namespace std;
class student;
//建立一个课程结构
struct course1
{
int cnumber;//课程编号
char cname[100];//课程名称
int xinzhi;//课程性质
int floattime;//课程理论学时
int testtime;//课程实验学时
int credit;//课程学分
int term;//课程开课学期
int select;//课程数
};
//建立一个课程类
class course
{
public:
int c;//课程信息记录个数
course1 cou[100];
void cinput();//课程信息录入
void cborrow();//课程信息浏览
void cedit();//课程信息修改
void cdelete();//课程信息删除
void ccx();//课程信息查找
void cshuchu();//课程信息从文件中写到程序中
void cshuru();//课程信息从程序输出到文件中
};
//建立一个学生结构
struct student1
{
int snumber;//学号
char sname[8];//姓名
int sxinbie;//性别
char sborn[11];//出生年月
char stelephone[11];//电话
int sage;//年龄
int sele[20];//选课情况
int x;//学生选了多少课
int sum;//学生选课的总学分
};
//建立一个学生类
class student
{
public:
int s;//学生信息记录个数
student1 stu[100];
void sborrow();//学生信息的浏览
void sedit();//学生信息修改
void sdelete();//学生信息删除
void scx();//学生信息查询
void sinput();//学生信息输出
void sshuru();//学生信息从文件中输入到程序中
void sshuchu();//学生信息从程序中输出到文件中
};
//选课类
class selectcourse:public student,public course
{
public:
void selsum(student& m,course& n);//计算选修的学分的总和
void selcourse(student& m,course& n);//学生选课
void delecourse(student& m,course& n);//学生退选
void selborrow(student& m,course& n);//学生选课浏览
};
char menu();//主菜单
char coursemenu();//课程信息菜单
char studentmenu();//学生信息菜单
char selectmenu();//选课菜单
(2).菜单代码(menu.app)
#include"xk.h"
//主菜单
char menu()
{
system("cls");
char n[3];
cout<<endl<<endl;
cout<<"\t\t"<<string(50,'*')<<endl;
cout<<"\t\t*"<<string(48,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(48,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(19,' ')<<"学生选课系统"<<string(17,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(48,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(20,' ')<<"1.课程信息"<<string(18,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(20,' ')<<"2.学生信息"<<string(18,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(20,' ')<<"3.选课"<<string(22,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(20,' ')<<"4.退出系统"<<string(18,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(48,' ')<<"*"<<endl;
cout<<"\t\t*"<<string(48,' ')<<"*"<<endl;
cout<<"\t\t"<<string(50,'*')<<endl;
cout<<endl<<endl;
while(1)
{
cout<<"\t\t请选择需要的功能(1-4):";
cin>>n;
if(strlen(n)==1)
{
for(char i='1';i<='4';i++)
if(n[0]==i) return i;
}
cout<<"\t\t***输入有误,请重新输入"<<endl;
}
}
//课程菜单
char coursemenu()
{
system("cls");
char n[3];
cout<<endl<<endl;
cout<<"\t\t"<<string(50,'#')<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(19,' ')<<"课程信息"<<string(21,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"1.课程信息浏览"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"2.课程信息录入"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"3.课程信息修改"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"4.课程信息删除"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"5.课程信息查询"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"6.退出课程信息"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t"<<string(50,'#')<<endl;
cout<<endl<<endl;
while(1)
{
cout<<"\t\t请选择需要的功能(1-6):";
cin>>n;
if(strlen(n)==1)
{
for(char i='1';i<='6';i++)
if(n[0]==i) return i;
}
cout<<"\t\t***输入有误,请重新输入"<<endl;
}
}
//学生菜单
char studentmenu()
{
system("cls");
char n[3];
cout<<endl<<endl;
cout<<"\t\t"<<string(50,'#')<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(19,' ')<<"学生信息"<<string(21,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"1.学生信息浏览"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"2.学生信息录入"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"3.学生信息修改"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"4.学生信息删除"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"5.学生信息查询"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(17,' ')<<"6.退出学生信息"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t"<<string(50,'#')<<endl;
cout<<endl<<endl;
while(1)
{
cout<<"\t\t请选择需要的功能(1-6):";
cin>>n;
if(strlen(n)==1)
{
for(char i='1';i<='6';i++)
if(n[0]==i) return i;
}
cout<<"\t\t***输入有误,请重新输入"<<endl;
}
}
//选课菜单
char selectmenu()
{
system("cls");
char n[3];
cout<<endl<<endl;
cout<<"\t\t"<<string(50,'#')<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(19,' ')<<"选课功能"<<string(21,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(21,' ')<<"1.选课记录浏览"<<string(13,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(21,' ')<<"2.选课"<<string(21,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(21,' ')<<"3.退选"<<string(21,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(21,' ')<<"4.退出选课"<<string(17,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t#"<<string(48,' ')<<"#"<<endl;
cout<<"\t\t"<<string(50,'#')<<endl;
cout<<endl<<endl;
while(1)
{
cout<<"\t\t请选择需要的功能(1-4):";
cin>>n;
if(strlen(n)==1)
{
for(char i='1';i<='4';i++)
if(n[0]==i) return i;
}
cout<<"\t\t***输入有误,请重新输入"<<endl;
}
}
(3).课程信息代码(course.app)
#include"xk.h"
void course::cshuru()
{
c=0;
ifstream cin("course.txt");
for(string s;getline(cin,s);)
{
int n=1;
for(istringstream sin(s);;)
{
switch(n)
{
case 1:sin>>cou[c].cnumber;break;
case 2:sin>>cou[c].cname;break;
case 3:sin>>cou[c].xinzhi;break;
case 4:sin>>cou[c].floattime;break;
case 5:sin>>cou[c].testtime;break;
case 6:sin>>cou[c].credit;break;
case 7:sin>>cou[c].term;;break;
case 8:sin>>cou[c].select;
}
n++;
if(n==9) break;
}
c++;
}
}
void course::cshuchu()
{
ofstream cout("course.txt");
for(int i=0;i<c;i++)
{
cout<<cou[i].cnumber<<" "<<cou[i].cname<<" "<<cou[i].xinzhi<<" ";
cout<<cou[i].floattime<<" "<<cou[i].testtime<<" ";
cout<<cou[i].credit<<" "<<cou[i].term<<" "<<cou[i].select<<endl;
}
}
//课程信息录入
void course::cinput()
{
system("cls");
char bol;
while(1)
{
system("cls");
int p=0;
cout<<"\t\t请输入课程信息:"<<endl;
cout<<"\t\t课程编号:";
cin>>cou[c].cnumber;
for(int i=0;i<c;i++)
{
if(cou[i].cnumber==cou[c].cnumber)
{
cout<<"\t\t***课程编号已存在,请重新输入"<<endl;
p=1;
getch();
}
}
if(p==1)continue;
if(cou[c].cnumber>100 || cou[c].cnumber<0)
{
cout<<"\t\t***输入错误,课程编号在-100之间!\n"<<endl;
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"<<endl;
getch();
continue;
}
cout<<"\n\t\t课程理论学时:";
cin>>cou[c].floattime;
if(cou[c].floattime>100 || cou[c].floattime<1)
{
cout<<"\t\t***输入错误,理论学时必须在-100之间!\n"<<endl;
getch();
continue;
}
cout<<"\n\t\t课程实验学时:";
cin>>cou[c].testtime;
if(cou[c].testtime>100 || cou[c].testtime<1)
{
cout<<"\t\t***输入错误,理论实验学时必须在-100之间!\n"<<endl;
getch();
continue;
}
cout<<"\n\t\t课程学分:";
cin>>cou[c].credit;
if(cou[c].credit>6 || cou[c].credit<1)
{
cout<<"\t\t***输入错误,学分必须在-6之间!\n"<<endl;
getch();
continue;
}
cout<<"\n\t\t课程开课学期:";
cout<<"\n\t\t请选择:"<<endl;
cout<<"\n 1.第一学期/2.第二学期/3.第三学期/4.第四学期/5.第五学期/6.第六学期:";
cin>>cou[c].term;
if(cou[c].term>6 || cou[c].term<1)
{
cout<<"\t\t***输入错误!\n"<<endl;
getch();
continue;
}
cou[c].select=0;
c++;
cout<<"\t\t还继续录入课程信息吗?(Y/N)";
cin>>bol;
if(bol=='n' || bol=='N')
break;
system("cls");
}
cout<<"\n\t\t按任意键返回...";
getch();
}
//课程信息浏览
void course::cborrow()
{
system("cls");
cout<<endl<<endl;
if(c==0)
cout<<"\t\t***没有记录,请先输入记录"<<endl;
else
{
cout<<"\n\t\t课程具体信息如下:\n"<<endl;
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
for(int i=0;i<c;i++)
{
cout<<setw(5)<<setfill(' ')<<left<<cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<cou[i].cname<<setw(6)<<setfill(' ')<<left<<(cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<cou[i].floattime<<setw(9)<<setfill(' ')<<left<<cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].credit<<setw(9)<<setfill(' ')<<left<<cou[i].term<<setw(9)<<setfill(' ')<<left<<cou[i].select<<endl;
}
}
cout<<"\n\t\t按任意键返回...\n";
getch();
}
//课程信息修改
void course::cedit()
{
system("cls");
int p=0,number,y;
char bol,boll;
if(c==0)
cout<<"\t\t***没有记录,请先输入记录";
else
{
while(1)
{
system("cls");
cout<<"\n\t\t请输入修改的课程编号:";
cin>>number;
if(number>100 || number<0)
{
cout<<"\n\t\t***输入有误,请重新输入(0-99):"<<endl;
getch();
continue;
}
for(int i=0;i<c;i++)
{
if(cou[i].cnumber==number)
{
p=1;
while(1)
{
system("cls");
int mon;
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<cou[i].cname<<setw(6)<<setfill(' ')<<left<<(cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<cou[i].floattime<<setw(9)<<setfill(' ')<<left<<cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].credit<<setw(9)<<setfill(' ')<<left<<cou[i].term<<setw(9)<<setfill(' ')<<left<<cou[i].select<<endl;
cout<<"\n请选择修改(1.名称/2.性质/3.理论学时/4.实验学时/5.学分/6.开课学期):"<<endl;
cin>>y;
if(y>6 || y<1)
{
cout<<"\t\t***输入错误,请重新输入."<<endl;
getch();
continue;
}
switch(y)
{
case 1:cout<<"\t\t名称:";cin>>cou[i].cname;break;
case 2:
{
cout<<"\t\t性质:";
cin>>mon;
if(mon!=1 && mon!=0)
{
cout<<"\t\t***课程性质输入错误,请输入(、考查/0、考核)!\n"<<endl;
getch();
continue;
}
cou[i].xinzhi==mon;
break;
}
case 3:
{
cout<<"\t\t理论学时:";
cin>>mon;
if(mon>100 || mon<1)
{
cout<<"\t\t***输入错误,理论学时必须在-100之间!\n"<<endl;
getch();
continue;
}
cou[i].floattime=mon;
break;
}
case 4:
{
cout<<"\t\t实验学时:";
cin>>mon;
if(mon>100 || mon<1)
{
cout<<"\t\t***输入错误,理论实验学时必须在-100之间!\n"<<endl;
getch();
continue;
}
cou[i].testtime=mon;
break;
}
case 5:
{
cout<<"\t\t学分:";
cin>>mon;
if(mon>6 || mon<1)
{
cout<<"\t\t***输入错误,学分必须在-6之间!\n"<<endl;
getch();
continue;
}
cou[i].credit=mon;
break;
}
case 6:
{
cout<<"\t\t学期:";
cin>>mon;
if(mon>6 || mon<1)
{
cout<<"\t\t***输入错误!\n"<<endl;
getch();
continue;
}
cou[i].term=mon;
break;
}
}
cout<<"\n\t\t请问还继续修改课程编号为"<<number<<"的信息吗?(Y/N)";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
}
}
if(p==0)
cout<<"\n\t\t***没有找到相关课程信息."<<endl;
cout<<"\t\t请问还继续修改其它课程信息吗?(Y/N)";
cin>>boll;
if(boll=='N' || boll=='n')
break;
}
}
cout<<"\n\t\t按任意键返回...";
getch();
}
//课程信息删除
void course::cdelete()
{
system("cls");
int number;
char boll,a;
if(c==0)
cout<<"\t\t***没有记录,请先输入记录";
else
{
while(1)
{
system("cls");
int p=0;
cout<<"\n\t\t请输入要删除的课程信息相关课程编号:";
cin>>number;
if(number>100 || number<0)
{
cout<<"\n\t\t***输入有误,请重新输入(0-100):"<<endl;
getch();
continue;
}
for(int i=0;i<c;i++)
{
if(cou[i].cnumber==number)
{
cout<<"\t\t课程编号为"<<number<<"的课程信息显示如下:\n"<<endl;
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<cou[i].cname<<setw(6)<<setfill(' ')<<left<<(cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<cou[i].floattime<<setw(9)<<setfill(' ')<<left<<cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].credit<<setw(9)<<setfill(' ')<<left<<cou[i].term<<setw(9)<<setfill(' ')<<left<<cou[i].select<<endl;
p=1;
cout<<"\t\t你确定要删除该记录吗?(Y/N)";
cin>>a;
if(a=='Y' || a=='y')
{
for(int j=i;j<c-1;j++)
{
cou[j].cnumber=cou[j+1].cnumber;
strcpy(cou[j].cname,cou[j+1].cname);
cou[j].xinzhi=cou[j+1].xinzhi;
cou[j].floattime=cou[j+1].floattime;
cou[j].testtime=cou[j+1].testtime;
cou[j].credit=cou[j+1].credit;
cou[j].term=cou[j+1].term;
cou[j].select=cou[j+1].select;
}
cout<<"\t\t该课程信息已删除。"<<endl;
c=c-1;
}
}
}
if(p==0)
cout<<"\n\t\t***没有找到相关课程信息."<<endl;
cout<<"\t\t请问还继续删除其它课程信息吗?(Y/N)";
cin>>boll;
if(boll=='N' || boll=='n')
break;
}
}
cout<<"\n\t\t按任意键返回...";
getch();
}
//课程信息的查询
void course::ccx()
{
system("cls");
int n;
char bol;
while(1)
{
system("cls");
cout<<endl<<endl;
cout<<"\t\t"<<string(50,'.')<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(18,' ')<<"课程信息查询"<<string(18,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(16,' ')<<"1.按课程学分查询"<<string(16,' ')<<"."<<endl;
cout<<"\t\t."<<string(16,' ')<<"2.按课程性质查询"<<string(16,' ')<<"."<<endl;
cout<<"\t\t."<<string(16,' ')<<"3.按已选课程查询"<<string(16,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t"<<string(50,'.')<<endl;
cout<<endl<<endl;
int p=0;
cout<<"\t\t请输入查询方式(1-3):";
cin>>n;
if(n>3 || n<1)
{
cout<<"\n\t\t***输入错误,请重新输入"<<endl;
getch();
continue;
}
switch(n)
{
case 1:
{
int redit;
cout<<"\t\t请输入课程学分:";
cin>>redit;
for(int i=0;i<c;i++)
{
if(cou[i].credit==redit)
{
if(p==0)
{
cout<<"\n\t\t课程学分为"<<redit<<"的课程信息显示如下:\n"<<endl;
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
}
p=1;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<cou[i].cname<<setw(6)<<setfill(' ')<<left<<(cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<cou[i].floattime<<setw(9)<<setfill(' ')<<left<<cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].credit<<setw(9)<<setfill(' ')<<left<<cou[i].term<<setw(9)<<setfill(' ')<<left<<cou[i].select<<endl;
}
}
if(p==0)
{
cout<<"\t\t***没有找到相关课程信息"<<endl;
getch();
continue;
}
break;
}
case 2:
{
int xz;
cout<<"\t\t请输入课程性质(1.考试/0.考核):";
cin>>xz;
for(int i=0;i<c;i++)
{
if(cou[i].xinzhi==xz)
{
if(p==0)
{
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
}
cout<<setw(5)<<setfill(' ')<<left<<cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<cou[i].cname<<setw(6)<<setfill(' ')<<left<<(cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<cou[i].floattime<<setw(9)<<setfill(' ')<<left<<cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].credit<<setw(9)<<setfill(' ')<<left<<cou[i].term<<setw(9)<<setfill(' ')<<left<<cou[i].select<<endl;
p=1;
}
}
if(p==0)
{
cout<<"\n\t\t***没有找到相关课程信息!"<<endl;
getch();
continue;
}
break;
}
case 3:
{
for(int i=0;i<c;i++)
{
if(cou[i].select>0)
{
if(p==0)
{
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
}
cout<<setw(5)<<setfill(' ')<<left<<cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<cou[i].cname<<setw(6)<<setfill(' ')<<left<<(cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<cou[i].floattime<<setw(9)<<setfill(' ')<<left<<cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<cou[i].credit<<setw(9)<<setfill(' ')<<left<<cou[i].term<<setw(9)<<setfill(' ')<<left<<cou[i].select<<endl;
p=1;
}
}
if(p==0)
{
cout<<"\n***没有找到相关课程信息"<<endl;
getch();
continue;
}
break;
}
}
cout<<"\t\t是否还继续查询(Y/N):";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
cout<<"\n\t\t按任意键返回...";
getch();
}
(4).学生信息代码(student.app)
#include"xk.h"
void student::sshuru()
{
s=0;
ifstream cin("student.txt");
for(string b;getline(cin,b);)
{
int n=1,p;
stu[s].x=0;stu[s].sum=0;
for(istringstream sin(b);;)
{
switch(n)
{
case 1:sin>>stu[s].snumber;break;
case 2:sin>>stu[s].sname;break;
case 3:sin>>stu[s].sxinbie;break;
case 4:sin>>stu[s].sborn;break;
case 5:sin>>stu[s].stelephone;break;
case 6:sin>>stu[s].sage;break;
}
if(n>6)
{
sin>>stu[s].sele[stu[s].x];
p=stu[s].x;
if(stu[s].x!=0 && stu[s].sele[stu[s].x]==stu[s].sele[p-1] || stu[s].sele[0]==stu[s].sage)
{
stu[s].sele[stu[s].x]=0;
stu[s].x--;
break;
}
stu[s].x++;
}
n++;
}
s++;
}
}
void student::sshuchu()
{
ofstream cout("student.txt");
for(int i=0;i<s;i++)
{
cout<<stu[i].snumber<<" "<<stu[i].sname<<" ";
cout<<stu[i].sxinbie<<" "<<stu[i].sborn<<" ";
cout<<stu[i].stelephone<<" "<<stu[i].sage<<" ";
for(int j=0;j<stu[i].x;j++)
cout<<stu[i].sele[j]<<" ";
cout<<endl;
}
}
//学生信息录入
void student::sinput()
{
system("cls");
char bol;
while(1)
{
system("cls");
int p=0;
cout<<"\t\t请输入学生信息:"<<endl;
cout<<"\t\t学号:";
cin>>stu[s].snumber;
for(int i=0;i<s;i++)
{
if(stu[i].snumber==stu[s].snumber)
{
cout<<"\t\t***学号已存在,请重新输入"<<endl;;
p=1;
getch();
}
}
if(p==1)continue;
if(stu[s].snumber>255 || stu[s].snumber<0)
{
cout<<"\n\t\t输入有误,请重新输入(0-255):"<<endl;
getch();
continue;
}
cout<<"\n\t\t姓名:";
cin>>stu[s].sname;
cout<<"\n\t\t年龄:";
cin>>stu[s].sage;
if(stu[s].sage>100 || stu[s].sage<0)
{
cout<<"\t\t***输入错误,年龄应该在-100之间!"<<endl;
getch();
continue;
}
cout<<"\n\t\t性别:";
cin>>stu[s].sxinbie;
if(stu[s].sxinbie!=0 && stu[s].sxinbie!=1)
{
cout<<"\t\t***输入错误,性别(.女/0.男)"<<endl;
getch();
continue;
}
cout<<"\n\t\t出生年月:";
cin>>stu[s].sborn;
cout<<"\n\t\t电话:";
cin>>stu[s].stelephone;
if(strlen(stu[s].stelephone)!=11)
{
cout<<"\t\t***电话是位的!"<<endl;
getch();
continue;
}
stu[s].x=0;
s++;
cout<<"\t\t还继续录入课程信息吗?(Y/N)";
cin>>bol;
if(bol=='n' || bol=='N')
break;
}
cout<<"\n\t\t按任意键返回...";
getch();
}
//学生信息浏览
void student::sborrow()
{
system("cls");
cout<<endl<<endl;
if(s==0)
cout<<"\t\t***没有记录,请先输入记录"<<endl;
else
{
cout<<"\n\t\t学生具体信息如下:"<<endl;
cout<<"学号\t"<<"姓名\t"<<"年龄\t"<<"性别\t"<<"出生年月\t"<<"电话\t"<<endl;
for(int i=0;i<s;i++)
{
cout<<stu[i].snumber<<"\t"<<stu[i].sname<<"\t"<<stu[i].sage<<"\t";
cout<<(stu[i].sxinbie==1 ? "女" : "男") <<"\t"<<stu[i].sborn<<"\t"<<stu[i].stelephone<<endl;
}
}
cout<<"\n\t\t按任意键返回...";
getch();
}
//学生信息修改
void student::sedit()
{
system("cls");
int p=0,number,y;
char bol,boll;
if(s==0)
cout<<"\t\t***没有记录,请先输入记录";
else
{
while(1)
{
system("cls");
cout<<"\n\t\t请输入要修改的学号:";
cin>>number;
if(number>255 || number<0)
{
cout<<"\n\t\t***输入有误,请重新输入(0-255):"<<endl;
getch();
continue;
}
for(int i=0;i<s;i++)
{
if(stu[i].snumber==number)
{
p=1;
while(1)
{
system("cls");
int mon;
cout<<"学号\t"<<"姓名\t"<<"年龄\t"<<"性别\t"<<"出生年月\t"<<"电话\t"<<endl;
cout<<stu[i].snumber<<"\t"<<stu[i].sname<<"\t"<<stu[i].sage<<"\t";
cout<<(stu[i].sxinbie==1 ? "女" : "男") <<"\t"<<stu[i].sborn<<"\t"<<stu[i].stelephone<<"\t"<<endl;
cout<<"请选择修改(1.性名/2.年龄/3.性别/4.出生年月/5.电话):"<<endl;
cin>>y;
if(y>6 || y<1)
{
cout<<"\t\t***输入错误,请重新输入."<<endl;
getch();
continue;
}
switch(y)
{
case 1:cout<<"\t\t性名:";cin>>stu[i].sname;break;
case 2:
{
cout<<"\t\t年龄:";
cin>>mon;
if(mon>100 || mon<0)
{
cout<<"***输入错误,年龄应该在-100之间!"<<endl;
getch();
continue;
}
stu[i].sage=mon;
break;
}
case 3:
{
cout<<"\t\t性别:";
cin>>mon;
if(mon!=0 && mon!=1)
{
cout<<"***输入错误,性别(.女/0.男)"<<endl;
getch();
continue;
}
stu[i].sxinbie=mon;
break;
}
case 4:cout<<"\t\t出生年月:";cin>>stu[i].sborn;break;
case 5:
{
cout<<"\t\t电话:";
cin>>stu[i].stelephone;
if(strlen(stu[i].stelephone)!=11)
{
cout<<"\t\t***电话是位的!"<<endl;
getch();
continue;
}
break;
}
}
cout<<"\n\t\t请问还继续修改学号为"<<number<<"的信息吗?(Y/N)";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
}
}
if(p==0)
cout<<"\n\t\t***没有找到相关学生信息."<<endl;
cout<<"\t\t请问还继续修改其它学生信息吗?(Y/N)";
cin>>boll;
if(boll=='N' || boll=='n')
break;
}
}
cout<<"\n\t\t按任意键返回...";
getch();
}
//学生信息删除
void student::sdelete()
{
system("cls");
int number;
char boll,a;
if(s==0)
cout<<"\t\t***没有记录,请先输入记录";
else
{
while(1)
{
system("cls");
int p=0;
cout<<"\n\t\t请输入要删除的学生信息相关学号:";
cin>>number;
if(number>255 || number<0)
{
cout<<"\n\t\t***输入有误,请重新输入(0-99):"<<endl;
getch();
continue;
}
for(int i=0;i<s;i++)
{
if(stu[i].snumber==number)
{
cout<<"\t\t学号为"<<number<<"的学生信息显示如下:"<<endl;
cout<<"学号\t"<<"姓名\t"<<"年龄\t"<<"性别\t"<<"出生年月\t"<<"电话\t"<<endl;
cout<<stu[i].snumber<<"\t"<<stu[i].sname<<"\t"<<stu[i].sage<<"\t";
cout<<(stu[i].sxinbie==1 ? "女" : "男") <<"\t"<<stu[i].sborn<<"\t"<<stu[i].stelephone<<"\t"<<endl;
p=1;
cout<<"\t\t你确定要删除该记录吗?(Y/N)";
cin>>a;
if(a=='Y' || a=='y')
{
for(int j=i;j<s-1;j++)
{
stu[j].snumber=stu[j+1].snumber;
strcpy(stu[j].sname,stu[j+1].sname);
stu[j].sage=stu[j+1].sage;
stu[j].sxinbie=stu[j+1].sxinbie;
strcpy(stu[j].sborn,stu[j+1].sborn);
strcpy(stu[j].stelephone,stu[j+1].stelephone);
}
cout<<"\t\t***该学生信息已删除。"<<endl;
s=s-1;
}
}
}
if(p==0)
cout<<"\n\t\t***没有找到相关学生信息."<<endl;
cout<<"\t\t请问还继续删除其它学生信息吗?(Y/N)";
cin>>boll;
if(boll=='N' || boll=='n')
break;
}
}
cout<<"\n\t\t按任意键返回...";
getch();
}
//学生信息查询
void student::scx()
{
system("cls");
int n;
char bol;
while(1)
{
system("cls");
cout<<endl<<endl;
cout<<"\t\t"<<string(50,'.')<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(18,' ')<<"学生信息查询"<<string(18,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(16,' ')<<"1.按学生学号查询"<<string(16,' ')<<"."<<endl;
cout<<"\t\t."<<string(16,' ')<<"2.按学生性别查询"<<string(16,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t."<<string(48,' ')<<"."<<endl;
cout<<"\t\t"<<string(50,'.')<<endl;
cout<<endl<<endl;
int p=0;
cout<<"\t\t请输入查询方式(1-2):";
cin>>n;
if(n>2 || n<1)
{
cout<<"\n\t\t***输入错误,请重新输入"<<endl;
getch();
continue;
}
switch(n)
{
case 1:
{
int redit;
cout<<"\t\t请输入学生学号:";
cin>>redit;
for(int i=0;i<s;i++)
{
if(stu[i].snumber==redit)
{
if(p==0)
{
cout<<"\t\t学号为"<<redit<<"的学生信息显示如下:"<<endl;
cout<<"学号\t"<<"姓名\t"<<"年龄\t"<<"性别\t"<<"出生年月\t"<<"电话\t"<<endl;
}
cout<<stu[i].snumber<<"\t"<<stu[i].sname<<"\t"<<stu[i].sage<<"\t";
cout<<(stu[i].sxinbie==1 ? "女" : "男") <<"\t"<<stu[i].sborn<<"\t"<<stu[i].stelephone<<"\t"<<endl;
p=1;
}
}
if(p==0)
{
cout<<"\t\t***没有找到相关学生信息"<<endl;
getch();
break;
}
break;
}
case 2:
{
int xz;
cout<<"\t\t请输入学生性别(1.女/0.男):";
cin>>xz;
for(int i=0;i<s;i++)
{
if(stu[i].sxinbie==xz)
{
if(p==0)
{
cout<<"学号\t"<<"姓名\t"<<"年龄\t"<<"性别\t"<<"出生年月\t"<<"电话\t"<<endl;
}
cout<<stu[i].snumber<<"\t"<<stu[i].sname<<"\t"<<stu[i].sage<<"\t";
cout<<(stu[i].sxinbie==1 ? "女" : "男")<<"\t"<<stu[i].sborn<<"\t"<<stu[i].stelephone<<endl;
p=1;
}
}
if(p==0)
{
cout<<"\n\t\t***没有找到相关学生信息"<<endl;
getch();
break;
}
break;
}
}
cout<<"\t\t是否还继续查询(Y/N):";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
cout<<"\n\t\t按任意键返回...";
getch();
}
(5).选课信息代码(selectcourse.app)
#include"xk.h"
//计算学分总和
void selectcourse::selsum(student& m,course& n)
{
for(int i=0;i<m.s;i++)
{
for(int j=0;j<m.stu[i].x;j++)
{
for(int k=0;k<n.c;k++)
{
if(m.stu[i].sele[j]==n.cou[k].cnumber)
m.stu[i].sum+=n.cou[k].credit;
}
}
}
}
//学生选课
void selectcourse::selcourse(student& m,course& n)
{
//xiugai();
system("cls");
int num,p=0,q=0,num1,mou=0;
char bol;
if(s==0)
cout<<"\t\t***没有学生记录,请先输入。"<<endl;
else
{
while(1)
{
system("cls");
cout<<"\n\t\t课程具体信息如下:\n"<<endl;
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
for(int i=0;i<n.c;i++)
{
cout<<setw(5)<<setfill(' ')<<left<<n.cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<n.cou[i].cname<<setw(6)<<setfill(' ')<<left<<(n.cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<n.cou[i].floattime<<setw(9)<<setfill(' ')<<left<<n.cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<n.cou[i].credit<<setw(9)<<setfill(' ')<<left<<n.cou[i].term<<setw(9)<<setfill(' ')<<left<<n.cou[i].select<<endl;
}
cout<<"\t\t请输入要选课的学生学号:";
cin>>num;
for(int i=0;i<m.s;i++)
{
if(m.stu[i].snumber==num)
{
p=1;
if(m.stu[i].sum>=20)
{
cout<<"\t\t***所选课程已经超过了分,不能再选。"<<endl;
break;
}
while(1)
{
system("cls");
cout<<"\n\t\t课程具体信息如下:\n"<<endl;
cout<<setw(5)<<setfill(' ')<<left<<"编号"<<setw(15)<<setfill(' ')<<left<<"名称"<<setw(6)<<setfill(' ')<<left<<"性质";
cout<<setw(9)<<setfill(' ')<<left<<"理论学时"<<setw(9)<<setfill(' ')<<left<<"实验学时";
cout<<setw(5)<<setfill(' ')<<left<<"学分"<<setw(9)<<setfill(' ')<<left<<"开课学期"<<setw(9)<<setfill(' ')<<left<<"选课人数"<<endl;
for(int i=0;i<n.c;i++)
{
cout<<setw(5)<<setfill(' ')<<left<<n.cou[i].cnumber<<setw(15)<<setfill(' ')<<left<<n.cou[i].cname<<setw(6)<<setfill(' ')<<left<<(n.cou[i].xinzhi==1 ? "考试" : "考核");
cout<<setw(9)<<setfill(' ')<<left<<n.cou[i].floattime<<setw(9)<<setfill(' ')<<left<<n.cou[i].testtime;
cout<<setw(5)<<setfill(' ')<<left<<n.cou[i].credit<<setw(9)<<setfill(' ')<<left<<n.cou[i].term<<setw(9)<<setfill(' ')<<left<<n.cou[i].select<<endl;
}
int f=0,yy=0,xx=0;
cout<<"\t\t请输入要选课的学生学号:"<<num<<endl;
cout<<"\t\t请输入选修的课程:";
cin>>num1;
for(int ww=0;ww<n.c;ww++)
{
if(num1==n.cou[ww].cnumber)
xx=1;
}
if(xx==0)
{
cout<<"\t\t***不存在这项课程"<<endl;
getch();
continue;
}
for(int y=0;y<m.stu[i].x;y++)
{
if(num1==m.stu[i].sele[y])
f=1;
}
if(f==1)
{
cout<<"\t\t***已经存在该课程,请重新选择"<<endl;
getch();
continue;
}
for(int z=0;z<n.c;z++)
{
if(n.cou[z].cnumber==num1)
{
q=1;mou=1;
m.stu[i].sum=m.stu[i].sum+n.cou[z].credit;
if(m.stu[i].sum>=20)
{
cout<<"\t\t***所选课程已经超过了分,不能再选。"<<endl;
m.stu[i].sum-=n.cou[z].credit;
yy=1;
getch();
break;
}
m.stu[i].sele[m.stu[i].x]=num1;
m.stu[i].x=(m.stu[i].x) + 1;
}
}
if(yy==1) break;
if(q==0)
cout<<"\t\t***输入课程号有误,请重新输入"<<endl;
cout<<"\t\t是否继续选择:(Y/N)";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
}
}
if(p==0)
cout<<"\t\t***输入的学号不存在"<<endl;
cout<<"\t\t是否还继续进行选课?(Y/N)";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
}
cout<<"\t\t按任意键返回..."<<endl;
getch();
}
//选课浏览
void selectcourse::selborrow(student& m,course& n)
{
//xiugai();
system("cls");
cout<<endl<<endl;
cout<<"\t\t选课的具体信息如下:"<<endl;
cout<<"学号\t"<<"课程名"<<endl;
for(int i=0;i<m.s;i++)
{
if(m.stu[i].x>0)
{
cout<<m.stu[i].snumber<<"\t";
for(int j=0;j<m.stu[i].x;j++)
{
for(int k=0;k<n.c;k++)
{
if(m.stu[i].sele[j]==n.cou[k].cnumber)
cout<<n.cou[k].cname<<" ";
}
}
}
cout<<endl;
}
cout<<"\t\t按任意键返回..."<<endl;
getch();
}
//学生退选
void selectcourse::delecourse(student& m,course& n)
{
system("cls");
cout<<endl<<endl;
int num,num1;
char bol;
while(1)
{
system("cls");
int q=0,v=0,p=0;
cout<<"\t\t请输入要退选课程的学生学号:";
cin>>num;
for(int i=0;i<m.s;i++)
{
if(m.stu[i].snumber==num)
{
if(m.stu[i].x==0)
{
v=1;
break;
}
while(1)
{
system("cls");
int jj;
cout<<"\t\t请输入要退选课程的学生学号:"<<num<<endl;
cout<<"\t\t学生学号为"<<num<<"选修的信息如下:"<<endl;
cout<<"学号\t"<<"课程名(编号)"<<endl;
cout<<num<<"\t";
p=1;
for(int j=0;j<m.stu[i].x;j++)
{
for(int k=0;k<n.c;k++)
{
if(m.stu[i].sele[j]==n.cou[k].cnumber)
cout<<n.cou[k].cname<<"("<<n.cou[k].cnumber<<")"<<" ";
}
}
cout<<"\n\n\t\t请输入你要退选的课程号:";
cin>>num1;
for(int y=0;y<m.stu[i].x;y++)
{
if(m.stu[i].sele[y]==num1)
{
q=1;
for(int z=y;z<m.stu[i].x-1;z++)
m.stu[i].sele[z]=m.stu[i].sele[z+1];
m.stu[i].x--;
jj=m.stu[i].x--;
for(int o=0;o<=n.c;o++)
{
if(num1==n.cou[o].cnumber)
m.stu[i].sum-=n.cou[o].credit;
}
}
}
if(q==0)
cout<<"\t\t***你没有选择这门课程!"<<endl;
if(jj==0)
{
cout<<"\t\t***你已退选了所有课程"<<endl;
break;
}
cout<<"\t\t是否还继续对其它课程进行退选?(Y/N)";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
}
}
if(v==1)
cout<<"\t\t***该学生没有选课!"<<endl;
else if(p==0)
cout<<"\t\t***没有找到相关的学生记录!"<<endl;
cout<<"\t\t是否还继续对其它学生的课程进行退选?(Y/N)";
cin>>bol;
if(bol=='N' || bol=='n')
break;
}
cout<<"\t\t按任意键返回..."<<endl;
getch();
}
(6).主函数代码(main.app)
#include"xk.h"
int main()
{
course a;
student b;
selectcourse c;
b.sshuru();a.cshuru();
c.selsum(b,a);
char n,i,j,k;
while(1)
{
p:n=menu();
if(n=='1')
{
while(1)
{
i=coursemenu();
switch(i)
{
case '1':a.cborrow();break;
case '2':a.cinput();break;
case '3':a.cedit();break;
case '4':a.cdelete();break;
case '5':a.ccx();break;
case '6':goto p;break;
}
}
}
if(n=='2')
{
while(1)
{
j=studentmenu();
switch(j)
{
case '1':b.sborrow();break;
case '2':b.sinput();break;
case '3':b.sedit();break;
case '4':b.sdelete();break;
case '5':b.scx();break;
case '6':goto p;break;
}
}
}
if(n=='3')
{
while(1)
{
k=selectmenu();
switch(k)
{
case '1':c.selborrow(b,a);break;
case '2':c.selcourse(b,a);break;
case '3':c.delecourse(b,a);break;
case '4':goto p;break;
}
}
}
if(n=='4')
{
b.sshuchu();a.cshuchu();
break;
}
}
return 0;
}
四.学生选课系统设计的测试与调试
程序中出现的问题:
1.从文件读入记录到程序里,但一条记录有不同字段,分别要录入不同的变量里,最后用SWITCH分别进行输出判断。
2.程序结束时,要把记录重新读入到文件里,我想我用的类创建的,程序结束时,自动调用析构函数,没具体弄清析构函数其它用法,就把读出到文件的操作放在析构函数里面,导致文件里的数据在退出程序时被清空。后经过老师反复给我调试,终于清楚问题所在。我就把读入文件的操作单独放在一个函数里,退出再调用。
3.在主函数调用菜单,我先用的VOID类型,后来调用时发现不行,我要输入的操作不能执行,就改成CHAR返回类型,判断其选择的什么。
4.我用STRUCT建立一条记录所需要的变量,再建立一个类,在类内建立一个结构成员数组,这样就可建立N条记录,但实际过程中,有时输入不到这么多条记录,经过反复思考,我建立一个成员变量来保存建立多少条记录。
5.再执行删除信息操作时,我的思路受到阻碍,不知道怎么删除记录,如果让删除的记录都清为零,但那条记录依然存在,只不过是全为零,所以后来我想到让后面的记录一条条覆盖前面的记录,也算是删除记录,虽然最后一条记录在数组中实际上这样就存在两条,但我让成员变量控制记录个数,所以进行输出时根本不会输出最后那条重复的记录。
五.课程设计心得体会
1.通过这次学生选课系统设计,以C++语言为基础编写,更让我掌握到C++语言中相关语句的运用。
2.用Visual Studio2005环境下编写,我觉得,从文件中读入数据十分麻烦,没有在数据库中读入数据这么轻松,如果我要用到两个表中的记录,非常麻烦。
3.整个设计过程过后,我也基本掌握了设计的基本步骤。为我们以后做毕业论文也有很好的帮助。
4.C++是非常好的系统编程的语言,但不能以此独立,但用C++语言是做不出好的系统,还是要和其它软件结合,以C++为基础编写系统,这样做出来的系统也更好,更美观。
5.这次系统设计有很的不足之处,在这过程中也认识到自己对C++也有很多的没掌握的地方。但在老师和同学的帮助下,也算弄出了一个简单的系统,在以后也要更加努力学习。