#include<stdio.h>
#include<iostream>
#include<string.h>
#include <fstream>
#include<time.h>
#include<windows.h>
#include<algorithm>
#include<vector>
#include <stdlib.h>
using namespace std; int Now_Type=;
struct Cla//课程
{
int Num;//课程编号
string Name;//课程名字
string Depatment;//开设学院
double Score;//课程学分
int Time;//课程学时
int Property;//课程性质,1为必修,0为选修
string Teacher;//教师姓名
int ClassTime[];//课程上课时间
string place;//上课地点
int StuNum;//学生人数
int MaxNum;//限制人数
string Explan;//说明
string Book;//教材说明
};
struct Stu//学生
{
long long Num;//学号
string Depatment;//院系
string Major;//专业
string Name;//姓名
int Sex;//性别 1为男,0,为女
long long PhoneNumber;//电话号码
string code;//密码
string Mail;//邮箱信息
vector<Cla> Choose_Class;//该学生选过的课程
}; bool cmp(Cla A,Cla B)
{
return A.StuNum> B.StuNum;
}
bool cmp1(Cla A,Cla B)
{
return A.MaxNum-A.StuNum> B.MaxNum-B.StuNum;
}
struct Tea//教师
{
long long Num;//编号
string Depatment;//院系
string name;//姓名
string mail;//邮箱
string code;//密码
vector<Cla> Teach_Class;//该老师所教课程
}; vector<Stu> Student;
vector<Tea> Teacher;
vector<Cla> Class;
Stu Now_Stu;
Tea Now_Tea;
Cla Now_Cla;
int Get_Num_Len(long long x)
{
int len = ;
while(x)
{
len++;
x/=;
}
return len;
} void See_Choose_Tea()
{
void See_Choose();
system("cls");
printf("您正在查询教师自己开设过的课程的选课情况\n");
printf("请稍等\n");
printf("\n");
for(int i=;i<Now_Tea.Teach_Class.size();i++)
{
Cla CCC = Now_Tea.Teach_Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
printf("\n");
printf("\n");
printf("\n");
} printf("输入A,返回上一级\n");
string s;
while(cin>>s)
{
if(s[]=='A')
{
See_Choose();
break;
}
}
}
void See_Choose_Stu_Stu(string name)
{
void See_Choose_Stu();
system("cls");
printf("您正在根据学生姓名查询课程 \n");
printf("请稍等\n");
printf("\n");
int flag = -;
for(int i=;i<Student.size();i++)
{
if(Student[i].Name == name)
{
flag = i;
break;
}
}
if(flag==-)
{
printf("查无此人,请检查您的姓名是否输入正确\n");
printf("输入A,返回上一级");
string s;
while(cin>>s)
{
if(s[]=='A')
{
See_Choose_Stu();
break;
}
}
return;
}
printf("他所选择过的课程为\n");
Stu CCC = Student[flag];
for(int i=;i<CCC.Choose_Class.size();i++)
{
Cla AAA = CCC.Choose_Class[i];
cout<<CCC.Choose_Class[i].Name<<endl;
}
printf("输入A,返回上一级");
string s;
while(cin>>s)
{
if(s[]=='A')
{
See_Choose_Stu();
break;
}
}
}
void See_Choose_Stu_Cla(string name)
{
void See_Choose_Stu();
system("cls");
printf("您正在根据课程查询学生姓名 \n");
printf("请稍等\n");
printf("\n");
int flag = -;
for(int i=;i<Class.size();i++)
{
if(Class[i].Name == name)
{
flag = i;
break;
}
}
if(flag==-)
{
printf("查无此课程,请检查您的课程名称是否输入正确\n");
printf("输入A,返回上一级");
string s;
while(cin>>s)
{
if(s[]=='A')
{
See_Choose_Stu();
break;
}
}
return;
}
printf("选择过的课程的学生为\n");
Cla CCC = Class[flag];
for(int i=;i<Student.size();i++)
{
int flag1 = ;
for(int j = ;j<Student[i].Choose_Class.size();j++)
{
if(Student[i].Choose_Class[j].Name == name)
{
cout<<Student[i].Name<<endl;
break;
}
}
}
printf("输入A,返回上一级");
string s;
while(cin>>s)
{
if(s[]=='A')
{
See_Choose_Stu();
break;
}
}
}
void See_Choose_Stu()
{
void See_Choose();
system("cls");
printf("您正在查询选择某门课程的学生信息\n");
printf("请稍等\n");
printf("\n"); while()
{
printf("请输入您要进行的操作\n");
printf("A.根据学生姓名查询课程\n");
printf("B.根据课程查询学生姓名\n");
printf("C.返回上一级\n");
string s;
cin>>s;
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
string name;
printf("请输入你要查询的课程名字\n");
cin>>name;
See_Choose_Stu_Stu(name);
break;
}
else if(s[]=='B')
{
string name;
printf("请输入你要查询的学生名字\n");
cin>>name;
See_Choose_Stu_Cla(name);
break;
}
else
{
See_Choose();
break;
}
}
printf("请输入您要查询的学生");
for(int i=;i<Now_Tea.Teach_Class.size();i++)
{
Cla CCC = Now_Tea.Teach_Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
printf("\n");
printf("\n");
printf("\n");
} printf("输入A,返回上一级\n");
string s;
while(cin>>s)
{
if(s[]=='A')
{
See_Choose();
break;
}
}
}
void See_Choose()
{
void Tea_Choose();
system("cls");
printf("您已成功进入 教师端 选课管理系统 查看选课情况\n");
Sleep();
while()
{
printf("请问您要进行的操作是?\n");
printf("A.查询教师自己开设过的课程的选课情况\n");
printf("B.查询选择某门课程的学生信息\n");
printf("C.返回上一级\n");
string s;
cin>>s;
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
See_Choose_Tea();//查询教师自己开设过的课程的选课情况
break;
}
else if(s[]=='B')
{
See_Choose_Stu();//查询选择某门课程的学生信息
break;
}
else if(s[]=='C')
{
Tea_Choose();//返回上一级
break;
}
printf("您的输入有误,请重新输入\n");
}
Tea_Choose();
}
void Del_Class_Class()
{
void Del_Class();
system("cls");
printf("正在删除中,请稍等\n");
for(int i=;i<Now_Tea.Teach_Class.size();i++)
{
if(Now_Tea.Teach_Class[i].Num<)
{
string Name = Now_Tea.Teach_Class[i].Name;
for(int j=;j<Student.size();j++)
{
for(int k = ;k<Student[j].Choose_Class.size();k++)
{
if(Student[j].Choose_Class[k].Name == Name)
{
Student[j].Choose_Class.erase(Student[j].Choose_Class.begin()+k);
k--;
}
}
}
Now_Tea.Teach_Class.erase(Now_Tea.Teach_Class.begin()+i);
i--;
}
}
printf("删除成功!\n");
printf("返回上一级 请输入A\n");
string s;
while(cin>>s)
{
if(s[]=='A')
{
Del_Class();
break;
}
}
}
void Del_Class()
{
void Tea_Choose();
system("cls");
printf("您已成功进入 教师端 选课管理系统 删除选课操作\n");
Sleep();
printf("您确定要删除人数低于30人的课程吗?");
string s;
while()
{
printf("A.确认\n");
printf("B.返回上一级");
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
Del_Class_Class();//删除人数低于30人的课程
break;
}
else if(s[]=='B')
{
Tea_Choose();//返回上一级
break;
}
printf("您的输入有误,请重新输入\n");
}
}
void Check_information()
{
void Tea_Choose();
system("cls");
printf("您已成功进入 教师端 选课管理系统 统计选课信息\n");
Sleep();
printf("正在统计您的选课信息,清稍等\n");
printf("您所开设的课程数目为%d\n",Now_Tea.Teach_Class.size());
printf("分别是:\n");
sort(Now_Tea.Teach_Class.begin(),Now_Tea.Teach_Class.end(),cmp);
for(int i=;i<Now_Tea.Teach_Class.size();i++)
{
cout<<"课程名称:"<<Now_Tea.Teach_Class[i].Name<<" 课程人数:"<<Now_Tea.Teach_Class[i].StuNum<<endl;
} printf("返回上一级,请输入A");
string s;
while(cin>>s)
{
if(s[]=='A')
{
Tea_Choose();
return;
}
}
}
void Tea_Choose()
{
void teacher();
system("cls");
printf("您已成功进入 教师端 选课管理系统\n");
Sleep();
while()
{
printf("请问您要进行的操作是?\n");
printf("A.查看选课情况\n");
printf("B.删除选课\n");
printf("C.统计选课信息\n");
printf("D.返回上一级\n");
string s;
cin>>s;
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
See_Choose();//查看选课情况
break;
}
else if(s[]=='B')
{
Del_Class();//删除选课
break;
}
else if(s[]=='C')
{
Check_information();//统计选课信息
break;
}
else if(s[]=='D')
{
teacher();//返回上一级
break;
}
printf("您的输入有误,请重新输入\n");
}
teacher();
}
void Tea_Class_Query()
{
void Tea_Class();
system("cls");
printf("您已成功进入 教师端 课程管理 课程查询\n");
Sleep();
while()
{
printf("请输入课程编号,进行查询");
int Num;
cin>>Num;
for(int i=;i<Class.size();i++)
{
if(Class[i].Num==Num)
{
Cla CCC = Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
}
}
printf("继续查询请输入A\n");
printf("返回上一级,请输入B\n");
string s;
while(cin>>s)
{
if(s[]=='A')
break;
if(s[]=='B')
{
Tea_Class();
return;
}
}
} }
void Tea_Class_Add()
{
void Tea_Class();
system("cls");
printf("您已成功进入 教师端 课程管理 添加课程\n");
if(Now_Tea.Teach_Class.size()==)
{
printf("对不起,您的课程已经达到两节,不能继续添加课程\n");
Sleep();
Tea_Class();
}
Sleep();
while()
{
Cla TTT;
while()
{
printf("请输入新添加课程的课程编号\n");
cin>>TTT.Num;
if(Get_Num_Len(TTT.Num)!=)
printf("您的编号不是六位数字,请重新输入\n");
else
{
int flag = ;
for(int i=;i<Class.size();i++)
if(Class[i].Num == TTT.Num)
flag =;
if(flag)
printf("对不起,该门课程已经存在,请重新输入\n");
else
break; }
}
while()
{
printf("请输入新添加课程的课程名字\n");
cin>>TTT.Name;
int flag = ;
for(int i=;i<Class.size();i++)
if(Class[i].Name == TTT.Name)
flag =;
if(flag)
printf("对不起,该门课程已经存在,请重新输入\n");
else
break;
}
while()
{
printf("请输入新添加课程的课程学分\n");
cin>>TTT.Score;
if(TTT.Score>=&&TTT.Score<=)
break;
else
printf("您输入的学分并不在1-4之间,请重新输入\n");
}
printf("请输入新添加课程的课程学时\n");
cin>>TTT.Time;
printf("请输入新添加课程的课程性质 1表示必修 0表示选修\n");
cin>>TTT.Property;
printf("请输入新添加课程的上课时间\n");
cin>>TTT.ClassTime[]>>TTT.ClassTime[];
printf("请输入新添加课程的上课地点\n");
cin>>TTT.place;
printf("请输入新添加课程的说明\n");
cin>>TTT.Explan;
printf("请输入新添加课程的教材说明\n");
cin>>TTT.Book;
printf("请输入新添加课程的上线人数 1为80人 0为100人");
cin>>TTT.MaxNum;
if(TTT.MaxNum==)TTT.MaxNum=;
else TTT.MaxNum=;
TTT.StuNum = ;
printf("输入结束,请稍等\n");
Class.push_back(TTT);
Now_Tea.Teach_Class.push_back(TTT);
for(int i=;i<Teacher.size();i++)
if(Teacher[i].Num == Now_Tea.Num)
Teacher[i] = Now_Tea;
printf("添加课程成功!\n");
string s;
printf("请输入A.继续添加课程,B.返回上一级\n");
while(cin>>s)
{
if(s[]=='A')
break;
if(s[]=='B')
{
Tea_Class();
return;
}
}
}
}
void Tea_Class_Change()
{
void Tea_Class();
system("cls");
printf("您已成功进入 教师端 课程管理 修改课程\n");
Sleep();
while()
{
printf("请输入您要修改的课程编号\n");
int Num;cin>>Num;
int flag = ;
for(int i=;i<Class.size();i++)
{
if(Class[i].Num == Num)
{
flag = i;
break;
}
}
if(Class[flag].StuNum>)
{
printf("由于该课程已有学生选择,所以只能修改限制人数\n");
printf("请问你想把该门课程的限制人数修改成多少?\n");
int NNum;cin>>NNum;
Class[flag].MaxNum = NNum;
printf("修改成功!\n");
printf("请输入A.继续修改课程,B.返回上一级\n");
string s;
while(cin>>s)
{
if(s[]=='A')
break;
if(s[]=='B')
{
Tea_Class();
return;
}
}
}
else
{
printf("由于该课程无学生选择,所以能修改教材、课程简介、限制人数\n");
printf("请问你想把该门课程的教材简介修改成什么,输入-1表示不修改\n");
string SS;cin>>SS;
if(SS!="-1")
Class[flag].Book = SS;
printf("请问你想把该门课程的课程简介修改成什么,输入-1表示不修改\n");
cin>>SS;
if(SS!="-1")
Class[flag].Explan = SS;
printf("请问你想把该门课程的限制人数修改成多少?输入-1表示不修改\n");
int NNum;cin>>NNum;
if(NNum!=-)
Class[flag].MaxNum = NNum;
printf("修改成功!\n");
printf("请输入A.继续修改课程,B.返回上一级\n");
string s;
while(cin>>s)
{
if(s[]=='A')
break;
if(s[]=='B')
{
Tea_Class();
return;
}
}
}
}
}
void Tea_Class_Del()
{
void Tea_Class();
system("cls");
printf("您已成功进入 教师端 课程管理 删除课程\n");
Sleep();
while()
{
printf("请问你要删除的课程编号是什么?\n");
int Num;cin>>Num;
for(int i=;i<Class.size();i++)
{
if(Class[i].Num == Num)
{
if(Class[i].StuNum>)
{
printf("由于该课程选课人数>0,所以删除失败\n");
}
else
{
Class.erase(Class.begin()+i);
printf("删除成功!\n");
break;
}
}
}
printf("继续删除请输入A,返回上一级请输入B\n");
string s;
while(cin>>s)
{
if(s[]=='A')
break;
if(s[]=='B')
{
Tea_Class();
return;
}
}
}
}
void Tea_Class()
{
void teacher();
system("cls");
printf("您已成功进入 教师端 课程管理\n");
Sleep();
while()
{
printf("请问您要进行的操作是?\n");
printf("A.课程查询\n");
printf("B.添加课程\n");
printf("C.修改课程\n");
printf("D.删除课程\n");
printf("E.返回上一级\n");
string s;
cin>>s;
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
Tea_Class_Query();//课程查询
break;
}
else if(s[]=='B')
{
Tea_Class_Add();//添加课程
break;
}
else if(s[]=='C')
{
Tea_Class_Change();//修改课程
break;
}
else if(s[]=='D')
{
Tea_Class_Del();//删除课程
break;
}
else if(s[]=='E')
{
teacher();//返回上一级
break;
}
printf("您的输入有误,请重新输入\n");
}
}
void Tea_Inf()
{
void teacher();
system("cls");
printf("您已成功进入 教师端 个人信息管理\n");
Sleep();
while()
{
printf("请输入新的密码\n");
string SS;cin>>SS;
Now_Tea.code=SS;
printf("请输入新的邮箱\n");
cin>>SS;
Now_Tea.mail=SS;
printf("修改成功!\n");
for(int i=;i<Teacher.size();i++)
if(Teacher[i].name==Now_Tea.name)
Teacher[i]=Now_Tea;
printf("请输入 A.重新修改,B.返回上一级");
while()
{
cin>>SS;
if(SS[]=='A')
break;
if(SS[]=='B')
{
teacher();
return;
}
}
}
}
void teacher()
{
void start();
system("cls");
printf("欢迎使用北京邮电大学学生选课管理系统\n");
printf("您现在使用的是 教师端\n");
Sleep();
printf("请登录\n");
int Num;
string Input_Code;
string Code="-1";
int flag = ;
while()
{
printf("请输入您的教师工号\n");
cin>>Num;
if(Get_Num_Len(Num)!=)
{
printf("教师工号应为10位数字,您的填写有误,请重新输入\n");
continue;
}
for(int i=;i<Teacher.size();i++)
{
if(Teacher[i].Num == Num)
{
flag = i;
Code = Teacher[i].code;
}
}
printf("请输入您的教师密码\n");
cin>>Input_Code;
if(Code=="-1"||Input_Code != Code)
{
printf("密码输入错误,或者该老师并不存在,请重新输入.");
continue;
}
Now_Type = ;
Now_Tea = Teacher[flag];
break;
}
printf("登陆成功\n");
Sleep();
system("cls");
cout<<Now_Tea.name<<"老师,您已经成功登陆选课系统教师端"<<endl;
while()
{
printf("请问您要进行的操作是?\n");
printf("A.选课管理\n");
printf("B.课程管理\n");
printf("C.个人信息管理\n");
printf("D.返回上一级\n");
string s;
cin>>s;
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
Tea_Choose();//选课管理
break;
}
else if(s[]=='B')
{
Tea_Class();//课程管理
break;
}
else if(s[]=='C')
{
Tea_Inf();//个人信息管理
break;
}
else if(s[]=='D')
{
start();//返回上一级
break;
}
printf("您的输入有误,请重新输入\n");
}
start();
}
void student_Choose()
{
void student();
system("cls");
printf("您已成功进入 学生端 学生选课\n");
Sleep();
if(Now_Stu.Choose_Class.size()>)
{
printf("对不起,您已经选择超过三门课了,不能继续选择了,请输入A,返回上一级.");
string s;
while(cin>>s)
{
if(s[]=='A')
{
student();
return;
}
}
}
while()
{
printf("请输入您要选择的课程编号.\n");
int Num;cin>>Num;
int flag = -;
for(int i=;i<Class.size();i++)
if(Class[i].Num==Num)
flag = i;
if(flag==-)
{
printf("查无此课,请重新输入\n");
continue;
}
if(Class[flag].MaxNum==Class[flag].StuNum)
{
printf("对不起,该门课选报人数已经达到上限,请重新选课\n");
continue;
}
Class[flag].StuNum++;
Now_Stu.Choose_Class.push_back(Class[flag]);
printf("添加成功!");
for(int i=;i<Student.size();i++)
if(Student[i].Name == Now_Stu.Name)
Student[i] = Now_Stu;
printf("输入A.继续添加课程,B.返回上一级\n");
string s;
while(cin>>s)
{
if(s[]=='A')
break;
if(s[]=='B')
{
student();
return;
}
}
} }
void student_query()
{
void student();
system("cls");
printf("您已成功进入 学生端 查询课程\n");
Sleep();
while()
{
printf("请问您要进行的操作是?\n");
printf("A.根据课程名查询\n");
printf("B.根据开课学院查询\n");
printf("C.根据课余量排序所有课程\n");
printf("D.根据选课人数排序所有课程\n");
printf("F.返回上一级\n");
string s;
cin>>s;
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
printf("请输入您想查询的课程名?\n");
string ss;cin>>ss;
printf("下面是搜索结果\n");
for(int i=;i<Class.size();i++)
{
if(Class[i].Name==ss)
{
Cla CCC = Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
}
}
}
else if(s[]=='B')
{
printf("请输入您想查询的学院?\n");
string ss;cin>>ss;
printf("下面是搜索结果\n");
for(int i=;i<Class.size();i++)
{
if(Class[i].Depatment==ss)
{
Cla CCC = Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
}
}
}
else if(s[]=='C')
{
sort(Class.begin(),Class.end(),cmp1);
printf("已经按照课余量降序排序了~\n");
for(int i=;i<Class.size();i++)
{
Cla CCC = Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
}
}
else if(s[]=='D')
{
sort(Class.begin(),Class.end(),cmp);
printf("已经按照选课人数升序排序了~\n");
for(int i=;i<Class.size();i++)
{
Cla CCC = Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
}
}
else if(s[]=='F')
{
student();
return;
}
else
printf("您的输入有误,请重新输入\n");
}
}
void student_result()
{
void student();
system("cls");
printf("您已成功进入 学生端 查看选课结果\n");
Sleep();
printf("您选过的课为\n");
for(int i=;i<Now_Stu.Choose_Class.size();i++)
{
Cla CCC = Now_Stu.Choose_Class[i];
printf("课程编号:%d\n",CCC.Num);
cout<<"课程名字: "<<CCC.Name<<endl;
printf("课程学分: %d\n",CCC.Score);
printf("课程学时: %d\n",CCC.Time);
printf("课程性质: %d\n",CCC.Property);
cout<<"课程教师: "<<CCC.Teacher<<endl;
printf("课程上课时间: %d %d\n",CCC.ClassTime[],CCC.ClassTime[]);
cout<<"上课地点: "<<CCC.place<<endl;
printf("学生人数: %d\n",CCC.StuNum);
cout<<"课程说明: "<<CCC.Explan<<endl;
cout<<"教材说明: "<<CCC.Book<<endl;
}
printf("输入A,返回上一级\n");
string s;
while(cin>>s)
{
if(s[]=='A')
{
student();
return;
}
}
}
void student_del()
{
void student();
system("cls");
printf("您已成功进入 学生端 删除选课结果\n");
Sleep();
while()
{
printf("请输入您要删除的课程的课程编号:\n");
int Num;cin>>Num;
for(int i=;i<Now_Stu.Choose_Class.size();i++)
{
if(Now_Stu.Choose_Class[i].Num==Num)
{
Now_Stu.Choose_Class.erase(Now_Stu.Choose_Class.begin()+i);
printf("删除成功!\n");
}
else if(i==Now_Stu.Choose_Class.size()-)
{
printf("您并没有选择该课程!\n");
}
}
printf("输入A.继续删除课程,B.返回上一级\n");
string s;
while(cin>>s)
{
if(s[]=='A')
break;
if(s[]=='B')
{
student();
return;
}
}
}
}
void student_inf()
{
void student();
system("cls");
printf("您已成功进入 学生端 个人信息管理\n");
Sleep();
while()
{
printf("请输入新的密码\n");
string SS;cin>>SS;
Now_Stu.code=SS;
printf("请输入新的邮箱\n");
cin>>SS;
Now_Stu.Mail=SS;
printf("修改成功!\n");
for(int i=;i<Student.size();i++)
if(Student[i].Num == Now_Stu.Num)
Student[i] = Now_Stu;
printf("请输入 A.重新修改,B.返回上一级");
while()
{
cin>>SS;
if(SS[]=='A')
break;
if(SS[]=='B')
{
student();
return;
}
}
}
}
void student()
{
void start();
system("cls");
printf("欢迎使用北京邮电大学学生选课管理系统\n");
printf("您现在使用的是 学生端\n");
Sleep();
printf("请登录\n");
int Num;
string Input_Code;
string Code="-1";
int flag = ;
while()
{
printf("请输入您的学生学号\n");
cin>>Num;
if(Get_Num_Len(Num)!=)
{
printf("学生学号应为10位数字,您的填写有误,请重新输入\n");
continue;
}
for(int i=;i<Student.size();i++)
{
if(Student[i].Num == Num)
{
flag = i;
Code = Student[i].code;
}
}
printf("请输入您的学生密码\n");
cin>>Input_Code;
if(Code=="-1"||Input_Code != Code)
{
printf("密码输入错误,或者该学生并不存在,请重新输入.");
continue;
}
Now_Type = ;
Now_Stu = Student[flag];
break;
}
printf("登陆成功\n");
Sleep();
system("cls");
cout<<Now_Stu.Name<<"同学,您已经成功登陆选课系统教师端"<<endl;
while()
{
printf("请问您要进行的操作是?\n");
printf("A.学生选课\n");
printf("B.查询课程\n");
printf("C.查询选课结果\n");
printf("D.删除选课结果\n");
printf("E.个人信息管理\n");
printf("F.返回上一级\n");
string s;
cin>>s;
if(s.size()>)
{
printf("您的输入有误,请重新输入\n");
continue;
}
if(s[]=='A')
{
student_Choose();//学生选课
break;
}
else if(s[]=='B')
{
student_query();//查询课程
break;
}
else if(s[]=='C')
{
student_result();//查询选课结果
break;
}
else if(s[]=='D')
{
student_del();//删除选课结果
break;
}
else if(s[]=='E')
{
student_inf();//个人信息管理
break;
}
else if(s[]=='F')
{
start();//返回上一级
break;
}
printf("您的输入有误,请重新输入\n");
}
start();
}
void register_teacher()
{
system("cls");
void start();
printf("欢迎使用北京邮电大学学生选课管理系统\n");
printf("您现在正在注册老师用户\n");
Sleep();
Tea CCC;
while(){
printf("请输入您要注册的教师编号\n");
cin>>CCC.Num;
if(Get_Num_Len(CCC.Num)!=)
printf("输入格式有误,请重新输入\n");
else
break;
}
printf("请输入您要注册的教师院系\n");
cin>>CCC.Depatment;
printf("请输入您要注册的教师姓名\n");
cin>>CCC.name;
while()
{
printf("请输入您要注册的教师邮箱\n");
cin>>CCC.mail;
int flag = ;
for(int i=;i<CCC.mail.size();i++)
{
if(CCC.mail[i]=='@')
{
for(int j=i;j<CCC.mail.size();j++)
{
if(CCC.mail[j]=='.')
flag = ;
}
}
}
if(flag)
break;
else
printf("输入格式有误,请重新输入\n");
}
printf("请输入您要注册的教师账号密码\n");
cin>>CCC.code;
Teacher.push_back(CCC);
Sleep();
printf("注册成功!\n");
printf("5s后返回上一级菜单!\n");
start();
}
void register_student()
{
system("cls");
void start();
printf("欢迎使用北京邮电大学学生选课管理系统\n");
printf("您现在正在注册学生用户\n");
Sleep();
Stu CCC;
while(){
printf("请输入您要注册的学生学号\n");
cin>>CCC.Num;
if(Get_Num_Len(CCC.Num)!=)
printf("输入格式有误,请重新输入\n");
else
break;
}
printf("请输入您要注册的学生院系\n");
cin>>CCC.Depatment;
printf("请输入您要注册的学生专业\n");
cin>>CCC.Major;
printf("请输入您要注册的学生姓名\n");
cin>>CCC.Name;
printf("请输入您要注册的学生性别,1为男,0为女\n");
cin>>CCC.Sex;
printf("请输入您要注册的学生电话号码\n");
cin>>CCC.PhoneNumber;
while()
{
printf("请输入您要注册的学生邮箱\n");
cin>>CCC.Mail;
int flag = ;
for(int i=;i<CCC.Mail.size();i++)
{
if(CCC.Mail[i]=='@')
{
for(int j=i;j<CCC.Mail.size();j++)
{
if(CCC.Mail[j]=='.')
flag = ;
}
}
}
if(flag)
break;
else
printf("输入格式有误,请重新输入\n");
}
printf("请输入您要注册的学生账号密码\n");
cin>>CCC.code;
Student.push_back(CCC);
printf("注册成功!\n");
printf("5s后返回上一级菜单!\n");
start();
}
void save()
{
void start();
system("cls");
printf("正在保存信息\n");
ofstream ocout;
if(Class.size()!=)
{
ocout.open("Class.txt");
ocout<<Class.size()<<endl;
for(int i=;i<Class.size();i++)
{
ocout<<Class[i].Num<<" "<<Class[i].Name<<" "<<Class[i].Depatment<<" "<<Class[i].Score<<" "<<Class[i].Time;
ocout<<" "<<Class[i].Property<<" "<<Class[i].Teacher<<" "<<Class[i].place<<" "<<Class[i].StuNum<<" "<<Class[i].MaxNum<<" "<<Class[i].Explan<<" "<<Class[i].Book<<endl;
}
ocout.close();
}
if(Teacher.size()!=)
{
ocout.open("Teacher.txt");
ocout<<Teacher.size()<<endl;
for(int i=;i<Teacher.size();i++)
{
ocout<<Teacher[i].Num<<" "<<Teacher[i].Depatment<<" "<<Teacher[i].name<<" "<<Teacher[i].mail<<" "<<Teacher[i].code<<" ";
ocout<<Teacher[i].Teach_Class.size()<<" ";
for(int j=;j<Teacher[i].Teach_Class.size();j++)
{
for(int t=;t<Class.size();t++)
{
if(Teacher[i].Teach_Class[j].Num == Class[t].Num)
ocout<<Class[t].Num<<" ";
}
}
ocout<<endl;
}
ocout.close();
}
if(Student.size()!=)
{
ocout.open("Student.txt");
ocout<<Student.size()<<endl;
for(int i=;i<Student.size();i++)
{
ocout<<Student[i].Num<<" "<<Student[i].Depatment<<" "<<Student[i].Major<<" "<<Student[i].Name<<" "<<Student[i].Sex<<" "<<Student[i].PhoneNumber<<" "<<Student[i].code<<" "<<Student[i].Mail<<" ";
ocout<<Student[i].Choose_Class.size()<<" ";
for(int j=;j<Student[i].Choose_Class.size();j++)
{
for(int t=;t<Class.size();t++)
{
if(Student[i].Choose_Class[j].Num == Class[t].Num)
ocout<<Class[t].Num<<" ";
}
}
}
ocout.close();
}
printf("保存成功,返回上一级\n");
Sleep();
start();
}
void start()
{
system("cls");
printf("欢迎使用北京邮电大学学生选课管理系统\n");
Sleep(); system("cls");
printf("请问您接下来的操作是?\n");
printf("A.进入教师端\n");
printf("B.进入学生端\n");
printf("C.注册老师用户\n");
printf("D.注册学生用户\n");
printf("E.保存当前内容\n");
while()
{
printf("你的选择是:");
string s;
cin>>s;
if(s.size()>)
{
printf("你的输入有误,请重新选择.\n");
continue;
}
if(s[]=='A')
{
teacher();//教师端
break;
}
if(s[]=='B')
{
student();//学生端
break;
}
if(s[]=='C')
{
register_teacher();//注册老师用户
break;
}
if(s[]=='D')
{
register_student();//注册学生用户
break;
}
if(s[]=='E')
{
save();
break;
}
printf("你的输入有误,请重新选择.\n");
}
}
void pre()
{
ifstream icin;
icin.open("Class.txt");
Cla C;
int nnum;icin>>nnum;
for(int i=;i<nnum;i++)
{
icin>>C.Num>>C.Name>>C.Depatment>>C.Score>>C.Time>>C.Property>>C.Teacher>>C.place>>C.StuNum>>C.MaxNum>>C.Explan>>C.Book;
if(i==)
continue;
Class.push_back(C);
}
///////////////////////////////////////////
//Class文件格式:
//第一行一个数字n表示有多少节课
//接下来n行一共12个属性
///////////////////////////////////////////
icin.close();
icin.open("Teacher.txt");
Tea B;
icin>>nnum;
for(int i=;i<nnum;i++)
{
icin>>B.Num>>B.Depatment>>B.name>>B.mail>>B.code;
int K;icin>>K;
int temp;
for(int j=;j<K;j++)
{
icin>>temp;
B.Teach_Class.push_back(Class[temp]);
}
Teacher.push_back(B);
}
///////////////////////////////////////////
//Teacher文件格式:
//第一行一个数字n表示有多少老师
//接下来n行一共5个属性,然后一个数字M,表示这个老师教授M堂课,课分别是哪几节
///////////////////////////////////////////
icin.close();
icin.open("Student.txt");
Stu A;
icin>>nnum;
for(int i=;i<nnum;i++)
{
icin>>A.Num>>A.Depatment>>A.Major>>A.Name>>A.Sex>>A.PhoneNumber>>A.code>>A.Mail;
int K;icin>>K;
int temp;
for(int j=;j<K;j++)
{
icin>>temp;
A.Choose_Class.push_back(Class[temp]);
}
Student.push_back(A);
}
icin.close();
///////////////////////////////////////////
//Teacher文件格式:
//第一行一个数字n表示有多少学生
//接下来n行一共8个属性,然后一个数字M,表示这个学生上M堂课,课分别是哪几节
///////////////////////////////////////////
}
int main()
{
Class.clear();
Teacher.clear();
Student.clear();
pre();
start();
return ;
}

