教师排课系统课程设计报告(C++)_第1页
教师排课系统课程设计报告(C++)_第2页
教师排课系统课程设计报告(C++)_第3页
教师排课系统课程设计报告(C++)_第4页
教师排课系统课程设计报告(C++)_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计课程设计报告设计题目:小型公司人员管理系统学 院:职业技术学院专 业:计算机科学与技术班 级:计 科职071学 号:0148学生姓名:彭银指导教师:杨敏成 绩:2008年1月9日面向对象技术与C+锦程设计任务书课程面向对象技术与C+ 班级 2009级7-8班指导教师 耿军雪题 目教师排课系统完成时间2010年06月21日至2010年06月25日主要内容设 计 报 告求1 .问题描述每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1, 2,n,其中1是最高的期望值。课程也有优先级, 1, 2,n,用来决定将课程分给教师的顺序,其中 1 是最高的优先级。设计一个程

2、序针对某些课程给某些教师进行排课。2 .基本要求程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级),教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有 信息应保存在文件中,程序根据课程的优先级以及教师对课程的期望值进行排课。为了公平起见,程序随机分配课程,如果 10门课程都有优先级 1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。3 .测试数据程序应能实现对不少于 20门课和10个教师的排课,并且使每个教师的

3、满意度达到最大,不 存在工作量不满的教师以及未分配的课等情况。1 .封面:(格式附后)2 .课程设计任务书3.课程设计报告:系统总体方案设计思路和主要步骤 各功能模块和流程图(4)设计代码心得体会和参考资料说明:学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字迹工整(也可用以打印),文字不少于5000字,并装订成册。版面要求1 .题目用黑体三号,段后距18磅(或1行),居中对齐;2 .标题用黑体四号,段前、段后距 6磅(或行);3 .正文用小四号朱体,行距为倍行距;4 .标题按“一”、“”、“1”、“”顺序编号。上机时间安排周次一二三四五六日第17周1-41-41-41-41-4指

4、导时问地点上机时间,E520一.系统总体方案:某学校每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期 望值,1, 2,n,其中1是最高的期望值。课程也有优先级,1, 2,n,用来 决定将课程分给教师的顺序,其中1是最高的优先级。设计一个程序针对某些课 程给某些教师进行排课。要求:(一)程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课 程名、课程号、周学时、总学时、优先级),教师对所希望讲授课程的期望值以 及教学工作量等相关信息,所有信息应保存在文件中。(二)程序根据课程的优先级以及教师对课程的期望值进行排课。最后输出排课情况,即某位老师上某门课程,以及某位老师的工

5、作量。(三)可以实现对文件的修改。(四)可以在各个界面中实现退出以及进入的循环。(五)可以退出本系统。(六)程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。 方法:为了公平起见,程序随机分配课程,如果10 门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10 位教师对某门课程的期望值为1,程序应从 10 位教师中随机选择一个。2. 设计思路和主要步骤:我们使用面向对象程序设计方法的思路进行分析,得出了整个系统应该涉及三个类的信息和操作,分别是教师类,课程类,排课类。各类信息以文件方式的储存以及实现各种功能和

6、界面的实现是在 main函数中体现。(一)教师类teacher :包括私有数据成员 姓名name,编号id ,工作量 work_load , 已有工作量total (方便判断是否排满课)。 成员函数包括设置和得到私有成员值的成员函数与输出教师信息的成员函数。( 2) 课程类 course : 私有成员有课程名 course_name, 课程号 course_id ,周课时week_hour,总课时total_hour ,优先度N。( 3)由于考虑到这应该是一个完整的排系统,加上我们希望这个系统的界面能够做到清晰、明了, 我们经讨论后决定采用一个总操作界面,一个分操作界面。总操作界面应该包括(分

7、别对应1. 输入教师信息2. 输入课程信息3 输入教师对课程期望度4. 排课 5. 输出排课结果6. 显示操作菜单7. 输出教师文件信息 8. 输出课程文件信息9. 输出教师期望度文件信息10. 修改文件信息0. 退出)修改文件信息界面中又因该包括1.修改教师文件2.修改课程文件3.修改教师期望度信息0.退出3.各功能模块与流程图:说明:以下是对应上面系统功能模块实图的系统流程图,因为制图的不便,故只将成功完成一次操作的流程给出,而“各个流程中中途如果输入了菜单中没有的项以及数据保存文件中没有的数据而被强制退出” 的流程因为过于复杂(每步都 要进行判断)而没有给出,实际情况读者朋友一试便知。在

