⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 学生选课系统.txt

📁 简单的类与对象的内容
💻 TXT
📖 第 1 页 / 共 4 页
字号:
studentdb *q=P->Next; 
char N[20]; 
system("cls"); 
cout<<"\n\n\t\t\t\t学生情况操作"<<endl; 
int i; 
if(q!=NULL) 
{ 
cout<<"\n\n\n\t\t所有学生选课信息如下:\n"<<endl<<endl; 
cout<<"\t\t  姓名\t\t\t选课情况\n"<<endl; 
} 
else 
{ 
cerr<<"\n\n\n\t\t对不起,暂时没有学生名单!!请按任意键继续.."<<endl; 
return 1; 
} 
while(q) 
{ 
q->stu.getname(N); 
cout<<"\t\t  "<<N<<setw(25-strlen(N))<<" 已选 "<<q->stu.retfactcourse()<<" 门课 "<<endl; 
q = q->Next ; 
} 
char M[20]; 
cout<<"\n\t\t输入要查看的学生姓名:"; 
cin>>M; 
i=0; 
q=P->Next; 
while(q) 
{ 
q->stu.getname(N); 
if(strcmp(N,M)==0) 
i++; 
q = q->Next; 
} 
int j=0,k=1; 
if(i==0) 
{ 
 
cout<<"\n\t\t\t没找到这个学生!!请按任意键继续.."<<endl; 
return 1; 
} 
else if(i>1) 
{ 
 
cout<<"\n\t\t共找到"<<i<<"个姓名为"<<M<<"的学生"<<endl; 
cout<<"\t\t选择第几个:"; 
cin>>k; 
} 
if(k>i||k<=0) 
{ 
 
cerr<<"\n\t\t\t输入有误!按任意键继续.."<<endl; 
 
return 1; 
} 
q = P->Next; 
j=0; 
q=P->Next; 
 
while(q) 
{ 
q->stu.getname(N); 
if(strcmp(N,M)==0) 
j++; 
if(j==k) 
{ 
system("cls");; 
course *T=q->stu.retroot(); 
if(T==NULL) 
{ 
cout<<"\n\n\n\t\t\t"<<N<<"同学你还未选课! 请按任意键继续.."<<endl; 
return 1; 
} 
if (T!=NULL) 
T = T->Next; 
cout<<"\n\n\n\t\t"<<N<<"同学你已选"<<q->stu.retfactcourse()<<"门课,具体如下\n\n"<<endl; 
cout<<"\t\t\t课程名称\t\t成绩\n"<<endl; 
while(T) 
{ 
 
cout<<"\t\t\t "<<T->cname<<setw(25-strlen(T->cname))<<T->grade<<endl; 
T = T->Next; 
} 
j=0; 
} 
q = q->Next; 
} 
cout<<"\n\t\t请按任意键继续..."<<endl; 
return 1; 
} 
int menu_1_3(subjectdb *P)   //选课情况 
{ 
subjectdb *q=P->Next; 
char N[20]; 
system("cls"); 
cout<<"\n\n\t\t\t\t选课情况操作"<<endl; 
 
if(q!=NULL) 
{ 
cout<<"\n\n\n\t\t所有选课情况如下:\n"<<endl; 
cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl; 
} 
else 
{ 
cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl; 
return 1; 
} 
while(q) 
{ 
q->sub.getkname(N); 
cout<<"\t\t\t"<<N<<setw(28-strlen(N))<<q->sub.retactivestudent()<<endl; 
q = q->Next ; 
} 
cout<<"\n\t\t请按任意键继续.."<<endl; 
return 1; 
} 
 
int menu_1_4(studentdb *X,subjectdb *P)   //退出系统 
{ 
menu_2_9(X,P); 
tuichu(); 
return 0; 
} 
///////////////////////////////////////////////////////////////////////////////////// 
//管理端功能函数 
int menu_2_1(studentdb *P)   //增加学生 
{ 
char N[20]; 
system("cls");; 
cout<<"\n\n\t\t\t\t增加学生操作\n"<<endl; 
cout<<"\n\n\t\t请输入学生姓名:"; 
cin>>N; 
cout<<endl<<"\t\t增加学生操作成功,按任意键继续"<<endl; 
studentdb *newnode = new studentdb; 
newnode->Next = P->Next ; 
newnode->stu.readname(N); 
P->Next = newnode ; 
return 1; 
} 
 