大作业 XXX大学 课程管理系统的更多相关文章

  1. 期末Java Web大作业----简易的学生管理系统

    学生信息管理系统(大作业) 2018-12-21:此文章已在我的网站更新,添加视图介绍等信息,源码请移步下载https://www.jeson.xin/javaweb-sims.html PS:首先不 ...

  2. java web石家庄铁道大学课程管理系统

    package kecheng Kc.java package kecheng; public class Kc { private int id; private String classname; ...

  3. 世界名校网络课程大盘点,美国大学CS专业十三大研究方向,世界50所知名大学提供开放课程

    世界名校网络课程大盘点   加州大学伯克利分校http://webcast.berkeley.edu/ 加州大学伯克利分校与斯坦福大学. 麻省理工学院等一同被誉为美国工程科技界的学术 领袖,其常年位居 ...

  4. 软件工程大作业(学生会管理系统)Web端个人总结报告

    软件工程大作业(学生会管理系统)Web端个人总结报告 一.小组信息 1.所在小组:第二组 2.小组选题:学生会管理系统 3.项目源代码链接: Web端源代码:code 小程序端源代码:code APP ...

  5. #006 C语言大作业学生管理系统第三天

    还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...

  6. 最课程阶段大作业之01:使用SVN实现版本控制

    版本控制在友军那里都是放在整个培训的最后阶段才开始讲的,但我们打算放到SE阶段.与其匆匆在项目实战阶段弄个半生不熟,然后进入实际工作中接受他人对你的怀疑,不如……早死早超生~~~. 可是,我们毕竟现在 ...

  7. 从零开始的C程序设计大作业——学生成绩管理系统

    前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...

  8. 【C】C语言大作业——学生学籍管理系统

    文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...

  9. C语言大作业---学生信息管理系统

    xxxx信息管理系统 简介 因为大作业规定的踩分项就那么多,为了不浪费时间 + 得分,就写成这样.现在看看,命名不规范,书写风格糟糕,全塞在一个源代码中······ 不过,应付大作业是没问题的 实验报 ...

随机推荐

  1. hdu4631Sad Love Story(多校3)(最接近点对)

    http://acm.hdu.edu.cn/showproblem.php?pid=4631 比赛的时候搜到了最接近点对的求法 Nlog(N) 又估摸着依次插入求的话会TLE 想了想觉得可以先把最近的 ...

  2. JSOI2015 R3 退队滚粗了

    JSTSC最终落下帷幕,最终还是没能翻盘成功——退队了,遗憾啊,中原得鹿不由人 day0 没啥好说的,我一开始把省常中和常州一中搞混了……,不过常州一中的伙食还是相当良心的,比省常中好 考前感觉状态不 ...

  3. poj12月其他题解(未完)

    最近编程的时间比较少啊…… poj3253 就是个合并果子,各种优先队列即可(显然单调队列最优) poj3263 线段树统计每个点被覆盖了多少次即可,注意要去重 poj3625 最小生成树 poj36 ...

  4. Webapp meta标签解决移动缩放的问题

    webapp开发初期,会碰到在pc端开发好的页面在移动端显示过大的问题,这里需要在html head中加入meta标签来控制缩放 <meta name=" viewport" ...

  5. ↗☻【HTML5秘籍 #BOOK#】第1章 HTML5简介

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  6. 【转】Application.mk 文件语法规范

    原文网址:http://blog.sina.com.cn/s/blog_4c451e0e0100s6q4.html Application.mk file syntax specification A ...

  7. (九)学习CSS之margin属性

    参考: 所有浏览器都支持 margin 属性. 注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit". 定义和用法 margi ...

  8. Linux环境变量的设置和查看方法

    1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ ech ...

  9. Appium自动化测试环境的搭建及脚本执行

    之前搭建了robotium的环境,并使用了一下,因为需要兼顾到ios的测试,所以这次又搭建了appium的环境.关于Appium的介绍网上有很多了,也可以去它的官网学习,这里就不在赘述了. 具体搭建步 ...

  10. bindService和startService的区别

    区别: startService,关闭服务退出activity,service仍然处于后台运行 bindService,关闭服务退出activity直接stopService,停止服务 bindSer ...