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. 总结报告(必须有,不计分)对于这次我们组设计的教师工作量管理系统,我感觉自己花了很多的时间并投入很多努力,虽然总是一次一次出现错误,并感到特气馁,但我还是坚持了下来,通过同学和老师的帮助,把错误一个一个都解决掉了,最后才得以成功。