这是俺写的一个选课系统,可是有几个错误咋也该不对,其中的选课模块,选课后不能显示已选课程,各位大哥大姐帮帮忙啊
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
#include <stdlib.h>
#include <conio.h>
#include<fstream.h>
struct course
{
int cnum;//课序号
char cname[8];//课程名
char tname[8];
float credit;
int max;
int hselected;
course * next;
course *head,*rear;
};
course * insert(course *&head,course *&rear,course*p)//添加课程
{
if(head==NULL)
{
head=rear=p;
head->next=0;
//cout<<"课序号:"<<p->cnum<<'\t'<<"课程名:"<<p->cname<<'\t'<<"任课教师:"<<p->tname<<'\t'<<"学分"<<p->credit<<'\t'<<"课容量:"<<p->max<<"已选人数:"<<p->hselected<<endl;
}
else
{
rear->next=p;
rear=rear->next;
//cout<<"课序号:"<<p->cnum<<'\t'<<"课程名:"<<p->cname<<'\t'<<"任课教师:"<<p->tname<<'\t'<<"学分"<<p->credit<<'\t'<<"课容量:"<<p->max<<"已选人数:"<<p->hselected<<endl;
p->next=NULL;
}
return(head);
}
course *create(course *head,course *rear)
{
course *p1;
int cnum;//课序号
char cname[8];//课程名
char tname[8];
float credit;
int max;
int hselected=0;
cout<<"请输入课序号,课程名 ,任课教师 ,学分,课容量,以-1结束;"<<endl;
cin>>cnum>>cname>>tname>>credit>>max;
while(cnum!=-1)
{
p1=new course;
p1->cnum=cnum;
strcpy(p1->cname,cname);
strcpy(p1->tname,tname);
p1->credit=credit;
p1->max=max;
p1->hselected=0;
head=insert(head,rear,p1);
rear=p1;
//cout<<head<<endl;
//cout<<rear<<endl;
cout<<"请输入课序号以-1结束"<<endl;
cin>>cnum;
if(cnum!=-1)
{
cout<<"请输入课程名 ,任课教师,学分,课容量"<<endl;
cin>>cname>>tname>>credit>>max;
}
}
if(head)
{
p1->next=0;
}
return(head);
}
course *deletecourse(course *head,int cnum)//删除课程
{
course *p1,*p2;
if(head==0)
{
cout<<"无课程记录"<<endl;
return(0);
}
else
{
if(head->cnum==cnum)
{
p1=head;
head=head->next;
delete p1;
cout<<"已删除了该课程!"<<endl;
}
else
{
p1=p2=head;p2=head->next;
while(p2->cnum!=cnum&&p2->next!=0)
{
p1=p2;p2=p2->next;
}
if(p2->cnum==cnum)
{
p1->next=p2->next;
delete p2;
cout<<"已删除了该课程!"<<endl;
}
else
cout<<"没有找到该课程"<<endl;
}
}
return(head);
}
void output(course *head)//显示所有课程情况
{
//cout<<head;
course *p=head;
//cout<<p;
cout<<"所有课程信息如下:"<<endl;
while(p)
{
cout<<"课序号:"<<p->cnum<<'\t'<<"课程名:"<<p->cname<<'\t'<<"任课教师:"<<p->tname<<'\t'<<"学分"<<p->credit<<'\t'<<"课容量:"<<p->max<<"已选人数:"<<p->hselected<<endl;
//cout<<p<<endl;
p=p->next;
//cout<<p<<endl;
}
cout<<endl;
}
struct student
{
int sid;
char sname[8];
char department[16];
int Class;
student *stunext;
student *front,*last;
};
student * insertstudent(student *&front,student *&last,student*p)//添加学生
{
if(front==NULL)
{
front=last=p;
front->stunext=0;
cout<<"学号:"<<p->sid<<'\t'<<"姓名:"<<p->sname<<'\t'<<"系:"<<p->department<<'\t'<<"班级"<<p->Class<<endl;
}
else
{
last->stunext=p;
last=last->stunext;
cout<<"学号:"<<p->sid<<'\t'<<"姓名:"<<p->sname<<'\t'<<"系:"<<p->department<<'\t'<<"班级"<<p->Class<<endl;
p->stunext=NULL;
}
return(front);
}
student *createstudent(student *front,student *last)
{
student *p1;
int sid;//课序号
char sname[8];//课程名
char department[16];
int Class;
cout<<"请输入学号,姓名 ,系 ,班级,以-1结束;"<<endl;
cin>>sid>>sname>>department>>Class;
while(sid!=-1)
{
p1=new student;
p1->sid=sid;
strcpy(p1->sname,sname);
strcpy(p1->department,department);
p1->Class=Class;
front=insertstudent(front,last,p1);
last=p1;
cout<<front<<endl;
cout<<last<<endl;
cout<<"请输入学号以-1结束"<<endl;
cin>>sid;
if(sid!=-1)
{
cout<<"请输入姓名 ,系,班级"<<endl;
cin>>sname>>department>>Class;
}
}
if(front)
{
p1->stunext=0;
}
return(front);
}
student *deletestudent(student *front,int sid)//删除学生
{
student *p1,*p2;
if(front==0)
{
cout<<"无学生纪录"<<endl;
return(0);
}
else
{
if(front->sid==sid)
{
p1=front;
front=front->stunext;
delete p1;
cout<<"已删除了该学生!"<<endl;
}
else
{
p1=p2=front;p2=front->stunext;
while(p2->sid!=sid&&p2->stunext!=0)
{
p1=p2;p2=p2->stunext;
}
if(p2->sid==sid)
{
p1->stunext=p2->stunext;
delete p2;
cout<<"已删除了该学生!"<<endl;
}
else
cout<<"没有找到该学生"<<endl;
}
}
return(front);
}
void outputstudent(student *front)//显示所有学生情况
{
student *p=front;
cout<<p<<endl;
cout<<"所有学生信息如下:"<<endl;
while(p)
{
cout<<"学号:"<<p->sid<<'\t'<<"姓名:"<<p->sname<<'\t'<<"系:"<<p->department<<'\t'<<"班级"<<p->Class<<endl;
cout<<p<<endl;
p=p->stunext;
cout<<p<<endl;
}
cout<<endl;
}
struct hcourse
{
int hcnum;//课序号
char hcname[8];//课程名
char htname[8];
float hcredit;
float grade;
hcourse * hnext;
hcourse *hhead,*hrear;
};
hcourse *createhcourse(hcourse *hhead,course *head,hcourse *hrear,int hcnum)//学生选课
{
hcourse *p=new hcourse;course *q1,*q2;
/*if(head->cnum=hcnum)
{
strcpy(p->hcname,head->cname);
p->hcnum=head->cnum;
p->hcredit=head->credit;
strcpy(p->htname,head->tname);
p->grade=0;
head->hselected=head->hselected+1;
if(hhead==NULL)
{
hhead=hrear=p;
hhead->hnext=0;
//cout<<hhead<<endl;
cout<<"课序号:"<<hhead->hcnum<<'\t'<<"课程名:"<<hhead->hcname<<'\t'<<"任课教师:"<<hhead->htname<<'\t'<<"学分"<<hhead->hcredit<<"成绩:"<<hhead->grade<<endl;
}
else
{
hrear->hnext=p;
hrear=hrear->hnext;
p->hnext=NULL;
cout<<"课序号:"<<p->hcnum<<'\t'<<"课程名:"<<p->hcname<<'\t'<<"任课教师:"<<p->htname<<'\t'<<"学分"<<p->hcredit<<'\t'<<"成绩:"<<p->grade<<endl;
//cout<<hhead<<endl;
//cout<<hhead->hcnum<<p->hcname<<p->hcredit<<endl;
}
//return(hhead);
}
else*/
{
q1=q2=head;q2=q2->next;
while(q2->cnum!=hcnum&&q2->next!=0)
{
q1=q2;q2=q2->next;
}
if(q2->cnum=hcnum)
{
strcpy(p->hcname,q2->cname);
p->hcnum=q2->cnum;
p->hcredit=q2->credit;
strcpy(p->htname,q2->tname);
p->grade=0;
q2->hselected=q2->hselected+1;
if(hhead==NULL)
{
hhead=hrear=p;
hhead->hnext=0;
//cout<<hhead<<endl;
cout<<"课序号:"<<hhead->hcnum<<'\t'<<"课程名:"<<hhead->hcname<<'\t'<<"任课教师:"<<hhead->htname<<'\t'<<"学分"<<hhead->hcredit<<"成绩:"<<hhead->grade<<endl;
}
else
{
hrear->hnext=p;
hrear=hrear->hnext;
hrear->hnext=NULL;
cout<<"课序号:"<<p->hcnum<<'\t'<<"课程名:"<<p->hcname<<'\t'<<"任课教师:"<<p->htname<<'\t'<<"学分"<<p->hcredit<<'\t'<<"成绩:"<<p->grade<<endl;
//cout<<hhead<<endl;
//cout<<hhead<<endl;
}
//return(hhead);
}
else cout<<"暂时没有该课程!"<<endl;
}
//cout<<hhead<<endl;
if(hhead)
{
p->hnext=0;
}
return(hhead);
return(hrear);
}
void deletehcourse(hcourse *hhead,int hcnum)//删除已选课程
{
hcourse *p1,*p2;
if(hhead->hcnum==hcnum)
{
p1=hhead;
hhead=hhead->hnext;
delete p1;
cout<<"已删除了该课程!"<<endl;
}
else
{
p1=p2=hhead;p2=hhead->hnext;
while(p2->hcnum!=hcnum&&p2->hnext!=0)
{
p1=p2;p2=p2->hnext;
}
if(p2->hcnum==hcnum)
{
p1->hnext=p2->hnext;
delete p2;
cout<<"已删除了该课程!"<<endl;
}
else
cout<<"您没有选修该课程"<<endl;
}
}
void outputhcourse(hcourse *hhead)
{
cout<<hhead;
hcourse *m=hhead;
cout<<m;
cout<<"所有已选课程信息如下:"<<endl;
while(m)
{
cout<<"课序号:"<<m->hcnum<<'\t'<<"课程名:"<<m->hcname<<'\t'<<"任课教师:"<<m->htname<<'\t'<<"学分"<<m->hcredit<<'\t'<<endl;//"课容量:"<<p->hmax<<"已选人数:"<<p->hselected<<endl;
cout<<m<<endl;
m=m->hnext;
cout<<m<<endl;
}
/*
void output(course *head)//显示所有课程情况course *p=head;
cout<<p;
cout<<"所有课程信息如下:"<<endl;
while(p)
{
cout<<"课序号:"<<p->cnum<<'\t'<<"课程名:"<<p->cname<<'\t'<<"任课教师:"<<p->tname<<'\t'<<"学分"<<p->credit<<'\t'<<"课容量:"<<p->max<<"已选人数:"<<p->hselected<<endl;
cout<<p<<endl;
p=p->next;
cout<<p<<endl;
}
cout<<endl;*/
}
/*void inputgrade(student *front,hcourse *hhead,int sid,int hcnum,float grade)// 成绩录入
{
if(head->cnum=*/
void tuichu()
{
system("cls");
cout<<"感谢您使用该系统,再见!!"<<endl;
}
void main()
{
course *head=NULL,*rear=NULL;
student *front=NULL,*last=NULL; int cnum,hcnum;
hcourse *hhead=NULL,*hrear=NULL;
int a;int b;int sid;
do
{
cout<<"欢迎使用选课系统"<<endl;
cout<<"1.学生端"<<endl;
cout<<"2.管理端"<<endl;
while(1)
{
cout<<"请选择登录方式:";
cin>>a;
switch(a)
{
do
{
case 1:
{
cout<<"1:学生选课"<<endl;
cout<<"2:删除已选课程"<<endl;
cout<<"3:显示已选课程详细信息"<<endl;
cout<<"4:已修课程成绩查询"<<endl;
cout<<"0:退出"<<endl;
cout<<"请选择操作方式:";
cin>>b;
switch(b)
{
case 1:
{
cout<<"所有课程信息如下:"<<endl;
output(head);
cout<<"请输入您要选择的课的课序号:";
cin>>cnum;
createhcourse(hhead,head,hrear,cnum);
break;
}
case 2:
{
cout<<"请输入您要删除的课的课序号:";
cin>>hcnum;
deletehcourse(hhead,hcnum);
break;
}
case 3:
{
cout<<"您已选择的课程信息如下"<<endl;
outputhcourse(hhead);//outputhcourse(hcourse *hhead)
break;
}
/*case 4:
{
cout<<"请输入您要查询的课程的课序号;"<<endl;
}*/
case 0:tuichu();break;
}
}
}while(b);
do
{
case 2:
{
cout<<"1.添加学生。"<<endl;
cout<<"2.删除学生。"<<endl;
cout<<"3.添加课程。"<<endl;
cout<<"4.删除课程。"<<endl;
cout<<"5.录入学生成绩。"<<endl;
cout<<"6.显示所有学生情况。"<<endl;
cout<<"7.显示所有课程情况."<<endl;
cout<<"0.退出."<<endl;
cout<<"请选择操作方式:";
cin>>b;
switch(b)
{
case 1: front=createstudent(front,last);cout<<"按任意键继续……"<<endl;
//getch();
//system("cls");
break;
case 2:cout<<"请输入您要删除的学生的学号:";cin>>sid;deletestudent(front,sid);break;
case 3:head=create(head,rear);break;
case 4:cout<<"请输入您要删除的课程的课序号:";cin>>cnum;deletecourse(head,cnum);break;
//case 5:inputgrade(front,head,sid,hcnum,grade);break;
case 6:outputstudent(front);break;
case 7:output(head);break;
case 0:tuichu();break;
}
}
}while(b);
}
}
}while(a);
}
[
本帖最后由 lchhaihai 于 2008-5-21 19:45 编辑 ]