int menu_2_2(subjectdb *P)   //增加课程 
{ 
 
float k; 
char N[20],M[20]; 
system("cls");; 
cout<<"\n\n\t\t\t\t增加课程操作\n"<<endl; 
cout<<"\n\n\t\t  请输入课程名称:"; 
cin>>N; 
cout<<endl; 
subjectdb *q = P->Next; 
while(q) 
{ 
q->sub.getkname(M); 
if(strcmp(N,M)==0) 
{ 
cout<<"\n\t\t此课程已经存在,按任意键继续"<<endl; 
return 1; 
} 
q = q->Next; 
} 
cout<<"\t\t输入此课程的学分:"; 
cin>>k; 
cout<<"\n\t\t增加课程操作成功,按任意键继续"<<endl; 
subjectdb *newnode = new subjectdb; 
newnode->Next = P->Next ; 
newnode->sub.setkname(N); 
newnode->sub.getcredit(k); 
P->Next = newnode ; 
return 1; 
} 
 
int menu_2_3(studentdb *P)   //删除学生 
{ 
system("cls"); 
cout<<"\n\n\t\t\t\t删除学生操作"<<endl; 
menu_2_7(P); 
studentdb *q = P->Next; 
if(q==NULL) 
return 1; 
int i; 
char N[20],M[20]; 
cout<<"\n\t请输入要删除的学生姓名 :"; 
cin>>N; 
i=0; 
while(q) 
{ 
q->stu.getname(M); 
if(strcmp(N,M)==0) 
i++; 
q = q->Next; 
} 
int j=0,k=1; 
if(i==0) 
{ 
 
cerr<<"\n\t\t没有这个学生!!请按任意键继续.."<<endl; 
return 1; 
} 
else if(i>1) 
{ 
cout<<"\n\t\t共找到"<<i<<"个姓名为"<<N<<"的学生"<<endl; 
cout<<"\n\t\t要删除第几个:"; 
cin>>k; 
} 
if(k>i||k<=0) 
return 1; 
q = P->Next; 
studentdb *R = P; 
j=0; 
while(q) 
{ 
q->stu.getname(M); 
 
if(strcmp(N,M)==0) 
j++; 
if(j==k) 
{ 
R->Next = q->Next; 
free(q); 
cout<<"\n\t\t删除学生操作成功,按任意键继续.."<<endl; 
return 1; 
} 
q = q->Next; 
R = R->Next; 
} 
return 1; 
}  
 
  
 
int menu_2_4(subjectdb *P)   //删除课程 
{ 
subjectdb *q=P->Next; 
char N[20]; 
system("cls");; 
cout<<"\n\n\t\t\t\t删除课程操作"<<endl; 
if(q!=NULL) 
cout<<"\n\n\n\t\t所有课程如下:\n"<<endl; 
else 
{ 
cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl; 
return 1; 
} 
while(q) 
{ 
q->sub.getkname(N); 
cout<<"\t\t\t\t"<<N<<endl; 
q = q->Next ; 
} 
q = P->Next; 
subjectdb *R = P; 
if(q==NULL) 
return 1; 
char M[20]; 
cout<<"\n\t    请输入要删除的课程 :"; 
cin>>M; 
while(q) 
{ 
q->sub.getkname(N); 
if(strcmp(N,M)==0) 
{ 
R->Next = q->Next; 
free(q); 
cout<<"\n\t\t删除课程操作成功,按任意键继续"<<endl; 
return 1; 
} 
q = q->Next; 
R = R->Next; 
} 
 
cerr<<"\n\t\t没有此课程!!\t请按任意键继续.."<<endl; 
return 1; 
} 
 
