C++选课管理系统课程设计.docx

上传人:b****5 文档编号:5568292 上传时间:2022-12-27 格式:DOCX 页数:31 大小:20.43KB
下载 相关 举报
C++选课管理系统课程设计.docx_第1页
第1页 / 共31页
C++选课管理系统课程设计.docx_第2页
第2页 / 共31页
C++选课管理系统课程设计.docx_第3页
第3页 / 共31页
C++选课管理系统课程设计.docx_第4页
第4页 / 共31页
C++选课管理系统课程设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C++选课管理系统课程设计.docx

《C++选课管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C++选课管理系统课程设计.docx(31页珍藏版)》请在冰豆网上搜索。

C++选课管理系统课程设计.docx

C++选课管理系统课程设计

 

///////////////////////////////////////////////////////////////

//头文件及函数声明

#include

#include

#include

#include

#include

#include

usingnamespacestd;

classXS;

classJS;

classstu;

classsubject;

intmenu();//主菜单

intmenu1();//学生选课端菜单

intmenu2();//管理端菜单

template

voidADD(TP);//增加功能函数模板

template

voidLOOK(TP);//查看功能函数模板

template

voidDELETE(TP);//删除功能函数模板

voidxuanke(XSP,charnu[],charna[]);//选课功能函数

voidtuixuan(XSP,charnu[],charna[]);//退选课程功能函数

voidlookyixuan(XSP,charnu[],charna[]);//查看学生已选课程函数voiddayin(XSP,charnu[],charna[]);//打印学生选课情况函数

voidtuichu();//退出系统函数

voidpassword();//密码检查功能函数

/////////////////////////////////////////////

//定义课程信息类

structcourse

{charcnum[10];

charcname[20];

charcteacher[20];

floatcredit;

};

structCourse

{coursekecheng;

Course*next;

};

classsubject

{Course*head;

Course*p;

public:

 

//头指针

//当前指针

 

subject(){head=p=NULL;};

voidAdd();

voidDelete();

//删除课程

intSearch(charnu[]);

voidReadFile();

//根据课程号查找课程

//从文件中读取课程信息

voidWriteFile();

//向文件写入课程信息

voidDisplay();

//在屏幕中输出全部课程信息

friendXS;

friendJS;

friendvoidxuanke(XSP,charnu[],charna[]);

};

voidsubject:

:

Add()

{p=newCourse;

cout<<"\t请输入课程号:

";cin>>p->um;

if(Search(p->um)==0)

{cout<<"\t请输入课程名:

";cin>>p->ame;

cout<<"\t请输入任课教师:

";cin>>p->kecheng.cteacher;

cout<<"\t请输入课程学分:

";cin>>p->kecheng.credit;

p->next=head;

head=p;

cout<<"增加课程操作成功!

"<

 

//头插入建链表

}

else

cout<<"\n\t已经存在该课程,不能重复添加!

}

voidsubject:

:

Delete()//按课程号删除

 

"<

{if(head!

=NULL){intn=0;Course*kc=head;

Course*q1=head,*q2=head->next;charkh[10];

cout<<"\t请输入您要删除的课程号:

";cin>>kh;

while(kc!

=NULL)

{n++;if(strcmp(kc->um,kh)==0)break;kc=kc->next;

}

if(kc==NULL)cout<<"不存在该课程号!

"<

{if(n==1)head=head->next;else

{for(inti=1;i

 

q2=q2->next;

}

if(q2==NULL)

q1=NULL;

else

q1->next=q2->next;

}

cout<<"删除成功!

"<

}}

}

intsubject:

:

Search(charnu[])

{Course*kc=head;while(kc!

=NULL)

{if(strcmp(kc->um,nu)==0)break;kc=kc->next;

}

if(kc==NULL)return0;

elsereturn1;

}

voidsubject:

:

Display()//在屏幕中输出全部课程信息

{if(head==NULL)

cout<<"没有课程信息!

\n\n";

else{Course*k=head;

cout<

:

left)<

"<

:

left)<

<

:

left)<

分"<

while(k)

"

 

任课教师

 

"<

:

left)<

 

 

{cout<

:

left)<um<

:

left)<ame

<

:

left)<kecheng.cteacher<

:

left)<<

k->kecheng.credit<

k=k->next;

}

cout<

}

}

voidsubject:

:

ReadFile()//从文件读取课程信息

{p=newCourse;

ifstreamfip("课程信息.dat",ios:

:

in|ios:

:

binary);

if(!

fip)cout<<"文件打开失败!

"<

else

while(fip.read((char*)&p->kecheng,sizeof(p->kecheng)))

 

{p->next=head;head=p;p=newCourse;

}

fip.close();

deletep;

}