8、此我们对此表示深深 的歉意,我们以后一定会努力完善我们各方面的工作的。开始各功能模块:命令对应函数功能描述1input_teacher输入数据并写入文件2input_course输入数据并写入文件3input_num输入数据并写入文件4arranging排课5print输出排课结果6print_help帮助7print_teacher输出文件信息8print_course输出文件信息9print_num输出文件信息10change修改文件信息(五)程序代码:#include<>#include<>class teacherprivate:char name11;int

9、id;int work_load;int total;public:teacher();void set_teacher(char *pn,int i,int w);void set_total(int t)total=t;char *get_name()return name;int get_id()return id;int get_work_load()return work_load;int get_total()return total;void print();teacher:teacher()strcpy(name," 无 ");id=0;work_load=

10、0;total=0;void teacher:set_teacher(char *pn,int i,int w)strcpy(name,pn);id=i;work_load=w;void teacher:print()cout<<" 姓名:"<<name<<endl;cout<<" 编号:"<<id<<endl;cout<<" 工作量 :"<<work_load<<endl;#include<>class cours

11、e private:char course_name15;int course_id;int week_hour;int total_hour;int N;public:course(void);void set_course(char *pname,int i,int w,int t,int n);char *get_course_name()return course_name;int get_course_id()return course_id;int get_week_hour()return week_hour;int get_total_hour()return total_ho

12、ur;int get_N()return N;void print();course:course(void)strcpy(course_name," 无 ");course_id=0;week_hour=0;total_hour=0;N=0;void course:set_course(char *pname,int i,int w,int t,int n)strcpy(course_name,pname);course_id=i;week_hour=w;total_hour=t;N=n;void course:print()cout<<" 课程名:

13、"<<course_name<<endl;cout<<" 编号 :"<<course_id<<endl;cout<<" 周学时:"<<week_hour<<endl;cout<<" 总学时:"<<total_hour<<endl;cout<<" 优先级:"<<N<<endl;class arrangeprivate:int x;int y;

14、public:arrange(void)x=0;y=0;void set_x(int a)x=a;void set_y(int b)y=b;int get_x()return x;int get_y()return y;排课 .cpp:#include<>#include <>#include<>#include<>#include<>#include""#include""#include"" #include <>输入教师基本数据n"cout<

15、<" 2. 输入课程基本数据n"cout<<" 3.输入教师对课程满意度n"cout<<" 4.排课n"cout<<"5.输出排课结果n"cout<<" 6.帮助n"cout<<"7.输出教师信息n"cout<<"8.输出课程信息n"cout<<" 9.输出教师对课程满意度n"cout<<"10.修改文件数据n"co

16、ut<<" 0. 退出 n"cout<<"n 输入你的选择:"int ch;do输入教师基本数据n"输入课程基本数据n"输入教师对课程满意度n"排课n"输出排课结果n"帮助n"退出n"et_teacher(name,id,work);teachers<<name<<setw(20)<<id<<setw(20)<<work<<endl;if(total=m) break;if(total>

17、;m) continue;();void input_course(course *c,int m)et_course(name,id,week_hour,total_hour,d1);courses<<name<<setw(10)<<id<<setw(10)<<week_hour<<setw(10)<<total_hour<<setw(10)<<d1<<endl;();void input_num(int *num,int n,int m) et_N();srand(uns

18、igned)time(NULL);for(s=0;s<m;s+)if(cs.get_N()<min)min=cs.get_N();while(h)for(i=0;i<m;i+)if(ci.get_N()=min) et_total()<tj.get_work_load() )min1=numji;while(1>0)b=rand()%n;if(b>n)continue;else if(tb.get_total()>tb.get_work_load()continue;else if(numbi!=min1) et_x(b);aq.set_y(i);q+

19、;int w=tb.get_total()+1;tb.set_total(w);et_x();b1=ai.get_y();cout<<"第"<<a1+1<<"位老师上第"<<b1+1<<"门课"<<endl;ta1.print();cb1.print();void print_help()输入教师基本数据n"cout<<" 2. 输入课程基本数据n"cout<<" 3.输入教师对课程满意度n"

20、;cout<<" 4.排课n"cout<<"5.输出排课结果n"cout<<" 6.帮助n"cout<<"7.输出教师信息n"cout<<"8.输出课程信息n"cout<<" 9.输出教师对课程满意度n"cout<<"10.修改文件数据n"cout<<" 0. 退出 n"void print_teacher()修改教师基本数据n"c

21、out<<" 2. 修改课程基本数据n"cout<<" 3. 修改教师对课程满意度n"cout<<" 0. 退出 n"cout<<"n 输入你的选择:"cin>>ch;switch(ch) case 1 : change_teacher(t,n);break;case 2 : change_course(c,m);break;case 3 : change_num(t,c,num,n,m);break;case 0 : break;while(ch);vo

22、id change_teacher(teacher *t,int n) et_id()=ii) cout<<" 此教师原信息:"<<endl;ti.print();k=i;cout<<" 请输入此教师新信息:"<<endl;cout<<" 编号 :"while(1)if (cin >> aa) break;elsecout<<" 编号应为数字,请重新输入:"<<endl;();();)cout<<"