int menu_2_5(studentdb *X,subjectdb *P)   //填写成绩 
{ 
 
subjectdb *q=P->Next; 
char M[20],N[20],NA[20]; 
float score; 
system("cls"); 
cout<<"\n\n\t\t\t\t  填写成绩操作\n"<<endl; 
if(q!=NULL) 
cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl; 
else 
{ 
cout<<"\n\n\n\t\t对不起,暂时没有任何选修课程。请按任意键继续.."<<endl; 
return 1; 
} 
while(q) 
{ 
q->sub.getkname(N); 
cout<<"\t\t\t"<<N<<setw(28-strlen(N))<<q->sub.retactivestudent()<<endl; 
q = q->Next ; 
} 
 
q = P->Next; 
cout<<"\n\t请输入课程名称 :"; 
cin>>M; 
while(q) 
{ 
q->sub.getkname(N); 
studentname *K = q->sub.retfirst(); 
if(K!=NULL) 
K = K->Next; 
if(strcmp(N,M)==0) 
{ 
system("cls");; 
if(K!=NULL) 
{ 
cout<<"\n\n\t\t请填写选修"<<M<<"的学生成绩\n"<<endl; 
cout<<"\n\t\t\t姓名\t\t成绩"<<endl; 
} 
if(K==NULL) 
cerr<<"\n\t\t\t无任何信息!!请按任意键继续.."<<endl; 
while(K) 
{ 
 
cout<<"\n\t\t\t"<<K->tname<<"\t\t "; 
 
cin>>score; 
 
studentdb *XX = X->Next; 
while(XX) 
{ 
XX->stu.getname(NA); 
if(strcmp(NA,K->tname)==0) 
XX->stu.wrecourse(M,score); 
XX = XX->Next; 
} 
K = K->Next; 
} 
if(K==NULL) 
cout<<"\n\t\t填写成绩完毕!!请按任意键继续.."<<endl; 
return 1; 
} 
q = q->Next; 
} 
cerr<<"\n\t\t没有此课程!!请按任意键继续.."<<endl; 
return 1; 
} 
 
int menu_2_6(subjectdb *P)   //更改学分 
{ 
float k; 
system("cls"); 
cout<<"\n\n\n\t\t\t\t更改学分操作\n"<<endl; 
subjectdb *q = P->Next; 
 
char N[20],M[20]; 
if(q!=NULL) 
cout<<"\n\n\n\t\t 所有课程如下:\n"<<endl; 
else 
{ 
cerr<<"\n\n\n\t\t对不起,暂时没有任何可选课程。请按任意键继续.."<<endl; 
return 1; 
} 
while(q) 
{ 
q->sub.getkname(N); 
cout<<"\t\t\t\t  "<<N<<endl; 
q = q->Next ; 
} 
q = P->Next; 
cout<<"\n\n\n\t\t请输入要改的课程 :"; 
cin>>M; 
while(q) 
{ 
q->sub.getkname(N); 
if(strcmp(N,M)==0) 
{ 
 
cout<<"\n\t\t\t原来学分为 :"<<q->sub.readcredit()<<endl; 
cout<<"\n\t\t\t现要更改为 :"; 
cin>>k; 
q->sub.getcredit(k); 
cout<<"\n\t\t更改课程学分成功,按任意键继续"<<endl; 
return 1; 
} 
q = q->Next; 
} 
cerr<<"\n\t\t无此课程!!请按任意键继续.."<<endl; 
return 1; 
} 
 
int menu_2_7(studentdb *P)   //学生情况 
{ 
studentdb *q=P->Next; 
char N[20]; 
system("cls"); 
cout<<"\n\n\n\t\t\t\t学生情况操作\n"<<endl; 
if(q!=NULL) 
cout<<"\n\n\n\t\t所有学生名单如下:\n"<<endl; 
else 
{ 
cerr<<"\n\n\n\t\t对不起,暂时没有学生名单!请按任意键继续.."<<endl; 
return 1; 
} 
while(q) 
{ 
q->stu.getname(N); 
cout<<"\t\t\t\t"<<N; 
cout<<endl; 
q = q->Next ; 
} 
cout<<"\n\t\t按任意键继续.."<<endl; 
return 1; 
} 
 
 
int menu_2_8(subjectdb *P)   //选课情况 
{ 
 
subjectdb *q = P->Next; 
char M[20],N[20]; 
system("cls"); 
cout<<"\n\n\t\t\t\t选课情况操作"<<endl; 
 
if(q!=NULL) 
{ 
cout<<"\n\n\n\t\t所有选课情况如下:\n"<<endl; 
cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl; 
} 
else 
{ 
cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl; 
return 1; 
} 
while(q) 
{ 
q->sub.getkname(N); 
cout<<"\t\t\t"<<N<<setw(28-strlen(N))<<q->sub.retactivestudent()<<endl; 
q = q->Next ; 
} 
 
q = P->Next; 
cout<<"\n\t请输入课程名称 :"; 
cin>>M; 
while(q) 
{ 
q->sub.getkname(N); 
studentname *K = q->sub.retfirst(); 
 
if(K!=NULL) 
K = K->Next; 
if(strcmp(N,M)==0) 
{ 
system("cls");; 
if(K==NULL) 
{ 
cerr<<"\n\n\t无任何选课信息!!\t请按任意键继续.."<<endl; 
return 1; 
} 
cout<<"\n\n\n\t\t选修"<<M<<"课的学生名单如下:\n"<<endl; 
cout<<"\n\t\t\t姓名\t\t  成绩"<<endl; 
while(K) 
{ 
cout<<"\n\t\t\t"<<K->tname<<setw(20-strlen(K->tname))<<K->result<<endl; 
K = K->Next; 
} 
cout<<"\n\t\t请按任意键继续.."<<endl; 
return 1; 
} 
q = q->Next; 
} 
 
cerr<<"\n\t\t无此课程!!\t请按任意键继续.."<<endl; 
 
return 1; 
}  
 
  
 
 
int menu_2_9(studentdb *Y,subjectdb *P)   //保存数据 
{ 
studentdb *Z = Y->Next; 
subjectdb *X = P->Next; 
system("cls");; 
fstream file("subject.txt",ios::out); 
 
while(X) 
{ 
file.write ((char *)&amt;(X->sub),sizeof(X->sub)); 
X = X->Next; 
} 
file.close(); 
 
fstream file1("student.txt",ios::out); 
fstream file2("course.txt",ios::out); 
while(Z) 
{ 
file1.write ((char *)&amt;(Z->stu),sizeof(Z->stu)); 
int time = Z->stu.retfactcourse(); 
course *co = Z->stu.retroot(),*co1; 
if(co!=NULL) 
co1 = co->Next; 
while(time) 
{ 
file2.write((char *)(co1),sizeof(*co1)); 
co1 = co1->Next; 
time = time - 1; 
} 
Z = Z->Next; 
} 
file2.close (); 
file1.close(); 
 
cout<<"\n\n\n\t\t\t保存数据成功!按任意键继续.."<<endl; 
return 1; 
} 
int menu_2_0()    //退出系统 
{ 
tuichu(); 
return 0; 
} 
 