voidsubject:

:

WriteFile()

{Course*s=head;

 

//向文件写入课程信息

ofstreamfop;

fop.open("课程信息.dat",ios:

:

binary|ios:

:

trunc);

if(!

fop)

{cout<<"课程信息.dat无法打开!

"<

}

while(s)

{while(fop.write((char*)&s->kecheng,sizeof(s->kecheng)))

{s=s->next;

}

}

fop.close();

}

///////////////定义教师信息类

structteacher

{chartnum[10];

chartname[20];

charzhicheng[20];

};

structTeacher

{teacherjiaoshi;

Teacher*next;

};

classJS

{

Teacher*head;//头指针

Teacher*p;//当前指针

public:

JS(){head=p=NULL;};

voidAdd();

voidDelete();

voidSearch(charna[]);

intSearch1(charnu[]);

voidReadFile();

voidWriteFile();

 

//通过教师姓名查找任课教师

//通过教师号查找教师

//从文件中读取教师信息

//向文件写入教师信息

 

voidDisplay();

friendXS;

 

//在屏幕中输出全部教师信息

};

voidJS:

:

Add()

{p=newTeacher;

cout<<"\t请输入教师证号:

";cin>>p->jiaoshi.tnum;

if(Search1(p->jiaoshi.tnum)==0)

{cout<<"\t请输入教师姓名:

";cin>>p->jiaoshi.tname;

cout<<"\t请输入教师职称:

";cin>>p->jiaoshi.zhicheng;

p->next=head;

head=p;

cout<<"增加教师操作成功!

"<

 

//头插入建链表

}

else

cout<<"\n\t

该教师已经存在,不能重复添加!

"<

}

voidJS:

:

Delete()

{if(head!

=NULL)

{intn=0;

Teacher*js=head;

Teacher*q1=head,*q2=head->next;

charzh[10];

cout<<"\t请输入您要删除的教师证号:

";

cin>>zh;

while(js!

=NULL)

{n++;

if(strcmp(js->jiaoshi.tnum,zh)==0)break;

js=js->next;

}

if(js==NULL)cout<<"不存在该教师!

"<

else

{if(n==1)head=head->next;

else

{for(inti=1;i

{q1=q2;

q2=q2->next;

}

if(q2==NULL)

q1=NULL;

else

q1->next=q2->next;

}

cout<<"删除教师成功!

"<

}}

 

}

voidJS:

:

Search(charna[])

{Teacher*js=head;while(js!

=NULL)

{if(strcmp(na,js->jiaoshi.tname)==0)break;js=js->next;

}

if(js!

=NULL)

{cout<

:

left)<

:

left)<

<<"教师姓名"<

:

left)<

cout<

:

left)<jiaoshi.tnum<

:

left)

<jiaoshi.tname<

:

left)<jiaoshi.zhicheng<

}

else

cout<<"没有该教师信息!

"<

}

voidJS:

:

Display()

{if(head==NULL)

cout<<"没有教师信息!

\n\n";

else{Teacher*k=head;

cout<

:

left)<

"<

:

left)<

:

left)<

while(k)

{cout<

:

left)<jiaoshi.tnum

<

:

left)

<jiaoshi.tname<

:

left)<jiaoshi.zhicheng<

k=k->next;}

cout<

}

}

intJS:

:

Search1(charnu[])

{Teacher*js=head;while(js!

=NULL)

{if(strcmp(nu,js->jiaoshi.tnum)==0)break;

js=js->next;

}

if(js==NULL)return0;

elsereturn1;

}

voidJS:

:

WriteFile()

{Teacher*s=head;

ofstreamfop;

charxs[]="教师信息.dat";

 

fop.open(xs,ios:

:

binary|ios:

:

trunc);

if(!

fop)

{cout<<"教师信息.dat无法打开!

"<

}

while(s)

{while(fop.write((char*)&s->jiaoshi,sizeof(s->jiaoshi)))

{s=s->next;

}}

fop.close();

}

voidJS:

:

ReadFile()

{p=newTeacher;

ifstreamfip("教师信息.dat",ios:

:

in|ios:

:

binary);//以二进制形式打开文件if(!

fip)cout<<"文件打开失败!

"<

else

while(fip.read((char*)&p->jiaoshi,sizeof(p->jiaoshi)))

{p->next=head;head=p;

p=newTeacher;

}

fip.close();

deletep;

}

////////////////定义学生信息类

structstudent

{charsnum[10];

charsname[20];

};

structStudent

{studentxuesheng;

Student*next;};

classstu