23、姓名:"while(1)(cin>>na;for(j=0;j<11;j+)( if('!'<=naj&&naj<='')|(''<=naj&&naj<=''')|''<=naj&&na j<='')nnj=0;elsennj=1;)if(nn0*nn1*nn2*nn3*nn4*nn5*nn6*nn7*nn8*nn9*nn 10=1) break;elsecout<<&q

24、uot;姓名应为字母,请重新输入:"<<endl;();();)cout<<"工作量:"while(1)(if (cin >> bb) break;else(cout<<"工作量应为数字,请重新输入:"<<endl;();();)tk.set_teacher(na,aa,bb);fstream teachers("d:",ios二out);teachers<<"姓名"<<setw(20)<<"编号&q

25、uot;<<setw(20)<<"工作量"<<endl;for(j=0;j<n;j+)(if(j=k)teachers<<na<<setw(20)<<aa<<setw(20)<<bb<<endl;elseteachers<<tj.get_name()<<setw(20)<<tj.get_id()<<setw(20)<<tj.ge t_work_load()<<endl;)();)void c

26、hange_course(course *c,int m) et_course_id()=ii)cout<<"此课程原信息:"<<endl;ci.print();k=i;cout<<"请输入此课程新信息:"<<endl;cout<<"课程号:"while(1)if (cin >> aa) break;elsecout<<"课程号应为数字,请重新输入:"<<endl;();();cout<<"课程名:

27、"while(1)cin>>na;for(j=0;j<11;j+)if(!<=naj&&naj<=,)|(',<=naj&&naj<=,',)|,<=naj&&na j<='')nnj=0;elsennj=1;if(nn0*nn1*nn2*nn3*nn4*nn5*nn6*nn7*nn8*nn9*nn 10=1) break;elsecout<<" 课程名应为字母,请重新输入:"<<endl;();();cou

28、t<<" 周学时 :"while(1)if (cin >> bb ) break;elsecout<<" 周学时应为数字,请重新输入:"<<endl;();();cout<<" 总学时 :"while(1)(if (cin >> cc ) break;else(cout<<"总学时应为数字,请重新输入:"<<endl;();();)cout<<"优先级:";while(1)(if (cin

29、 >> dd) break;else(cout<<"优先级应为数字,请重新输入:"<<endl;();();)ck.set_course(na,aa,bb,cc,dd);fstream courses("d:",ios二out);courses<<"课程名"<<setw(10)<<"课程号"<<setw(10)<<"周学时"<<setw(10)<<"总学时"

30、<<setw(10)<<"优先级"<<endl;for(j=0;j<m;j+)if(j=k)courses<<na<<setw(10)<<aa<<setw(10)<<bb<<setw(10)<<cc<<setw(10)<<dd<< endl;elsecourses<<cj.get_course_name()<<setw(10)<<cj.get_course_id()<<

31、;setw (10)<<cj.get_week_hour()<<setw(10)<<cj.get_total_hour()<<setw(10) <<cj.get_N()<<endl;();void change_num(teacher *t,course *c,int *num,int n,int m) et_id()=ii) a1=i;cout<<"请输入要修改的课程的编号:";while(1)if (cin >> jj) break;elsecout<<"

32、; 满意度应为数字,请重新输入:"<<endl;();();for(i=0;i<m;i+)if(ci.get_course_id()=jj) b1=i;)cout<<"请输入要修改的满意度:"while(1)if (cin >> nn) break;elsecout<<"满意度应为数字,请重新输入:"<<endl;();();)fstream nums("d:",ios二out);nums<<setw(4)<<"满意度"<<setw(6);for(k=0;k<m;k+)nums<<"H"<<k+1<&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论