




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
荆楚理工学院课程设计成果 学院:_计算机工程学院_ 班 级: 09级计算机科学与技术(一)班 学生姓名: 李其德 学号: 2009404010108 设计地点(单位)_观涧3栋102宿舍_ 设计题目:_ 设计一个排课程序_ 完成日期: 2011年12月30日 指导教师评语: _ _ _成绩(五级记分制):_ _ _ 教师签名:_ _ C+面向对象程序设计课程设计目录第一节 课程设计的问题描述第2节 本次设计的基本要求 第三节 源程序 第四节 测试数据及结果 第五节 总结 第六节 参考资料 第一节 课程设计的问题描述每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2,n,其中1位最高的期望值。课程也有优先级,1,2,n,用来决定将课程分给教师的顺序,其中1时最高的优先级。设计一个程序针对某些课程给某些教师进行排课。 第二节 本次设计的基本要求 程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级)、教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中,程序根据课程的优先级以及教师对课程的期望值进行排课。为了公平起见,程序随机分配课程,如果10门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。测试数据:程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。实现提示:可定义一个教师类存放教师信息,所有教师的信息可以用链表存储;定义一个课程类存放课程信息,所有课程的信息可以用链表存储;定义一个排课类进行排课,排课类可以访问课程和教师信息。选作内容:对两个同类班级安排一学期(20周)的课程,程序应能处理某些限制,如一个老师不能同时给两个班上课。 第三节 源程序#include#include#include#include#define N 10#define M 20#define SIZE 40using namespace std;typedef struct tcnodechar name20;int ipri;tclist,*ptclist;typedef struct nodechar name20;char num20;int work_time;tclist tcM; char cbufSIZE; struct node *next; tlist,*ptlist;typedef struct Nodechar name20;char num20;int week_time;int all_time;int priority;bool mc;/是否被选struct Node *next;clist,*pclist; class teacherpublic: teacher(); teacher();void initdata();void save();friend void print(teacher&,ptlist);tlist* pt;class coursepublic: course(); course();void initdata();void save();friend pclist convert(course&,char * s);private:clist* pc; teacher:teacher()pt=NULL; teacher:teacher()ptlist p;while(pt) p=pt; pt=pt-next; delete p;void teacher:initdata()char tag;ptlist p=pt;ptlist s;int t=0;cout请输入教师信息:endl;cout姓名t教师号t工作量=1) cout请输入教师信息:endl; cout姓名t教师号t工作量s-names-nums-work_time; cout请输入相应课程名及期望值:endl; for(int i=0;s-tci.ipri; fflush(stdin); s-next=NULL; if(!pt) pt=s; p=pt; else p-next=s; p=p-next; t+; cout是否继续输入信息:tag; system(cls); while(tag=y|tag=Y)&tN);void teacher:save()ptlist p=pt;char path20=D:teacher.txt;char str50=0;cout请选择保存教师信息文件的路径:path;ofstream outfile(path);if(!outfile)cerr保存失败,请检查所选路径是否正确!name,p-num,p-work_time);outfile.write(char*)str,strlen(str);sprintf(str,对相应课程的期望值:n);outfile.write(char*)str,strlen(str);for(int i=0;,p-tci.ipri); outfile.write(char*)str,strlen(str);sprintf(str,n); outfile.write(char*)str,strlen(str);p=p-next;outfile.close();cout保存成功!next;delete p;void course:initdata()pclist p=pc;pclist s;char tag;int i=0;cout请输入课程信息:endl;cout课程名t课程号t周学时t总学时t优先级=1)cout请输入课程信息:endl; cout课程名t课程号t周学时t总学时t优先级s-names-nums-week_times-all_times-priority;fflush(stdin);s-mc=true;s-next=NULL;i+;if(!pc)pc=s;p=pc; else p-next=s; p=p-next; cout是否继续载入课程信息? y/Ytag; system(cls);while(tag=y|tag=Y);void course:save()char path20=D:course.txt;pclist p=pc;char str100=0;cout请输入文件保存路径:path;ofstream outfile(path);if(!outfile)cerrname,p-num,p-week_time,p-all_time,p-priority);outfile.write(char*)str,strlen(str);p=p-next;outfile.close();cout保存成功!endl;void sort(teacher& t,course& c) ptlist q=t.pt; ptlist n=t.pt; ptlist m=n; int sum=0; int num=-1; srand(time(0); for(int i=0;inext; if(m=NULL) break; for(int j=0;jtci.ipri=n-tcj.ipri)&(0=strcmp(,) num=rand()%2; switch(num) case 0: (convert(c,)-mc=false; break; case 1: (convert(c,)-mc=false; break; default: break; n=n-next; while(q) for(int i=0;)-mc) sum+=(convert(c,)-all_time; (convert(c,)-mc=false; if(i=0) strcpy(q-cbuf,); else strcat(q-cbuf, ); strcat(q-cbuf,); if(sum=q-work_time) break; sum=0; q=q-next; cout课程已排好!endl;/testvoid print(teacher& t)ptlist p=t.pt;cout最终排课情况:endl;cout教师姓名t工作量t教授课程endl;while(p) coutnamettwork_timetcbufnext;pclist convert(course& c,char * s)pclist p=c.pc;while(p)if(0=strcmp(p-name,s)return p;elsep=p-next;cout应用程序出错!endl;return NULL;teacher tea;course cou;void dis_menu() bool ttag=false;bool ctag=false;char tag;int choice=0;dosystem(cls);cout欢迎使用教师排课系统,请根据提示完成相关操作endl;cout1:载入教师信息endl;cout2:载入课程信息endl;cout3:存储教师信息endl;cout4:存储课程信息endl;cout5:教师排课endl;cout6:打印排课结果endl;cout0:退出endl;fflush(stdin);cout请输入选择:choice;switch(choice)case 1:system(cls);cout*教师信息载入*endl; tea.initdata();ttag=true;break;case 2:system(cls);cout*课程信息载入*endl;cou.initdata();ctag=true;break;case 3:system(cls);cout*教师信息保存*endl;if(!ttag)cout请先载入教师信息endl;elsetea.save();break; case 4:system(cls);cout*课程信息保存*endl;if(!ctag) cout请先载入课程信息endl;elsecou.save();break;case 5:system(cls);cout*教师排序界面*endl;if(!ttag|!ctag)cout请先载入相关信息endl;elsesort(tea,cou);break;case 6:system(cls);cout*排课信息打印*endl;if(!ttag|!ctag)cout请先载入相关信息endl;elseprint(tea);break;default:system(cls);coutt*THANKS FOR YOUR USE*endl;coutt*感谢使用本系统!*endl;exit(0);cout系统使用中.endl;cout是否继续其他操作? y/Ytag;while(tag=y|tag=Y);void main()dis_menu(); 第四节 测试数据及结果 第五节 总结在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-北京-北京计算机信息处理员五级初级历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京水工监测工三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京农机驾驶维修工四级(中级工)历年参考题库典型考点含答案解析
- 气温安全知识培训课件
- 培训与知识积累
- 蜗牛哥面试实战模拟题及答案
- 建筑物结构加固技术方案
- 汽修厂废弃物处理与回收方案
- 养老中心食品安全与营养餐饮方案
- 桥梁施工质量检查方案
- 热射病病人的急救护理
- 客运站安检设备管理制度
- U9-SCM-库存-Unit9-内部交易-V2
- 《化工和危化品生产经营单位重大生产安全事故隐患判定标准(细化版)》知识培训
- 2025年汉防己甲素项目市场调查研究报告
- 石油合作协议合同协议
- T∕CACM 1099-2018 中医治未病技术操作规范 隔药灸干预原发性痛经
- 固态电池成本控制-全面剖析
- 船舶锚泊与系泊系统
- 关于共建高校大思政体系推动高校共青团工作高质量发展的实施意见课件
- 租房合同范本下载(可直接打印)
评论
0/150
提交评论