{

Student*head;//头指针

Student*p;//当前指针

public:

stu(){head=p=NULL;};

voidAdd();

voidDelete();

intSearch(charnu[],charna[]);//

intSearch(charnu[]);

voidReadFile();

voidWriteFile();

 

//增加学生

//删除学生

按学生学号和姓名查找

//按学生学号查找

//将所有学生的信息写入文件保存

//从文件读出学生信息

 

voidDisplay();

friendXS;

 

//显示所有学生

};

voidstu:

:

Add()

{p=newStudent;

cout<<"\t请输入学号:

";cin>>p->xuesheng.snum;

if(Search(p->xuesheng.snum)==0)

{cout<<"\t请输入姓名:

";cin>>p->xuesheng.sname;

p->next=head;

head=p;

cout<<"增加学生操作成功!

 

"<

//头插入建链表

}

else

cout<<"\n\t该学生已经存在,不能重复添加!

}

voidstu:

:

Delete()//按学号删除

{if(head!

=NULL)

 

"<

{intn=0;

 

Student*q1=head,*q2=head->next;

charkh[10];

cout<<"\t请输入您要删除的学生学号:

";

cin>>kh;

while(kc!

=NULL)

{n++;

if(strcmp(kc->xuesheng.snum,kh)==0)break;

kc=kc->next;

}

if(kc==NULL)cout<<"不存在该学生!

"<

else

{if(n==1)head=head->next;

else

{for(inti=1;i

{q1=q2;

q2=q2->next;

}

if(q2==NULL)

q1=NULL;

else

q1->next=q2->next;

}

cout<<"删除成功!

"<

}}

}

 

intstu:

:

Search(charnu[],charna[])

{Student*kc=head;

while(kc!

=NULL)

{if(strcmp(kc->xuesheng.snum,nu)==0&&strcmp(kc->xuesheng.sname,na)==0)break;

kc=kc->next;

}

if(kc==NULL)return0;

elsereturn1;

}

intstu:

:

Search(charnu[])

{Student*kc=head;

while(kc!

=NULL)

{if(strcmp(kc->xuesheng.snum,nu)==0)break;kc=kc->next;

}

if(kc==NULL)return0;

elsereturn1;

}

voidstu:

:

WriteFile()

{Student*s=head;

ofstreamfop;

charxs[]="学生信息.dat";

fop.open(xs,ios:

:

binary|ios:

:

trunc);

if(!

fop)

{cout<<"学生信息.dat无法打开!

"<

}

while(s)

{while(fop.write((char*)&s->xuesheng,sizeof(s->xuesheng)))

s=s->next;

}

}

voidstu:

:

ReadFile()

{p=newStudent;

ifstreamfip("学生信息.dat",ios:

:

in|ios:

:

binary);

if(!

fip)cout<<"文件打开失败!

"<

else

while(fip.read((char*)&p->xuesheng,sizeof(p->xuesheng)))

{p->next=head;head=p;

p=newStudent;

}

fip.close();

deletep;

 

}

voidstu:

:

Display()

{if(head==NULL)cout<<"没有学生信息!

\n\n";

else{Student*k=head;

cout<

:

left)<

:

left)<

姓名"<

while(k)

{cout<

:

left)<xuesheng.snum<

:

left)<<

k->xuesheng.sname<

k=k->next;}

cout<

}

}

/////////////////////////学生类

classXS

{charnum[10];

charname[20];

Course*head;//已选课程

Course*p;

floattcredit;

public:

XS(){head=p=NULL;tcredit=0;};

voidset(charnu[],charna[])

{strcpy(num,nu);strcpy(name,na);};

voidAddcourse(charnu[]);//学生选课

intSearch(charnu[]);//按课程号查找以选课程

voidDeletecourse(charnu[]);//退选

voidShowcourse();//显示已选课程

floatget_tcredit();//获取已选课程总学分

voidReadFilecourse();//读取已选课程

voidWriteFilecourse();//将已选课程写入文件

friendvoidtuixuan(XSP,charnu[],charna[]);

};

voidXS:

:

Addcourse(charnu[])

{subjectsub;

sub.ReadFile();

p=newCourse;

if(sub.Search(nu)==1)

{if(Search(nu)==0)

{sub.p=sub.head;while(sub.p!

=NULL)

{if(strcmp(sub.p->um,nu)==0)break;sub.p=sub.p->next;

}

 

strcpy(p->um,sub.p->um);

strcpy(p->ame,sub.p->ame);

strcpy(p->kecheng.cteacher,sub.p->kecheng.cteacher);

p->kecheng.credit=sub.p->kecheng.credit;

p->next=head;

head=p;

cout<<"选课成功!

"<

}

elsecout<<"此课

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1