教师工作量统计系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 选题与需求分析报告
选题与需求分析报告要求:
1.1选题背景意义:
随着高等学校的快速发展,高校教师的规模越来越大,教职工的数量也越来越多,每年对高校教师的评教管理无疑是一项琐碎、复杂而又十分细致的工作。

关于工作量的计算,项目繁多,而且一般不允许出错。

在以往,教务部门对教师工作量的统计工作一直都是采取手工的方式,每年需填制大量的表格,这就会耗费工作人员大量的时间和精力。

如若采用专门的计算机管理系统,不仅能够保证工作量核算准确无误、快速输出,而且还可以利用计算机对有关工作量的各种信息进行统计,通过对工作量管理所需的信息管理,不仅把管理人员从繁琐的数据计算处理中解脱出来,而且优化了管理体系,使其高效化,简易化、智能化,也提高了透明性和互动性。

1.2同类软件调研分析:
关于同类办公软件,目前大多数使用的是钉钉,钉钉作为目前较好的办公软件,功能更加强大,不仅能够统计出每个教师或者员工的使用时长,还能够统计出学生的学习情况,优点太多,缺点或者是个人建议就是操作可以简化一些,方便更多人使用。

1.3 详细的功能设计:8%(达到使用说明书的详细程度)
计算每个老师在一个学期中所教课程的总工作量。

(教师单个教学任务的信息为:教师号、姓名、性别、职称、任教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时)
1.教师信息处理:
1)录入教师授课信息,包括教师号,教师姓名,性别,教师职称,任教课程,任教班级,班级数目,教师理论课课时,实验课时;
2)修改教师信息;
3)插入教师信息;
4)删除教师信息;
5)浏览教师授课教学信息;
2.教师工作量信息处理
1) 计算一个教师一个学期总的教学工作量。

总的教学工作量=所有单个教学任务总课时之和(理论课课时+实验课课时)。

2)教师数据查询:
提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。

3.教师综合信息输出
提示:输出教师信息到屏幕。

整个程序的设计可分为7部分,即main函数,input_tea()函数,tea::modify()函数,tea::insert_tea()函数,tea::del_tea ()函数,tea::print()函数,tea::tongji函数。

A.main函数。

这是整个程序的主函数,调用其他函数来完成功能的实现。

B. input_tea()函数。

输入教师的一些基本信息。

C. tea::modify()函数。

修改教师的信息。

D. tea::del_tea()函数。

删除教师管理系统的教师信息。

E. tea::print()函数。

显示所输入的教师的信息。

F. tea::tongji函数。

通过教师号,查询教师的信息。

G. 退出系统。

退出运行界面。

