📄 main.cpp
字号:
cout<<setw(20)<<pos->name<<setw(10)<<pos->number<<setw(6)<<pos->credit<<setw(10)<<pos->selectedStu<<setw(10)<<pos->maxstu<<setw(10)<<pos->property<<"\n";
pos=pos->next;
}
}
}
void admin::readStuInfo(student *&sfirst,student *&slast)
{
ifstream fin("student.txt");
if(fin.fail())
cerr<<"无学生数据!"<<endl;
else
{
do
{
student *stu=new student();
if(!fin.eof())
{
fin>>stu->name>>stu->number>>stu->department>>stu->grade>>stu->Class>>stu->password>>stu->totalCredit;
stu->readCourseInfoTostu();
}
else
break;
if(sfirst==NULL)
sfirst=slast=stu;
else
{
slast->next=stu;
stu->previous=slast;
slast=stu;
}
}while(!fin.eof());
}
}
void admin::saveStuInfo(student *&sfirst)
{
string fileName="student.txt";
student *pos=sfirst;
if(sfirst==NULL)
cerr<<"无数据,不能保存!"<<endl;
else
{
ofstream fout(fileName.c_str());
while(pos)
{
fout<<pos->name<<" "<<pos->number<<" "<<pos->department<<" "<<pos->grade<<" "<<pos->Class<<" "<<pos->password<<" "<<pos->totalCredit;
pos=pos->next;
if(pos)
fout<<endl;
}
fout.close();
}
}
void admin::readCourseInfo(course *&cfirst,course *&clast)
{
ifstream fin("course.txt");
if(fin.fail())
cerr<<"无课程数据!"<<endl;
else
{
do
{
course *cou=new course();
if(!fin.eof())
{
fin>>cou->name>>cou->number>>cou->credit>>cou->selectedStu>>cou->maxstu>>cou->property;
}
else
break;
if(cfirst==NULL)
cfirst=clast=cou;
else
{
clast->next=cou;
cou->previous=clast;
clast=cou;
}
}while(!fin.eof());
}
}
void admin::saveCourseInfo(course *&cfirst)
{
course *pos=cfirst;
if(cfirst==NULL)
cerr<<"无数据,不能保存!"<<endl;
else
{
ofstream fout("course.txt");
while(pos)
{
fout<<pos->name<<" "<<pos->number<<" "<<pos->credit<<" "<<pos->selectedStu<<" "<<pos->maxstu<<" "<<pos->property;
pos=pos->next;
if(pos)
fout<<endl;
}
fout.close();
}
}
void admin::releaseStudent(student* &target)
{
student *pos=target;
while(pos)
{
pos=pos->next;
delete target;
target=pos;
}
}
void admin::releaseCourse(course* &target)
{
course *pos=target;
while(pos)
{
pos=pos->next;
delete target;
target=pos;
}
}
bool isEqual(string password)
{
char ps[20],ch;
char ps1[20];
int i,j=0;
for(i=0;i<password.length();i++)
ps[i]=password[i];
ps[i]='\0';
cout<<"输入密码:";
while(true)
{
ch=getch();
if(isdigit(ch)||isalpha(ch))
{
ps1[j]=ch;
j++;
cout<<"*";
}
else if(ch==13)
break;
}
ps1[j]='\0';
if(strcmp(ps,ps1)==0)
return true;
else
return false;
}
void addStudentMenu(admin *&ad,student *&sfirst,student *&slast)
{
system("cls");
string answer;
do
{
ad->addStudent(sfirst,slast);
cout<<"继续添加?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void setStudentInfoMenu(admin *&ad,student *&sfirst)
{
system("cls");
string answer,num;
do
{
cout<<"请输入学号:";
cin>>num;
ad->setStudent(sfirst,num);
cout<<"继续修改?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void selectCourseMenu(admin *&ad,student *&sfirst,course *&cfirst)
{
system("cls");
string answer,snum,cnum;
do
{
cout<<"请输入要添加课程学生的学号:";
cin>>snum;
student *spos=ad->searchStudent(sfirst,snum);
if(spos==NULL)
cout<<"无此学生!";
else
{
do
{
cout<<"请输入要添加课程的课程号:";
cin>>cnum;
spos->selectCourse(cfirst,cnum);
cout<<"继续添加课程(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
spos->saveCourseInfoForStu();
}
cout<<"继续为学生选课(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void setStudentMenu(admin *&ad,student *&sfirst,course *&cfirst)
{
system("cls");
int choice;
do
{
cout<<"1.修改学生基本信息\n2.为学生添加课程\n0.返回上一级\n请选择:";
cin>>choice;
switch(choice)
{
case 0:system("cls");break;
case 1:setStudentInfoMenu(ad,sfirst);break;
case 2:selectCourseMenu(ad,sfirst,cfirst);break;
}
}while(choice);
}
void getStudentMenu(admin *&ad,student *&sfirst)
{
system("cls");
string answer,num;
do
{
cout<<"请输入学号:";
cin>>num;
ad->getStudent(sfirst,num);
cout<<"继续查找?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void deleteStudentMenu(admin *&ad,student *&sfirst,student *&slast)
{
system("cls");
string answer,num;
do
{
cout<<"请输入学号:";
cin>>num;
ad->deleteStudent(sfirst,slast,num);
cout<<"继续删除?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void addCourseMenu(admin *&ad,course *&cfirst,course *&clast)
{
system("cls");
string answer;
do
{
ad->addCourse(cfirst,clast);
cout<<"继续添加?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void deleteCourseMenu(admin *&ad,course *&cfirst,course *&clast)
{
system("cls");
string answer,num;
do
{
cout<<"请输入课程号:";
cin>>num;
ad->deleteCourse(cfirst,clast,num);
cout<<"继续删除?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void getCourseMenu(admin *&ad,course *&cfirst)
{
system("cls");
string answer,num;
do
{
cout<<"请输入课程号:";
cin>>num;
ad->getCourse(cfirst,num);
cout<<"继续查找?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void setCourseMenu(admin *&ad,course *&cfirst)
{
system("cls");
string answer,num;
do
{
cout<<"请输入课程号:";
cin>>num;
ad->setCourse(cfirst,num);
cout<<"继续修改?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
}
void adminMenu(admin *&ad,student *&sfirst,student *&slast,course *&cfirst,course *&clast)
{
int choice;
do
{
system("cls");
cout<<"请选择操作:\n1.增加学生 2.修改学生信息 3.删除学生 4.查看学生信息"
<<"\n5.增加课程 6.修改课程信息 7.删除课程 8.查看课程信息"
<<"\n9.查看所有学生信息 10.查看所有课程信息 0.退出\n请选择:";
cin>>choice;
switch(choice)
{
case 0:ad->saveStuInfo(sfirst);
ad->saveCourseInfo(cfirst);
ad->releaseCourse(cfirst);
ad->releaseStudent(sfirst);
exit(0);break;
case 1:addStudentMenu(ad,sfirst,slast);break;
case 2:setStudentMenu(ad,sfirst,cfirst);break;
case 3:deleteStudentMenu(ad,sfirst,slast);break;
case 4:getStudentMenu(ad,sfirst);break;
case 5:addCourseMenu(ad,cfirst,clast);break;
case 6:setCourseMenu(ad,cfirst);break;
case 7:deleteCourseMenu(ad,cfirst,clast);break;
case 8:getCourseMenu(ad,cfirst);break;
case 9:system("cls");ad->printStudent(sfirst);cout<<"按任意键返回...";getch();break;
case 10:system("cls");cout<<"本学期所有课程如下:\n\n";ad->printCourse(cfirst);cout<<"\n按任意键返回...";getch();break;
}
}while(choice);
}
void checkAPassword(admin *&ad,student *&sfirst,student *&slast,course *&cfirst,course *&clast)
{
system("cls");
string password="admin";
int i=0;
do
{
if(isEqual(password))
adminMenu(ad,sfirst,slast,cfirst,clast);
else
{
cout<<"\n密码输入有误!请重新输入!";
i++;
if(getch()==13)
system("cls");
}
}while(i&&i<3);
if(i==3)
cout<<"输入错误超过3次!你已被强制退出!\n";
}
void stuSelectCouMenu(admin *&ad,student *&stu,course *&cfirst)
{
system("cls");
string num,answer;
do
{
cout<<"请输入课程号:";
cin>>num;
stu->selectCourse(cfirst,num);
cout<<"继续选课(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
stu->saveCourseInfoForStu();
}
void stuDeleteCouMenu(course *&cfirst,student *&stu)
{
system("cls");
string answer,num;
do
{
cout<<"请输入课程号:";
cin>>num;
stu->deleteCourse(cfirst,num);
cout<<"继续删除?(Y/N):";
cin>>answer;
system("cls");
}while(answer=="Y"||answer=="y");
stu->saveCourseInfoForStu();
}
void studentMenu(admin *&ad,student *&stu,student *&sfirst,course *&cfirst)
{
int choice;
do
{
system("cls");
cout<<"请选择操作:\n1.选课\n2.删除已选课程\n3.查看所有课程\n4.查看已选课程\n5.修改密码\n0.退出\n请选择:";
cin>>choice;
switch(choice)
{
case 0:ad->saveStuInfo(sfirst);
ad->saveCourseInfo(cfirst);
ad->releaseCourse(cfirst);
ad->releaseStudent(sfirst);
exit(0);break;
case 1:stuSelectCouMenu(ad,stu,cfirst);break;
case 2:stuDeleteCouMenu(cfirst,stu);break;
case 3:system("cls");cout<<"本学期所有课程如下:\n\n";
ad->printCourse(cfirst);cout<<"\n按任意键返回...";getch();break;
case 4:system("cls");cout<<"已选课程如下:\n\n";stu->getCourse();cout<<"\n按任意键返回...";getch();break;
case 5:stu->setPassword();break;
}
}while(choice);
}
void checkSPassword(admin *&ad,student *&sfirst,course *&cfirst)
{
system("cls");
string num,pw;
int i=0;
do
{
cout<<"请输入学号:";
cin>>num;
student *stu=ad->searchStudent(sfirst,num);
if(stu==NULL)
{
cout<<"学号输入有误!请重新输入!";
i++;
if(getch()==13)
system("cls");
}
else
{
if(isEqual(stu->getPassword()))
studentMenu(ad,stu,sfirst,cfirst);
else
{
cout<<"\n密码输入有误!请重新输入!";
i++;
if(getch()==13)
system("cls");
}
}
}while(i&&i<3);
if(i==3)
cout<<"输入错误超过3次!你已被强制退出!\n";
}
void main()
{
int choice;
admin *ad=new admin();
student *sfirst=NULL;
student *slast=NULL;
course *cfirst=NULL;
course *clast=NULL;
ad->readStuInfo(sfirst,slast);
ad->readCourseInfo(cfirst,clast);
cout<<"请选择登陆方式:\n1.学生登陆\n2.管理员登陆\n0.退出\n请选择:";
cin>>choice;
switch(choice)
{
case 0:ad->releaseStudent(sfirst);ad->releaseCourse(cfirst);exit(0);break;
case 1:checkSPassword(ad,sfirst,cfirst);break;
case 2:checkAPassword(ad,sfirst,slast,cfirst,clast);break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -