基于visualC++的教师工作量管理系统文档格式.docx
《基于visualC++的教师工作量管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《基于visualC++的教师工作量管理系统文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
班级数目单个教学任务总课时
21.5*(理论课时+实验课时)
32*(理论课时+实验课时)
>
=42.5*(理论课时+实验课时)
(2)计算一个教师一个学期总的教学工作量。
总的教学工作量=
所有单个教学任务总课时之和。
(3)教师数据查询:
提示:
输入教师号或其他信息,即读出所有数据信息,并显示出来。
教师综合信息输出C、
输出教师信息到屏幕。
(总分之后的列要用程序语句计算)
2、简易学生成绩管理程序程序概要设计:
(1)系统模块层次结构图:
(2)主模块算法流程:
“开始”?
“输出菜单及提示信息”?
“输入选择”?
“输入学生成绩”?
“分课程等级”?
“添加某学生信息”?
“查找某学生信息”?
“修改某学生信息”?
“按指定顺序排序链表”?
“回收链表的内存”?
“交换两个结点的内容”?
“退出系统”。
(3)全局变量或数据结构说明:
#include<
iostream>
fstream>
string>
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.03、简易学生成绩管理程序详细设计及系统功能实现:
(1)详细设计:
#include<
stdio.h>
iomanip>
usingnamespacestd;
structnode//定义课程情况的存储结构{
stringTitle;
//课程名称(字符串型)
intClass_number,Class[40];
//班级数目以及班级(整型)
doubleTheory,Experiment,Single_summary;
//理论课时实验课时以及该门课的教学任务总课时(浮点型)
};
structdata//定义教师信息存储结构{
stringID,Name,Sex,Position;
//教师号教师名称性别职称(字符串型)
nodeCourse[10];
//教师所教课程具体信息(可以是多门课程)
intCourse_number;
//教师所教课程数目(整型)
doubleSummary;
//教师一个学期总的教学工作量(浮点型)}Teacher[2000];
//用数组存储教师信息
voidInput()//输入教师信息
{
inti,j,m,n,k;
doublemm;
k=0;
while(Teacher[k].ID!
="
"
)k++;
//在存储数组中找出一个空的存储空间来存储输入信息
cout<
<
请输入教师ID:
;
cin>
Teacher[k].ID;
//输入教师号
endl<
请输入教师姓名:
Teacher[k].Name;
//输入教师姓名
请输入教师性别:
Teacher[k].Sex;
//输入教师性别
请输入教师职称:
Teacher[k].Position;
//输入教师职称
请输入共任教几门课程:
Teacher[k].Course_number;
//输入教师任教课程数
Teacher[k].Summary=0;
for(i=1;
i<
=Teacher[k].Course_number;
i++)//循环结构实现任教多门课程的信息录入
请输入第"
门课程名称:
Teacher[k].Course[i].Title;
请输入该门课程共教几个班:
Teacher[k].Course[i].Class_number;
请输入该门课程所教班级:
for(j=1;
j<
=Teacher[k].Course[i].Class_number;
j++)
Teacher[k].Course[i].Class[j];
请输入该门课程的理论课时:
Teacher[k].Course[i].Theory;
请输入该门课程的实验课时:
Teacher[k].Course[i].Experiment;
switch(Teacher[k].Course[i].Class_number)//----------------------------------------------------------------------------
case
1:
mm=1*(Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment);
break;
2:
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;
//累计教师一学期总的教学工作量
voidOutput(intx)//输出教师信息
inti,j;
教师号:
Teacher[x].ID<
endl;
教师姓名:
Teacher[x].Name<
教师性别:
Teacher[x].Sex<
教师职称:
Teacher[x].Position<
i<
=Teacher[x].Course_number;
i++)
setprecision
(2);
所教的第"
门课程为:
Teacher[x].Course[i].Title<
共有理论课时为"
Teacher[x].Course[i].Theory<
小时"
共有实验课时为"
Teacher[x].Course[i].Experiment<
分别给以下班级上课:
=Teacher[x].Course[i].Class_number;
j++)cout
Teacher[x].Course[i].Class[j]<
"
该门课教学任务总课时为:
Teacher[x].Course[i].Single_summary<
一学期总的教学工作量为:
Teacher[x].Summary<
}
voidOutput_all()
inti;
for(i=0;
=1999;
i++)//循环查找记录数组,找出非空区间输出教师信息
if(Teacher[i].ID!
){Output(i);
intFind()//查看教师信息~~~
stringst;
请输入所要寻找的教师姓名(或ID):
st;
i++)//利用循环结构根据教师姓名(或者教师号)查找教师信息
if(st==Teacher[i].ID||st==Teacher[i].Name)
Output(i);
return0;
对不起,没有您要查找的教师或者您的输入信息有误,请核对您的输入~"
voidDelete()//删除教师信息~
请输入您要删除的教师姓名或教师号:
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)//更改教师姓名
请输入新姓名:
Teacher[x].Name=st;
修改成功~~~"
voidChange_ID(intx)//更改教师号
请输入新教师号:
Teacher[x].ID=st;
voidChange_sex(intx)//更改教师性别{
Teacher[x].Sex=st;
voidChange_position(intx)//更改教师职称{
请输入新职称:
Teacher[x].Position=st;
voidChange_course(intk)//更改教师授课信息大体过程与输入教师授课信息相似
switch(Teacher[k].Course[i].Class_number)
case1:
mm=Teacher[k].Course[i].Theory+Teacher[k].Course[i].Experiment;
case2:
<
intChange()//教师信息更改菜单{
boolbo;
charch;
请输入您想要修改的教师姓名或教师号:
//输入希望更改的教师姓名(或者教师号)
i++)//根据教师号(或者姓名)查找教师
if(Teacher[i].Name==st||Teacher[i].ID==st)j=1;
else{
对不起,未找到您要修改的教师信息,请核对您的输入!
bo=true;
while(bo)
请输入您要修改的信息:
A(姓名);
B(教师号);
C(性别);
D(职称);
E(任教课程):
//教师信息更改菜单
ch;
//输入更改选项
switch(ch)
case'
A'
:
Change_name(i);
B'
Change_ID(i);
C'
Change_sex(i);
D'
Change_position(i);
E'
Change_course(i);
继续修改请输入1退出请输入0:
bo;
voidwork()//工作菜单
请输入您需要的操作:
A(输入教师信息),B(查找并输出教师信息),C(查找并修改教师信息),D(删除教师信息),E(输出所有教师信息)"
//操作菜单
//输入操作选项
Input();
Find();
Change();
Delete();
Output_all();
main()
boolcool=1;
i++){Teacher[i].ID="
Teacher[i].Name="
}//将教师存储数组置空,方便信息存储判断
while(cool)
work();
继续操作请输入1,退出请输入0"
cool;
(2)调试和运行该程序,即可实现预期的系统功能。
4、遇到的问题和解决的办法:
遇到的问题:
由于该系统程序的开发过程比较细致和复杂,需用到的;
,,各方面的知识都比较多,而初学者对,,,学习特别是其中指针、数组和链表及输入流与输出流等比较陌生,且难以灵活运用,因而我们团队在整个开发过程经历一段很长的时间,且难以让其一次性地准确地调试和运行。
解决的办法:
更深入地查阅,,,基础教材和实践教材,并向同学寻
求一定的帮助,最终使其顺利地运行。
、总结:
由于对较为复杂的系统程序不能很灵活地开发,在整个过程中遇到了不少的困难;
但整个实践过程使我们在C++编程方面有了更好的了解,同时在程序开发方面的能力得到了一定的提高,而且还增强了我们对于各种实践的兴趣。
整个实践过程让我们认识到:
勤奋与实践最能挺升自身的能力。