基于visualC++的教师工作量管理系统.docx
- 文档编号:10055760
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:15
- 大小:82.42KB
基于visualC++的教师工作量管理系统.docx
《基于visualC++的教师工作量管理系统.docx》由会员分享,可在线阅读,更多相关《基于visualC++的教师工作量管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
基于visualC++的教师工作量管理系统
本科生课程设计(实践)任务书、设计报告
(C/C++语言程序设计)
题目教师工作量管理系统设计开发
学生姓名
指导教师
学院
专业班级
学生学号
计算机基础教学实验中心
教师工作量管理系统设计开发
摘要:
本课程设计是一个实现对教师工作量数据库库进行一定基本操作的程序设计,本课程设计中,程序设计设计语言采用VisualC++,运用数组、指针、函数结构体和各种变量编写程序,程序通过调试运行,基本实现开发目标中管理员查找,修改,添加,删除等功能,经过部分完善后,可以应用在实际教师工作量管理中。
关键词:
简易教师工作量管理程序功能需求分析(功能要求),简易学生成绩管理程序概要设计,简易学生成绩管理程序详细设计及系统功能实现,遇到的问题及解决的办法,总结。
1、教师工作量管理系统程序功能需求分析(功能要求):
采用文件和数组(或链表)等建立一个简单的教师工作量管理程序。
程序运行时下述班级成绩表格(或其部分内容)在内存中用数组(或链表)表示,假设一学期开设课程不超过10名。
程序运行结束时将表格保存到文件中以便下次使用。
要求:
A、教师信息处理
(1)输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。
(2)插入(修改)教师授课教学信息:
(3)删除教师授课教学信息:
(4)浏览教师授课教学信息:
B、教师工作量数据处理:
(1)计算单个教学任务总课时。
计算原则如下表:
班级数目
单个教学任务总课时
2
1.5*(理论课时+实验课时)
3
2*(理论课时+实验课时)
>=4
2.5*(理论课时+实验课时)
(2)计算一个教师一个学期总的教学工作量。
总的教学工作量二
所有单个教学任务总课时之和。
(3)教师数据查询:
提示:
输入教师号或其他信息,即读出所有数据信息,并显示出来。
C、教师综合信息输出提示:
输出教师信息到屏幕。
(总分之后的列要用程序语句计算)
2、简易学生成绩管理程序程序概要设计:
(1)系统模块层次结构图:
(2)主模块算法流程:
“开始”T“输出菜单及提示信息”7“输入选择”―“输入学生成绩”7“分课程等级”7“添加某学生信息”7“查找某学生信息”7“修改某学生信息”7“按指定顺序排序链表”7“回收链表的内
存”7“交换两个结点的内容”7“退出系统”。
(3)全局变量或数据结构说明:
#include
#include
#include
structItem//保存学生信息的结构体,附加链表链接指针
structTemp//保存学生信息的结构体,用于记录到文件
voidnumberOfRank(Item*p)//计算课程等级情况的函数
Item*Create()//创建链表
voidaddAItem(Item*head)//添加一个学生信息,加到链表的末尾
voidsearchTheItem(Item*head,chars[10])//查找学生信息,参数指定的是学号或者姓名
voidsearchTheItem(Item*head,intnumberOfA,intnumberOfB,intnumberOfC,intnumberOfD)//重载,按课程等级查找
voidfreshTheItem(Item*head,chars[10])//修改学生信息
Item*deleteTheItem(Item*h,chars[10])//删除某学生的信息
voidmemoryTheInformation(Item*head)//存储链表到文件,下次可以使用
voidcreateFromHighToLow(Item*head)//按总成绩从高到低排序链表
voidcreateFromHighToLow(Item*head,intx)//重载,按每一单科从高到低排序链表
voidDel(Item*head)//回收链表的内存
voidchange(Item*a,Item*b)//交换两个结点的内容
(4)程序开发和运行的环境:
VisualC++6.0
3、简易学生成绩管理程序详细设计及系统功能实现:
(1)详细设计:
#include
#include
#include
structnode//
{
stringTitle;//
intClass_number,Class[40];//
doubleTheory,Experiment,Single_summary;//
务总课时(浮点型)
定义课程情况的存储结构
课程名称(字符串型)
班级数目以及班级(整型)
理论课时实验课时以及该门课的教学任
};
voidInput()//
输入教师信息
{
inti,j,m,n,k;
doublemm;
cout< cin>>Teacher[k].Course[i].Title; cout< "; cin>>Teacher[k].Course[i].Class_number; cout< for(j=1;j<=Teacher[k].Course[i].Class_number;j++) cin>>Teacher[k].Course[i].Class[j]; cout< cin>>Teacher[k].Course[i].Theory; cout< cin>>Teacher[k].Course[i].Experiment; (Teacher[k].Course[i].Class_number) switch // { case 1: mm=1*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment);break; case2: mm=1.5*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment);break; case3: mm=2*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment);break; //计算该门课程的教学任务总课时 if(Teacher[k].Course[i].Class_number>3)mm=2.5*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment); Teacher[k].Course[i].Single_summary=mm; // Teacher[k].Summary+=Teacher[k].Course[i].Single_summary;//累计教师一学期总的教学工作量 } } voidOutput(intx)//输出教师信息 { inti,j; cout<<"教师号: "< cout<<"教师姓名: "< cout<<"教师性别: "< cout<<"教师职称: "< for(i=1;i<=Teacher[x].Course_number;i++) { cout< (2); cout<<"所教的第"< "< cout<<"共有理论课时为"< 为"< cout<<"分别给以下班级上课: "; for(j=1;j<=Teacher[x].Course[i].Class_number;j++)cout< cout< "< cout< cout<<" 一学期总的教学工作量为: "< voidOutput_all() { inti; for(i=0;i<=1999;i++)//循环查找记录数组,找出非空区间输出教师信息 if(Teacher[i].ID! =""){Output(i);cout< } intFind()//查看教师信息! ! ! { inti,j,m,n,k; stringst; cout<<"请输入所要寻找的教师姓名(或ID): "; cin>>st; for(i=0;i<=1999;i++)//利用循环结构根据教师姓名(或者教师号)查找教师信息 { if(st==Teacher[i].ID||st==Teacher[i].Name) { Output(i); return0; } } cout< "< { inti; stringst; cout<<"请输入您要删除的教师姓名或教师号: "; cin>>st; for(i=0;i<=1999;i++)//利用循环结构根据教师姓名(或者教师号)查找教师信息 { if(Teacher[i].Name==st||Teacher[i].ID==st)break; } if(Teacher[i].Name==st||Teacher[i].ID==st)//如果找到目标信息,执行删除命令 {Teacher[i].ID="";Teacher[i].Name="";} elsecout< "< } voidChange_name(intx)//更改教师姓名 { stringst; cout<<"请输入新姓名: "; cin>>st; Teacher[x].Name=st; cout< ! ! "< } voidChange_ID(intx)// 更改教师号 stringst; cout<<"请输入新教师号: cin>>st; Teacher[x].ID=st; cout< } voidChange_sex(intx)// { stringst; cout<<"请输入教师性别: cin>>st; Teacher[x].Sex=st; cout< } voidChange_position(intx)// { stringst; cout<<"请输入新职称: cin>>st; Teacher[x].Position=st; cout< } ! ! "< 更改教师性别 ! ! "< 更改教师职称 ! ! "< voidChange_course(intk)// 更改教师授课信息大体过程与输入教师授课信息相似 inti,j; stringst; doublemm; cout< "; cin>>Teacher[k].Course_number; Teacher[k].Summary=0; for(i=1;i<=Teacher[k].Course_number;i++) { cout< "; cin>>Teacher[k].Course[i].Title; cout< "; cin>>Teacher[k].Course[i].Class_number; cout< "; for(j=1;j<=Teacher[k].Course[i].Class_number;j++) cin>>Teacher[k].Course[i].Class[j]; cout< "; cin>>Teacher[k].Course[i].Theory; cout< "; cin>>Teacher[k].Course[i].Experiment; switch(Teacher[k].Course[i].Class_number) { case1: mm=Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment; case2: mm=1.5*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment); case3: mm=2*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment); } if(Teacher[k].Course[i].Class_number>3) mm=2.5*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment); Teacher[k].Course[i].Single_summary=mm; Teacher[k].Summary+=Teacher[k].Course[i].Single_summary; } cout< ! ! "< } intChange()// { inti,j; stringst; boolbo; charch; 教师信息更改菜单 cout<<"请输入您想要修改的教师姓名或教师号: cin>>st;// 教师号) for(i=0;i<=1999;i++)// 师 { if(Teacher[i].Name==st||Teacher[i].ID==st)break; } if(Teacher[i].Name==st||Teacher[i].ID==st)j=1; 输入希望更改的教师姓名(或者 根据教师号(或者姓名)查找教 else{ cout< 对不起,未找到您要修改的教师信息,请核对您的输入! "< return0; } bo=true; while(bo) { coutvvendlvv"请输入您要修改的信息: A(姓名);B(教师号);C(性别);D(职称);E(任 教课程): "< 教师信息更改菜单 cin >>ch; //输入更改选项 switch(ch) { case'A': Change_name(i);break; case'B': Change_ID(i);break; case'C': Change_sex(i);break; case'D': Change_position(i);break; case'E': Change_course(i);break; } cout< cin>>bo; } } voidwork()//工作菜单 { charch; cout<<"请输入您需要的操作: "< coutvv"A(输入教师信息),B(查找并输出教师信息),C(查找并修改教师信息),D(删除教师信 息),E(输出所有教师信息)"《endl;//操作菜单 cin>>ch; //输入操作选项 switch(ch) { case'A': Input();break; case'B': Find();break; case'C': Change();break; case'D': Delete();break; case'E': Output_all();break; } } main() { inti; boolcool=1; for(i=0;i<=1999;i++){Teacher[i].ID="";Teacher[i].Name="";}//将教师 存储数组置空,方便信息存储判断 while(cool) { work(); cout<<"继续操作请输入1,退出请输入0"< cin>>cool; } } (2)调试和运行该程序,即可实现预期的系统功能。 4、遇到的问题和解决的办法: 遇到的问题: 由于该系统程序的开发过程比较细致和复杂,需用到的C++各方面的知识都比较多,而初学者对C++学习特别是其中指针、数组和链表及输入流与输出流等比较陌生,且难以灵活运用,因而我们团队在整个开发过程经历一段很长的时间,且难以让其一次性地准确地调试和运行。 解决的办法: 更深入地查阅C++基础教材和实践教材,并向同学寻求一定的帮助,最终使其顺利地运行。 5、总结: 由于对较为复杂的系统程序不能很灵活地开发,在整个过程中遇到了不少的困难;但整个实践过程使我们在C++编程方面有了更好的了解,同时在程序开发方面的能力得到了一定的提高,而且还增强了我们对于各种实践的兴趣。 整个实践过程让我们认识到: 勤奋与实践最能挺升自身的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 visualC 教师 工作量 管理 系统