2. 设计说明书
2.1 类设计
2.2主要技术难点和及实现方案/算法设计
这一部分的难点是关于教师工作量的计算:我这里的算法啊: void tea::query(int num)
{
int sum=0;
int sum1=0,sum2=0;
char id[20];
cout<<"请输入需要查询的教师ID:";
cin >> id;
for(int i=0; i<num; i++)
{
if(strcmp(id,tt[i].id)==0)
{
sum1 += tt[i].num_ck;
sum2 += tt[i].num_cs;
sum += tt[i].num;
}
}
cout<<"您查询的教师工作量如下"<<endl; cout<<"实验总课时:"<<sum2<<endl;
cout<<"课程总课时: "<<sum1<<endl;
cout<<"总课时:"<<sum<<endl;
}
void tea::tongji(int num)
{
int n = 0;
for(int i=0; i<num; i++)
{
int flag = 0;
if(n == 0)
{
strcpy(j[n].id,tt[i].id);
strcpy(j[n].name,tt[i].name);
j[n].num_cs = tt[i].num_cs;
j[n].num_ck = tt[i].num_ck;
j[n].num = tt[i].num;
//cout<<"1"<<endl;
n++;
}
else
{
for(int jj=0; jj<n; jj++)
{
if(strcmp(tt[i].id,j[jj].id) == 0) {
flag++;
j[jj].num_cs += tt[i].num_cs;
j[jj].num_ck += tt[i].num_ck;
j[jj].num = j[n].num_cs + j[n].num_ck; //cout<<"2"<<endl;
}
}
if(flag == 0)
{
strcpy(j[n].id,tt[i].id);
strcpy(j[n].name,tt[i].name);
j[n].num_cs = tt[i].num_cs;
j[n].num_ck = tt[i].num_ck;
j[n].num = tt[i].num;
//cout<<"3"<<endl;
n++;
}
}
}
//cout<<n<<endl;
for(int i=0; i<n; i++)
{
cout<<"教师姓名:" <<j[i].name <<endl;
cout<<"教师总理论课时:"<<j[i].num_ck <<"教师总实验课时:"<<j[i].num_cs;
cout<<"教师总课时:" <<j[i].num_ck + j[i].num_cs<<endl<<endl;
}
}
3. 用户手册
1.运行程序后,进入该程序的界面
然后依次输入对应的数字实现对应的操作,例如输入1,实现录入教师信息的操作
4. 程序源代码(必须有,不计分)
源代码中要包括必要的注释信息 #include <iostream>
#include <string>
#include <windows.h>
#include <cstdio>
using namespace std;
typedef struct Teacher
{
char id[20];
char name[20];
char sex[20];
char zc[20];
char cou[20];
char bj[20];
int num_b;
int num_ck;
int num_cs;
int num;
}teacher;
typedef struct Tongji {
char id[20];
char name[20];
int num_ck;
int num_cs;
int num;
}tj;
tj j[100];
teacher tt[100];
class tea
{
public:
void menu();
int input_tea(int num); void modify(int num);
int insert_tea(int num); int del_tea(int num);
void print(int num);
void query(int num);
void tongji(int num);
void write(int num); };
class TJ
{
public:
void print(int num);
void write(int num);
};
void tea::menu()
{
cout<<"\t\t欢迎使用教师工作量统计系统"<<endl; cout<<endl;
cout<<"1 --- >> 录入教师信息"<<endl;
cout<<"2 --- >> 修改教师信息"<<endl;
cout<<"3 --- >> 插入教师信息"<<endl;
cout<<"4 --- >> 删除教师信息"<<endl;
cout<<"5 --- >> 浏览教师授课信息"<<endl; cout<<"6 --- >> 查询教师工作量"<<endl;
cout<<"7 --- >> 统计教师工作量"<<endl;
cout<<"8 --- >> 教师综合信息输出"<<endl; }
int tea::input_tea(int num)
{
cout<<"请输入教师的个数:";
cin >> num;
for(int i=0; i<num; i++)
{
cout<<"请输入第"<<i+1<<"名教师的信息:"<<endl; cout<<"请输入教师号:"; cin>>tt[i].id;
cout<<"请输入教师姓名:"; cin>>tt[i].name;
cout<<"请输入教师性别:"; cin>>tt[i].sex;
cout<<"请输入教师职称:"; cin>>tt[i].zc;
cout<<"请输入认教课程:"; cin >> tt[i].cou; cout<<"请输入班级:"; cin>>tt[i].bj;
cout<<"请输入班级数目:"; cin>>tt[i].num_b;
cout<<"请输入理论课时:"; cin>>tt[i].num_ck; cout<<"请输入实验课时:"; cin>>tt[i].num_cs; tt[i].num = tt[i].num_ck + tt[i].num_cs;
cout<<endl;
}
return num;
}
void tea::modify(int num)
{
string id;
int flag = 0;
cout<<"请输入需要修改的教师ID:";
cin>>id;
for(int i=0; i<num; i++)
{
if(id == tt[i].id)
{
flag++;
cout<<"请输入修改的信息"<<endl;
cout<<"请输入教师姓名:"; cin>>tt[i].name; cout<<"请输入教师性别:"; cin>>tt[i].sex; cout<<"请输入教师职称:"; cin>>tt[i].zc;
cout<<"请输入认教课程:"; cin >> tt[i].cou; cout<<"请输入班级:"; cin>>tt[i].bj;
cout<<"请输入班级数目:"; cin>>tt[i].num_b;
cout<<"请输入理论课时:"; cin>>tt[i].num_ck; cout<<"请输入实验课时:"; cin>>tt[i].num_cs; tt[i].num = tt[i].num_ck + tt[i].num_cs;
}
}
if(flag == 0)
{
cout<<"未找到该教师信息!!!"<<endl;
}
}
int tea::insert_tea(int num)
{
int i = num;
cout<<"请输入新增的教师信息\n";
cout<<"请输入教师号:"; cin>>tt[i].id;
cout<<"请输入教师姓名:"; cin>>tt[i].name;
cout<<"请输入教师性别:"; cin>>tt[i].sex;
cout<<"请输入教师职称:"; cin>>tt[i].zc;
cout<<"请输入认教课程:"; cin >> tt[i].cou;
cout<<"请输入班级:"; cin>>tt[i].bj;
cout<<"请输入班级数目:"; cin>>tt[i].num_b; cout<<"请输入理论课时:"; cin>>tt[i].num_ck; cout<<"请输入实验课时:"; cin>>tt[i].num_cs; tt[i].num = tt[i].num_ck + tt[i].num_cs;
return ++i;
}
int tea::del_tea(int num)
{
string id;
int flag = 0;
cout<<"请输入您想删除的ID:";
cin>>id;
for(int i=0; i<num; i++)
{
if(id == tt[i].id)
{
flag++;
for(int j=i; j<num-1; j++)
{
tt[j] = tt[j+1];
}
break;
}
}
if(flag == 0)
{
cout<<"未找到您输入的教师信息!!"; return num;
}
else
{
cout<<"删除成功!!!";
return --num;
}
}
void tea::print(int num)
{
printf("教师姓名教师性别课程理论课时实验课时\n");
for(int i=0; i<num; i++)
{
printf("%-10s %-10s %-10s %-10d %-10d\n",tt[i].name,tt[i].s ex,tt[i].cou,tt[i].num_ck,tt[i].num_cs);
}
}
void write(int num)
{
FILE*fp = fopen("教师信息.txt","w");
for(int i=0; i<num; i++)
{
fprintf(fp,"%-10s %-10s %-10s %-10d %-10d\n",tt[i].name,tt[ i].sex,tt[i].cou,tt[i].num_ck,tt[i].num_cs);
}
fclose(fp);
}
void tea::query(int num)
{
int sum=0;
int sum1=0,sum2=0;
char id[20];
cout<<"请输入需要查询的教师ID:"; cin >> id;
for(int i=0; i<num; i++)
{
if(strcmp(id,tt[i].id)==0)
{
sum1 += tt[i].num_ck;
sum2 += tt[i].num_cs;
sum += tt[i].num;
}
}
cout<<"您查询的教师工作量如下"<<endl; cout<<"实验总课时:"<<sum2<<endl;
cout<<"课程总课时: "<<sum1<<endl;
cout<<"总课时:"<<sum<<endl;
}
void tea::tongji(int num)
{
int n = 0;
for(int i=0; i<num; i++)
{
int flag = 0;
if(n == 0)
{
strcpy(j[n].id,tt[i].id);
strcpy(j[n].name,tt[i].name);
j[n].num_cs = tt[i].num_cs;
j[n].num_ck = tt[i].num_ck;
j[n].num = tt[i].num;
//cout<<"1"<<endl;
n++;
}
else
{
for(int jj=0; jj<n; jj++)
{
if(strcmp(tt[i].id,j[jj].id) == 0)
{
flag++;
j[jj].num_cs += tt[i].num_cs;
j[jj].num_ck += tt[i].num_ck;
j[jj].num = j[n].num_cs + j[n].num_ck; //cout<<"2"<<endl;
}
}
if(flag == 0)
{
strcpy(j[n].id,tt[i].id);
strcpy(j[n].name,tt[i].name);
j[n].num_cs = tt[i].num_cs;
j[n].num_ck = tt[i].num_ck;
j[n].num = tt[i].num;
//cout<<"3"<<endl;
n++;
}
}
}
//cout<<n<<endl;
for(int i=0; i<n; i++)
{
cout<<"教师姓名:" <<j[i].name <<endl;
cout<<"教师总理论课时:"<<j[i].num_ck <<"教师总实验
课时:"<<j[i].num_cs;
cout<<"教师总课时:" <<j[i].num_ck + j[i].num_cs<<endl<<endl;
}
}
void TJ::print(int num)
{
printf("教师姓名教师性别职称课程班级班级数量理论课时实验课时总课时\n");
for(int i=0; i<num; i++)
{
printf("%-10s %-10s %-10s %-10s %-10s %-10d %-10d %-10d %-8d\n",tt[i].name,tt[i].sex,tt[i].zc,tt[i].cou,tt[i].bj,tt[i ].num_b,tt[i].num_ck,tt[i].num_cs,tt[i].num);
}
}
void TJ::write(int num)
{
FILE *fp = fopen("课程基本信息.txt","w");
for(int i=0; i<num; i++)
{
fprintf(fp,"%-10s %-10s %-10s %-10s %-10s %-10s %-10d %-10 d %-10d %-8d\n",tt[i].id,tt[i].name,tt[i].sex,tt[i].zc,tt[i ].cou,tt[i].bj,tt[i].num_b,tt[i].num_ck,tt[i].num_cs,tt[i]. num);
}
fclose(fp);
}
int read()
{
char c;
int i, j;
int h = 0;
FILE *fp = fopen("课程基本信息.txt", "r");
if (fp != NULL)
while ((c = fgetc(fp)) != EOF)
{
if (c == '\n')
h++;
}
}
rewind(fp);
for (i = 0; i < h; i++)
{
fscanf(fp,"%s %s %s %s %s %s %d %d %d %d\n",tt[i].id,tt[i] .name,tt[i].sex,tt[i].zc,tt[i].cou,tt[i].bj,&tt[i].num_b,&t t[i].num_ck,&tt[i].num_cs,&tt[i].num);
//printf("%-10s %-10s %-10s %-10s %-10s %-10d %-10d %-10d %-8d\n",tt[i].name,tt[i].sex,tt[i].zc,tt[i].cou,tt[i].bj,tt [i].num_b,tt[i].num_ck,tt[i].num_cs,tt[i].num);
fclose(fp);
return h;
}
int main()
{
tea t;
TJ t1;
int cho;
int num = read();
printf("%d\n",num);
t.menu();
while(1)
{
cin>>cho;
if(cho == 1)
{
system("cls");
num = t.input_tea(num);
system("pause");
}
else if(cho == 2)
{
system("cls");
t.modify(num);
system("pause");
}
else if(cho == 3)
{
system("cls");
num = t.insert_tea(num); system("pause");
}
else if(cho == 4)
{
system("cls");
num = t.del_tea(num);
}
else if(cho == 5)
{
system("cls"); t.print(num);
system("pause"); }
else if(cho == 6)
{
system("cls"); t.query(num);
system("pause"); }
else if(cho == 7)
{
system("cls"); t.tongji(num); system("pause");
}
else if(cho == 8)
{
system("cls"); t1.print(num); system("pause"); }
system("cls");
t.menu();
}
return 0;
}
5. 测试用例(必须有,不计分)1.键入2,修改教师新息
2.键入3,插入教师信息
3.键入5,浏览教师总体信息
4.键入6,查询教师信息
5.键入7,统计教师工作总量
6.键入8,输出教师综合信息
7,键入4,删除教师信息
再查询教师综合信息,可见已删除
6. 总结报告(必须有,不计分)
对于这次我们组设计的教师工作量管理系统,我感觉自己花了很多的时间并投入很多努力,虽然总是一次一次出现错误,并感到
特气馁,但我还是坚持了下来,通过同学和老师的帮助,把错误一个一个都解决掉了,最后才得以成功。

所以我要感谢老师和帮助过我的同学,让我在我的课程设计中坚持了下来。

虽然变好了程序,获得了运行的结果,但是我也自知其中存在许多的不足之处,比如程序过于冗长,运行过程中界面有些混乱,容易让操作人员产生误解,某些功能不太完善。

当然也有其优点所在,如程序结构清晰,有明确的操作提示等。

总之,经过几天的课程设计,我对C++语言有了更加浓厚的兴趣,它是一件非常有用的工具,学好它对我们以后的工作大有裨益。

相关文档
最新文档