教师课程管理系统.docx

上传人:b****5 文档编号:6652836 上传时间:2023-01-08 格式:DOCX 页数:26 大小:157.98KB
下载 相关 举报
教师课程管理系统.docx_第1页
第1页 / 共26页
教师课程管理系统.docx_第2页
第2页 / 共26页
教师课程管理系统.docx_第3页
第3页 / 共26页
教师课程管理系统.docx_第4页
第4页 / 共26页
教师课程管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

教师课程管理系统.docx

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

教师课程管理系统.docx

教师课程管理系统

 

《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.教师课程管理类

templateclassCTManage

{

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

templateclassCTManage;

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

//课程信息结构体

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"

templateclassCTManage

{

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"

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

当前位置:首页 > 医药卫生 > 基础医学

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

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