C++课程设计设计一个排课程序Word文档格式.docx
- 文档编号:22858890
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:20
- 大小:83.80KB
C++课程设计设计一个排课程序Word文档格式.docx
《C++课程设计设计一个排课程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++课程设计设计一个排课程序Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。
测试数据:
程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。
实现提示:
可定义一个教师类存放教师信息,所有教师的信息可以用链表存储;
定义一个课程类存放课程信息,所有课程的信息可以用链表存储;
定义一个排课类进行排课,排课类可以访问课程和教师信息。
选作内容:
对两个同类班级安排一学期(20周)的课程,程序应能处理某些限制,如一个老师不能同时给两个班上课。
第三节
源程序
#include<
iostream>
cstdlib>
fstream>
ctime>
#defineN10
#defineM20
#defineSIZE40
usingnamespacestd;
typedefstructtcnode
{
charname[20];
intipri;
}tclist,*ptclist;
typedefstructnode
charnum[20];
intwork_time;
tclisttc[M];
charcbuf[SIZE];
structnode*next;
}tlist,*ptlist;
typedefstructNode
intweek_time;
intall_time;
intpriority;
boolmc;
//是否被选
structNode*next;
}clist,*pclist;
classteacher
public:
teacher();
~teacher();
voidinitdata();
voidsave();
friendvoidprint(teacher&
ptlist);
tlist*pt;
};
classcourse
course();
~course();
friendpclistconvert(course&
char*s);
private:
clist*pc;
teacher:
:
teacher()
pt=NULL;
}
~teacher()
ptlistp;
while(pt)
{
p=pt;
pt=pt->
next;
deletep;
}
voidteacher:
initdata()
chartag;
ptlistp=pt;
ptlists;
intt=0;
cout<
<
"
请输入教师信息:
endl;
姓名\t教师号\t工作量"
do
if(t>
=1)
{
cout<
}
s=(ptlist)malloc(sizeof(tlist));
cin>
>
s->
name>
num>
work_time;
cout<
请输入相应课程名及期望值:
for(inti=0;
i<
M;
i++)
cin>
tc[i].name>
tc[i].ipri;
fflush(stdin);
s->
next=NULL;
if(!
pt)
pt=s;
p=pt;
else
p->
next=s;
p=p->
t++;
是否继续输入信息:
tag;
system("
cls"
);
}while((tag=='
y'
||tag=='
Y'
)&
&
t<
N);
save()
charpath[20]="
D:
\\teacher.txt"
;
charstr[50]={'
\0'
请选择保存教师信息文件的路径:
cin>
path;
ofstreamoutfile(path);
if(!
outfile)
cerr<
保存失败,请检查所选路径是否正确!
return;
sprintf(str,"
姓名\t教师号\t工作量\n"
outfile.write((char*)str,strlen(str));
while(p)
%s\t%s\t%d\n"
p->
name,p->
num,p->
work_time);
对相应课程的期望值:
\n"
for(inti=0;
%s\t%d\n"
tc[i].name,p->
tc[i].ipri);
p=p->
outfile.close();
保存成功!
course:
course()
pc=NULL;
~course()
pclistp;
while(pc)
p=pc;
pc=pc->
deletep;
voidcourse:
pclistp=pc;
pclists;
inti=0;
请输入课程信息:
课程名\t课程号\t周学时\t总学时\t优先级"
do{
if(i>
s=(pclist)malloc(sizeof(clist));
week_time>
all_time>
priority;
mc=true;
i++;
pc)
pc=s;
p=pc;
else
是否继续载入课程信息?
y/Y"
system("
}while(tag=='
\\course.txt"
charstr[100]={'
请输入文件保存路径:
保存失败,请检查输入路径是否正确"
课程名\t课程号\t周学时\t总学时\t优先级\n"
%s\t%s\t%d\t%d\t%d\n"
week_time,p->
all_time,p->
priority);
outfile.write((char*)str,strlen(str));
voidsort(teacher&
t,course&
c)
ptlistq=t.pt;
ptlistn=t.pt;
ptlistm=n;
intsum=0;
intnum=-1;
srand(time(0));
while(m)
m=n->
if(m==NULL)
break;
for(intj=0;
j<
j++)
if((m->
tc[i].ipri==n->
tc[j].ipri)&
(0==strcmp(m->
tc[i].name,n->
tc[j].name)))
num=rand()%2;
switch(num)
{
case0:
(convert(c,q->
tc[num].name))->
mc=false;
break;
case1:
default:
}
n=n->
while(q)
if((convert(c,q->
tc[i].name))->
mc)
sum+=(convert(c,q->
all_time;
(convert(c,q->
if(i==0)
strcpy(q->
cbuf,q->
tc[i].name);
strcat(q->
cbuf,"
"
strcat(q->
if(sum>
=q->
work_time)
break;
sum=0;
q=q->
cout<
课程已排好!
//test
voidprint(teacher&
t)
ptlistp=t.pt;
最终排课情况:
教师姓名\t工作量\t教授课程"
p->
name<
\t\t"
work_time<
\t"
cbuf<
pclistconvert(course&
c,char*s)
pclistp=c.pc;
if(0==strcmp(p->
name,s))
returnp;
p=p->
应用程序出错!
returnNULL;
teachertea;
coursecou;
voiddis_menu()
boolttag=false;
boolctag=false;
intchoice=0;
欢迎使用教师排课系统,请根据提示完成相关操作<
1:
载入教师信息"
2:
载入课程信息"
3:
存储教师信息"
4:
存储课程信息"
5:
教师排课"
6:
打印排课结果"
0:
退出"
请输入选择:
choice;
switch(choice)
case1:
system("
***********教师信息载入******************"
tea.initdata();
ttag=true;
case2:
***********课程信息载入******************"
cou.initdata();
ctag=true;
case3:
***********教师信息保存******************"
if(!
ttag)
cout<
请先载入教师信息"
else
tea.save();
case4:
***********课程信息保存******************"
ctag)
请先载入课程信息"
cou.save();
case5:
***********教师排序界面*****************"
ttag||!
请先载入相关信息"
sort(tea,cou);
case6:
***********排课信息打印******************"
print(tea);
default:
\t****************THANKSFORYOURUSE***********"
\t*****************感谢使用本系统!
*************"
exit(0);
系统使用中........."
是否继续其他操作?
voidmain()
dis_menu();
第四节
测试数据及结果
第五节
总结
在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。
我经过这段时间的编程,对其中的艰辛,我是深有体会。
从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。
但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。
通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。
懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。
另外某些具体的细节内容也是相当的重要。
这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。
这些经验对我以后的编程会有很大的帮助的,我要好好利用。
第六节
参考资料
1、C++面向对象程序设计李素若等
2、荆楚理工学院《实验实践教学管理制度》文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+课程设计 设计一个排课程序 C+ 课程设计 设计 一个 课程