}
cout<<\现要更改为 :\
cin>>k;
q->sub.getcredit(k);
cout<<\更改课程学分成功,按任意键继续\return 1;
}
q = q->Next;
}
cerr<<\无此课程!!请按任意键继续..\return 1;
int menu_2_7(studentdb *P) //学生情况 { }
studentdb *q=P->Next; char N[20]; system(\
cout<<\学生情况操作\\n\if(q!=NULL) cout<<\所有学生名单如下:\\n\else {
cerr<<\对不起,暂时没有学生名单!请按任意键继续..\ return 1; }
while(q) {
q->stu.getname(N); cout<<\cout<
}
cout<<\按任意键继续..\return 1;
int menu_2_8(subjectdb *P) //选课情况 {
subjectdb *q = P->Next; char M[20],N[20]; system(\
cout<<\选课情况操作\if(q!=NULL) {
cout<<\所有选课情况如下:\\n\cout<<\课程名称\\t\\t选课人数\\n\
}
else { cerr<<\对不起,暂时没有课程!!请按任意键继续..\ return 1; }
while(q) { }
q = P->Next;
cout<<\请输入课程名称 :\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(\ if(K==NULL)
{
cerr<<\无任何选课信息!!\\t请按任意键继续..\
q->sub.getkname(N);
cout<<\q = q->Next ;
return 1; }
cout<<\选修\课的学生名单如下:\\n\cout<<\姓名\\t\\t 成绩\while(K) {
cout<<\ K = K->Next;
}
cout<<\请按任意键继续..\return 1;
}
q = q->Next;
}
cerr<<\无此课程!!\\t请按任意键继续..\return 1;
}
int menu_2_9(studentdb *Y,subjectdb *P) //保存数据 { studentdb *Z = Y->Next; subjectdb *X = P->Next;
system(\
fstream file(\while(X) { }
file.close();
fstream file1(\fstream file2(\while(Z) { }
file1.write ((char *)&(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;
file.write ((char *)&(X->sub),sizeof(X->sub)); X = X->Next;
}
Z = Z->Next;
file2.close (); file1.close();
cout<<\保存数据成功!按任意键继续..\return 1;
}
int menu_2_0() //退出系统 {
tuichu(); return 0;
}
int main() {
subjectdb *P = new subjectdb,*Q=P; P->Next = NULL;
subject M;
fstream file(\while(1) { file.read((char *)&M,sizeof(M)); }
file.close ();
studentdb *Y = new studentdb,*X=Y; Y->Next=NULL; student N; course O;
fstream file1(\fstream file2(\while(1) { }
file1.read((char *)&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 *)&O,sizeof(course)); }
if(!file2) break;
Y->Next->stu.addcourse(O.cname ,O.grade); time--;
if(!file) break;
Q->Next = new subjectdb; Q->Next ->Next = NULL; Q->Next ->sub = M; Q = Q->Next;
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;
四.测试与调试
程序中出现的问题:
1.从文件读入记录到程序里,一条记录有不同字段,分别要录入不同的变量里,最后用switch分别进行输出判断。
2.程序结束时,自动调用析构函数,没具体弄清析构函数其它用法,就把读出到文件的操作放在析构函数里面,导致文件里的数据在退出程序时被清空。清楚问题所在后,我就把读入文件的操作单独放在一个函数里,退出再调用。 3.在主函数调用菜单,先用的void类型,后来调用时发现不行,要输入的操作不能执行,就改成了char返回类型,判断其选择的什么。
4.用struct建立一条记录所需要的变量,再建立一个类,在类内建立一个结构成员数组,这样就可建立N条记录,但实际过程中,有时输入不到这么多条记录,所以建立了一个成员变量来保存建立多少条记录。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库学生选课系统1(6)在线全文阅读。
相关推荐: