教师课程管理系统.docx
- 文档编号:6652836
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:26
- 大小:157.98KB
教师课程管理系统.docx
《教师课程管理系统.docx》由会员分享,可在线阅读,更多相关《教师课程管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
教师课程管理系统
《C++程序设计》
综合项目报告
项目名称:
教师课程管理系统
专业:
软件
班级:
软件9021
项目成员:
孙毅,周文亮,马丽莉
报告日期:
2010年12月23日
一、设计任务
①设计一个简单的教师课程管理系统能按课程名字或者老师编号显示、查找、增加、删除和保存各种课程和老师信息。
②能够熟练掌握C++语言的基本知识和技能。
③基本掌握面向对象程序设计的基本思路和方法。
④能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
⑤学习并掌握程序开发的一般步骤和方法。
⑥熟悉异常处理的特点和用法;
⑦理解面向对象的思想,熟悉类、对象、继承及多态性概念;
二、系统分析
1)需求分析
在现代信息社会里,随着个人电脑的普及,简单的教师课程管理系统不仅可以减轻统计的操作负担,而且更明了,更有效的把课程,老师,班级联系在一起,思路明了,管理,查询,修改方便。
高效省时。
2)功能分析
①课程编号在生成课程信息时同时生成,每输入一个课程信息编号顺序加1。
②程序对部分课程有提升级别的功能。
③能按课程名字或者老师编号显示、查找、增加、删除和保存各种课程和老师信息。
3)性能分析
①硬件环境。
处理器:
InterCR300或更高。
内存:
128M(建议196MB)。
硬盘空间:
20MB。
②软件环境。
操作系统:
WindowsXP/Windows7。
支持环境:
MicrosoftVisualStudio6.0
4)结构模块分析
1:
类的层次图
2:
程序流程图
否
三、系统总体设计或详细设计
1.课程类
//课程基类
classCT
{
friendclassCTManage
public:
CT(){};
~CT(){};
CT(CourseInforCoIn,TeacherInforTeIn)//构造函数
{CI=CoIn;TI=TeIn;}
voidDisplay();//显示信息
CourseInforGetCI(){returnCI;}
protected:
CourseInforCI;//课程信息
TeacherInforTI;//教师信息
};
//公共基础课
classPublicBC:
publicCT
{
public:
PublicBC(){};
~PublicBC(){};
PublicBC(CourseInforCoIn,TeacherInforTeIn):
CT(CoIn,TeIn){}//构造函数
voidCalcuCPay();//计算课酬
};
//专业基础课
classProfessionBC:
publicCT
{
public:
ProfessionBC(){};
~ProfessionBC(){};
ProfessionBC(CourseInforCoIn,TeacherInforTeIn):
CT(CoIn,TeIn){}//构造函数
voidCalcuCPay();//计算课酬
};
//专业课
classProCourse:
publicCT
{
public:
ProCourse(){};
~ProCourse(){};
ProCourse(CourseInforCoIn,TeacherInforTeIn):
CT(CoIn,TeIn){}//构造函数
voidCalcuCPay();//计算课酬
};
//公选课
classPubCourse:
publicCT
{
public:
PubCourse(){};
~PubCourse(){};
PubCourse(CourseInforCoIn,TeacherInforTeIn):
CT(CoIn,TeIn){}//构造函数
voidCalcuCPay();//计算课酬
};
2.教师课程管理类
template
{
public:
CTManage(){}
~CTManage(){};
CTManage(TypeCTInf){CTI=CTInf;}//构造函数
voidAddCourse(inti);//课程添加
voidSaveCourse(constchar*filename);//课程保存
voidSearchCourse(constchar*filename,char*Cname);//课程查询
voidDeleteCourse(constchar*filename,char*Cname);//课程移除
voidCourseDisplay();//课程显示
TypeGetCTI(){returnCTI;}
intGetMaxCID(constchar*filename);
private:
TypeCTI;//课程类对象
intMaxCID;
};
四:
调试信息
1:
进入程序界面
2:
输入数字2选择专业基础课
3:
选择1添加课程输入课程信息
4:
返回查询课程
5:
返回删除课程
6:
确认删除课程
五:
程序代码
(1)menu.h(显示程序主界面)
#ifndefMENU_H
#defineMENU_H
voidmenu1()
{
cout< cout< cout<<"\t\t\t\t【教师课程管理系统】"< cout< cout< cout<<"\t\t[1]{公共基础课}"< cout< cout<<"\t\t[2]{专业基础课}"< cout< cout<<"\t\t[3]{专业课}"< cout< cout<<"\t\t[4]{公共课}"< cout< cout<<"\t\t【按Q键退出系统】"< cout< cout<<"\t\t请选择课程回车进入下一页面: "; } voidmenu2() { cout< cout< cout< cout< cout<<"\t\t[1]{课程添加}"< cout< cout<<"\t\t[2]{课程查询}"< cout< cout<<"\t\t[3]{课程删除}"< cout< cout< cout<<"\t\t【按R键回到主菜单】"< cout< cout<<"\t\t请选择操作回车进入下一页面: "; } #endif (2)course(课程类体) #ifndefCOURSE_H #defineCOURSE_H template ///////////////////////////////////////////////////////////// //课程信息结构体 structCourseInfor { intCourseID;//课程编号 charCourseNam[20];//课程名称 intGrad;//课程等级 intHours;//课时 doubleBasePay;//基本课酬 }; //设置课程信息 voidSetCI(CourseInfor&CI,intID,char*CN,intgrad,inthour,doublepay) {CI.CourseID=ID;strcpy(CI.CourseNam,CN); CI.Grad=grad;CI.Hours=hour;CI.BasePay=pay;} ///////////////////////////////////////////////////////////// //教师信息结构体 structTeacherInfor { intTeacherID;//教师编号 charTeacherNam[10];//教师姓名 intClassID;//所授课班编号 intClassNum;//班级数 doubleCoursePay;//课酬 }; //设置教师信息 voidSetTI(TeacherInfor&TI,intID,char*TN,intCID,intCNum,doublepay) {TI.TeacherID=ID;strcpy(TI.TeacherNam,TN); TI.ClassID=CID;TI.ClassNum=CNum;TI.CoursePay=pay;} ///////////////////////////////////////////////////////////// //课程基类 classCT { friendclassCTManage public: CT(){}; ~CT(){}; CT(CourseInforCoIn,TeacherInforTeIn)//构造函数 {CI=CoIn;TI=TeIn;} voidDisplay();//显示信息 CourseInforGetCI(){returnCI;} protected: CourseInforCI;//课程信息 TeacherInforTI;//教师信息 }; voidCT: : Display()//显示信息 { cout<<"\t课程名称: "< cout<<"\t课程编号: "< cout<<"\t课程等级: "< cout<<"\t课时: "< cout<<"\t基本课酬: "< cout<<"\t教师姓名: "< cout<<"\t教师编号: "< cout<<"\t班级编号: "< cout<<"\t班级数目: "< cout<<"\t课酬: "< } ///////////////////////////////////////////////////////////// //公共基础课 classPublicBC: publicCT { public: PublicBC(){}; ~PublicBC(){}; PublicBC(CourseInforCoIn,TeacherInforTeIn): CT(CoIn,TeIn){}//构造函数 voidCalcuCPay();//计算课酬 }; voidPublicBC: : CalcuCPay() { doublea=1.1,b=1.2; if(1<=TI.ClassNum&&TI.ClassNum<=3)//班级数目1—3 {TI.CoursePay=CI.BasePay*TI.ClassNum;} if(4<=TI.ClassNum&&TI.ClassNum<=6)//班级数目4—6 {TI.CoursePay=CI.BasePay*TI.ClassNum*a;} if(TI.ClassNum>6)//班级数目大于6 {TI.CoursePay=CI.BasePay*TI.ClassNum*b;} } ///////////////////////////////////////////////////////////// //专业基础课 classProfessionBC: publicCT { public: ProfessionBC(){}; ~ProfessionBC(){}; ProfessionBC(CourseInforCoIn,TeacherInforTeIn): CT(CoIn,TeIn){}//构造函数 voidCalcuCPay();//计算课酬 }; voidProfessionBC: : CalcuCPay() { doublea=1.2; TI.CoursePay=CI.BasePay*TI.ClassNum*a; } ///////////////////////////////////////////////////////////// //专业课 classProCourse: publicCT { public: ProCourse(){}; ~ProCourse(){}; ProCourse(CourseInforCoIn,TeacherInforTeIn): CT(CoIn,TeIn){}//构造函数 voidCalcuCPay();//计算课酬 }; voidProCourse: : CalcuCPay() { doublea=1.2; TI.CoursePay=CI.BasePay*TI.ClassNum*a; } ///////////////////////////////////////////////////////////// //公选课 classPubCourse: publicCT { public: PubCourse(){}; ~PubCourse(){}; PubCourse(CourseInforCoIn,TeacherInforTeIn): CT(CoIn,TeIn){}//构造函数 voidCalcuCPay();//计算课酬 }; voidPubCourse: : CalcuCPay() { TI.CoursePay=CI.BasePay*TI.ClassNum; } #endif (3)CTManage() #ifndefCTMANAGE_H #defineCTMANAGE_H #include #include"course.h" template { public: CTManage(){} ~CTManage(){}; CTManage(TypeCTInf){CTI=CTInf;}//构造函数 voidAddCourse(inti);//课程添加 voidSaveCourse(constchar*filename);//课程保存 voidSearchCourse(constchar*filename,char*Cname);//课程查询 voidDeleteCourse(constchar*filename,char*Cname);//课程移除 voidCourseDisplay();//课程显示 TypeGetCTI(){returnCTI;} intGetMaxCID(constchar*filename); private: TypeCTI;//课程类对象 intMaxCID; }; template voidCTManage : AddCourse(inti)//课程添加 { intCoID=i,TID,grad,ClaID,Hour,CNum; charCN[20],TN[10]; doubleBP,CP=0; CourseInforCIf;//课程信息 TeacherInforTIf;//教师信息 cout<<"输入课程名称: ";cin>>CN; cout<<"输入课程等级: ";cin>>grad; cout<<"输入课时: ";cin>>Hour; cout<<"输入基本课酬: ";cin>>BP; cout<<"输入教师姓名: ";cin>>TN; cout<<"输入教师编号: ";cin>>TID; cout<<"输入教室编号: ";cin>>ClaID; cout<<"输入班级数目: ";cin>>CNum; SetCI(CIf,CoID,CN,grad,Hour,BP); SetTI(TIf,TID,TN,ClaID,CNum,CP); TypeCTIf(CIf,TIf);//构造类对象 CTIf.CalcuCPay();//计算教师课酬 CTI=CTIf;//把课程类对象赋给私有成员 } template intCTManage : GetMaxCID(constchar*filename) { fstreamfile; TypeCTIf; file.open(filename,ios: : in|ios: : out|ios: : binary); file.seekg(0,ios: : beg); file.read((char*)&CTIf,sizeof(CTIf)); longlength=sizeof(CTIf); file.seekg(0,ios: : end); longendoffset=file.tellg(); if(endoffset==0) {MaxCID=0;} else { file.seekg(endoffset-length,ios: : beg); file.read((char*)&CTIf,sizeof(CTIf)); MaxCID=CTIf.GetCI().CourseID; } returnMaxCID; } template voidCTManage : SaveCourse(constchar*filename)//课程保存 { fstreamfile;//文件对象 file.open(filename,ios: : in|ios: : out|ios: : binary);//打开文件 file.seekp(0,ios: : end);//定位到文件尾 file.write((char*)&CTI,sizeof(CTI));//把课程信息写入文件 file.clear(); file.close();//关闭文件 } template voidCTManage : SearchCourse(constchar*filename,char*Cname)//课程查询 { fstreamfile;//文件对象 TypeCTIf;//课程对象 inttag=1;//查找标志,1为查找失败,0尾查找成功 file.open(filename,ios: : in|ios: : out|ios: : binary); file.seekg(0,ios: : end); longEndoffset=file.tellg();//取文件尾位置 if(Endoffset==0){cout<<"文件为空! "< file.clear(); file.seekg(0,ios: : beg);//定位到文件头 while(Endoffset! =file.tellg())//不是文件尾时读取文件 { file.read((char*)&CTIf,sizeof(CTIf)); if(! strcmp(CTIf.GetCI().CourseNam,Cname)) {CTI=CTIf;tag=0;break;}//找到课程,标志置0 } if(tag==1) {cout<<"未找到匹配的课程,请确认! "< else {cout<<"查找成功! "< } template voidCTManage : DeleteCourse(constchar*filename,char*Cname)//删除课程 { fstreamfile; TypeCTIf[20];//课程对象数组 inti=0,tag=1; file.open(filename,ios: : in|ios: : out|ios: : binary); file.seekg(0,ios: : end); longEndoffset=file.tellg(); file.clear(); file.seekg(0,ios: : beg); while(Endoffset! =file.tellg())//读取文件 { file.read((char*)&CTIf[i],sizeof(CTIf[i])); if(! strcmp(CTIf[i].GetCI().CourseNam,Cname)) {i--;tag=0;}//读到要删除的文件,跳过 file.clear(); i++; } file.close(); file.open(filename,ios: : trunc|ios: : binary);//清空文件 file.close(); file.open(filename,ios: : in|ios: : out|ios: : binary); file.seekp(0,ios: : beg); for(intj=0;j { file.write((char*)&CTIf[j],sizeof(CTIf[j])); file.clear(); } file.close();//关闭文件 if(tag==1) {cout<<"系统无该课程,无需删除! "< else {cout<<"该课程已成功删除! "< } template voidCTManage : CourseDisplay()//课程显示 { CTI.Display();//输出信息 } #endif (4)main(主程序) #include #include #include #include"menu.h" #include"CTManage.h"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教师 课程 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)