int main() 
{ 
subjectdb *P = new subjectdb,*Q=P; 
P->Next = NULL; 
subject M; 
fstream file("subject.txt",ios::in); 
while(1) 
{ 
file.read((char *)&amt;M,sizeof(M)); 
if(!file) break; 
Q->Next = new subjectdb; 
Q->Next ->Next = NULL; 
Q->Next ->sub = M; 
Q = Q->Next; 
} 
file.close (); 
 
studentdb *Y = new studentdb,*X=Y; 
Y->Next=NULL; 
student N; 
course O; 
fstream file1("student.txt",ios::in); 
fstream file2("course.txt",ios::in); 
while(1) 
{ 
file1.read((char *)&amt;N,sizeof(N)); 
if(!file1) break; 
Y->Next = new studentdb; 
Y->Next ->Next = NULL; 
Y->Next ->stu = N; 
int time = N.retfactcourse(); 
Y->Next->stu.clrroot (); 
while(time) 
{ 
file2.read ((char *)&amt;O,sizeof(course)); 
if(!file2) break; 
Y->Next->stu.addcourse(O.cname ,O.grade); 
time--; 
} 
Y=Y->Next; 
} 
file2.close (); 
file1.close (); 
Q=P->Next; 
while(Q) 
{ 
Q->sub.clractivestudnet(); 
Q->sub.findstudent(X); 
Q = Q->Next; 
} 
char c; 
char b; 
int br=1; 
b = menu(); 
if(b=='1') 
{ 
while(1) 
{ 
c = custom(); 
switch(c) 
{ 
case '1':br = menu_1_1(X,P);getch();break;  //学生选课 
case '2':br = menu_1_2(X,P);getch();break;  //学生情况 
case '3':br = menu_1_3(P);getch();  break;  //选课情况 
case '4':br = menu_1_4(X,P);        break;  //退出系统 
} 
if (br == 0) 
break; 
} 
} 
if(b=='2') 
{ 
password(); 
while(1) 
{ 
c = server(); 
switch(c) 
{ 
case '1':br = menu_2_1(X);getch();  break;   //增加学生 
case '2':br = menu_2_2(P);getch();  break;   //增加课程 
case '4':br = menu_2_4(P);getch();  break;   //删除课程 
case '3':br = menu_2_3(X);getch();  break;   //删除学生 
case '5':br = menu_2_5(X,P);getch();break;   //填写成绩 
case '6':br = menu_2_6(P);getch();  break;   //更改学分 
case '7':br = menu_2_7(X);getch();  break;   //学生情况 
case '8':br = menu_2_8(P);getch();  break;   //选课情况 
case '9':br = menu_2_9(X,P);getch();break;   //保存数据 
case '0':br = menu_2_0();break;              //退出系统 
} 
if (br == 0) 
break; 
} 
} 
return 0; 
}







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -