学生选课管理系统课程设计.docx
- 文档编号:6635578
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:28
- 大小:21.12KB
学生选课管理系统课程设计.docx
《学生选课管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统课程设计.docx(28页珍藏版)》请在冰豆网上搜索。
学生选课管理系统课程设计
学生选课管理系统课程设计
面向对象程序设计课程设计任务书
学院名称:
数学与计算机学院课程代码:
_8404101_专业:
信息与计算科学年级:
2009
一、设计题目
学生选课管理系统
二、主要内容
学生选课管理系统实现对学生选课相关信息的管理,能处理学生、教师、课程信息的管理及选课操作。
三、具体要求及应提交的材料
1.每个学生包括有学号、姓名、总学分等内容;
2.每个教师包括工作证号、姓名、职称等信息;
3.课程包括课程号、课程名、任课教师、学分等信息;
4.能提供若干门课,由学生进行选择,打印出学生选课情况。
5.在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用
VC++ClassWizard设计(选作)。
设计结束后,每位同学必须上交如下材料:
1.《课程设计说明书》打印稿一份;
2.《课程设计说明书》电子文档及课程设计的程序源代码刻盘
四、主要技术路线提示
首先根据要解决的问题分析设计类图,抽象出各个类的数据成员和函数成员,然后进行详细编码,在主函数中创建类的对象,调用适当的成员函数或全局
函数实现相应的功能。
最后要对软件进行测试。
五、进度安排
共计两周时间,20个机时,建议进度安排如下:
1.选题和需求分析1学时
2.查阅资料(图书、期刊资料或上网查阅相关资料)2学时
3.构造框架(系统总体设计、类层次关系图)3学时
4.编程上机,调试10学时
5.现场验收合格(根据程序提问)1学时
6.书写课程设计报告3学时
当然,仅靠课内时间是不够的,希望同学们课外多花时间编程学习。
六、推荐参考资料(不少于3篇)
1(郑莉等编著.C++程序设计语言(第三版).北京:
清华大学出版社,2005.06
2.陈清华朱红主编.VisualC++课程设计案例精选与编程指导.南京:
东南大学出版社,2003.06
3.刘振安等编著.C++程序设计课程设计.机械工业出版社,2004.08,北京
//////////////////////////////////////////////////////////////
//头文件及函数声明
#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<<"不存在该课程号~"< 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<<"删除成功~"< }} } 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)< "< : left)< while(k) {cout< : left)< 15)< : left)< < : left)< (5)< : left)< 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无法打开~"< abort(); } 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)< < : left) < < : left)< } else cout<<"没有该教师信息~"< } voidJS: : Display() {if(head==NULL) cout<<"没有教师信息~\n\n"; else{Teacher*k=head; cout< : left)< "< : left)< < : left)< while(k) {cout< : left)< < : left) < < : left)< 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无法打开~"< abort(); } 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*kc=head; 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无法打开~"< abort(); } while(s) {while(fop.write((char*)&s->xuesheng,sizeof(s->xuesheng))) s=s->next;} } intwriteFile(List&L)//将数据写入文件保存 { ofstreamfop; fop.open("DATA.txt",ios: : binary); if(! fop)return0; fop.write((char*)&L,sizeof(L)); fop.close(); return1; } intReadFile(List&L) { ifstreamfip("DATA.txt",ios: : binary); if(! fip)return0; fip.read((char*)&L,sizeof(L)); fip.close(); return1; } 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<<"没有学生信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生选课管理系统 课程设计 学生 选课 管理 系统