完整版排课程序.docx
- 文档编号:16796983
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:74
- 大小:27.47KB
完整版排课程序.docx
《完整版排课程序.docx》由会员分享,可在线阅读,更多相关《完整版排课程序.docx(74页珍藏版)》请在冰点文库上搜索。
完整版排课程序
#include
#include
#include
#include
#defineN10
#defineM20
#defineSIZE40
usingnamespacestd;
typedefstructtcnode
{#include
#include
#include
#include
#defineN10
#defineM20
#defineSIZE40
usingnamespacestd;
typedefstructtcnode
{
charname[20];
intipri;
}tclist,*ptclist;
typedefstructnode
{
charname[20];
charnum[20];
intwork_time;
tclisttc[M];
charcbuf[SIZE];
structnode*next;
}tlist,*ptlist;
typedefstructNode
{
charname[20];
charnum[20];
intweek_time;
intall_time;
intpriority;
boolmc;//是否被选
structNode*next;
}clist,*pclist;
classteacher
{
public:
teacher();
~teacher();
voidinitdata();
voidsave();
friendvoidprint(teacher&,ptlist);
tlist*pt;
};
classcourse
{
public:
course();
~course();
voidinitdata();
voidsave();
friendpclistconvert(course&,char*s);
private:
clist*pc;
};
teacher:
:
teacher()
{
pt=NULL;
}
teacher:
:
~teacher()
{
ptlistp;
while(pt)
{
p=pt;
pt=pt->next;
deletep;
}
}
voidteacher:
:
initdata()
{
chartag;
ptlistp=pt;
ptlists;
intt=0;
cout<<"请输入教师信息:
"< cout<<"姓名\t教师号\t工作量"< do { if(t>=1) { cout<<"请输入教师信息: "< cout<<"姓名\t教师号\t工作量"< } s=(ptlist)malloc(sizeof(tlist)); cin>>s->name>>s->num>>s->work_time; cout<<"请输入相应课程名及期望值: "< for(inti=0;i cin>>s->tc[i].name>>s->tc[i].ipri; fflush(stdin); s->next=NULL; if(! pt) { pt=s; p=pt; } else { p->next=s; p=p->next; } t++; cout<<"是否继续输入信息: "< fflush(stdin); cin>>tag; system("cls"); }while((tag=='y'||tag=='Y')&&t } voidteacher: : save() { ptlistp=pt; charpath[20]="D: \\teacher.txt"; charstr[50]={'\0'}; cout<<"请选择保存教师信息文件的路径: "< cin>>path; ofstreamoutfile(path); if(! outfile) { cerr<<"保存失败,请检查所选路径是否正确! "< return; } sprintf(str,"姓名\t教师号\t工作量\n"); outfile.write((char*)str,strlen(str)); while(p) { sprintf(str,"%s\t%s\t%d\n",p->name,p->num,p->work_time); outfile.write((char*)str,strlen(str)); sprintf(str,"对相应课程的期望值: \n"); outfile.write((char*)str,strlen(str)); for(inti=0;i { sprintf(str,"%s\t%d\n",p->tc[i].name,p->tc[i].ipri); outfile.write((char*)str,strlen(str)); } sprintf(str,"\n"); outfile.write((char*)str,strlen(str)); p=p->next; } outfile.close(); cout<<"保存成功! "< } course: : course() { pc=NULL; } course: : ~course() { pclistp; while(pc) { p=pc; pc=pc->next; deletep; } } voidcourse: : initdata() { pclistp=pc; pclists; chartag; inti=0; cout<<"请输入课程信息: "< cout<<"课程名\t课程号\t周学时\t总学时\t优先级"< do{ if(i>=1) { cout<<"请输入课程信息: "< cout<<"课程名\t课程号\t周学时\t总学时\t优先级"< } s=(pclist)malloc(sizeof(clist)); cin>>s->name>>s->num>>s->week_time>>s->all_time>>s->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/Y"< cin>>tag; system("cls"); }while(tag=='y'||tag=='Y'); } voidcourse: : save() { charpath[20]="D: \\course.txt"; pclistp=pc; charstr[100]={'\0'}; cout<<"请输入文件保存路径: "< cin>>path; ofstreamoutfile(path); if(! outfile) { cerr<<"保存失败,请检查输入路径是否正确"; return; } sprintf(str,"课程名\t课程号\t周学时\t总学时\t优先级\n"); outfile.write((char*)str,strlen(str)); while(p) { sprintf(str,"%s\t%s\t%d\t%d\t%d\n",p->name,p->num,p->week_time,p->all_time,p->priority); outfile.write((char*)str,strlen(str)); p=p->next; } outfile.close(); cout<<"保存成功! "< } voidsort(teacher&t,course&c) { ptlistq=t.pt; ptlistn=t.pt; ptlistm=n; intsum=0; intnum=-1; srand(time(0)); for(inti=0;i { while(m) { m=n->next; if(m==NULL) break; for(intj=0;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: (convert(c,q->tc[num].name))->mc=false; break; default: break; } } n=n->next; } while(q) { for(inti=0;i { if((convert(c,q->tc[i].name))->mc) { sum+=(convert(c,q->tc[i].name))->all_time; (convert(c,q->tc[i].name))->mc=false; if(i==0) strcpy(q->cbuf,q->tc[i].name); else { strcat(q->cbuf,""); strcat(q->cbuf,q->tc[i].name); } if(sum>=q->work_time) break; } } sum=0; q=q->next; } } cout<<"课程已排好! "< } //test voidprint(teacher&t) { ptlistp=t.pt; cout<<"最终排课情况: "< cout<<"教师姓名\t工作量\t教授课程"< while(p) { cout< p=p->next; } } pclistconvert(course&c,char*s) { pclistp=c.pc; while(p) { if(0==strcmp(p->name,s)) returnp; else p=p->next; } cout<<"应用程序出错! "< returnNULL; } teachertea; coursecou; voiddis_menu() { boolttag=false; boolctag=false; chartag; intchoice=0; do{ system("cls"); cout<<">>>>>>>欢迎使用教师排课系统,请根据提示完成相关操作<<<<<<<<<<<<<<<<<<<<"< cout<<">>>>>>>1: 载入教师信息"< cout<<">>>>>>>2: 载入课程信息"< cout<<">>>>>>>3: 存储教师信息"< cout<<">>>>>>>4: 存储课程信息"< cout<<">>>>>>>5: 教师排课"< cout<<">>>>>>>6: 打印排课结果"< cout<<">>>>>>>0: 退出"< fflush(stdin); cout<<"请输入选择: "< cin>>choice; switch(choice) { case1: system("cls"); cout<<"***********教师信息载入******************"< tea.initdata(); ttag=true; break; case2: system("cls"); cout<<"***********课程信息载入******************"< cou.initdata(); ctag=true; break; case3: system("cls"); cout<<"***********教师信息保存******************"< if(! ttag) cout<<"请先载入教师信息"< else tea.save(); break; case4: system("cls"); cout<<"***********课程信息保存******************"< if(! ctag) cout<<"请先载入课程信息"< else cou.save(); break; case5: system("cls"); cout<<"***********教师排序界面*****************"< if(! ttag||! ctag) cout<<"请先载入相关信息"< else sort(tea,cou); break; case6: system("cls"); cout<<"***********排课信息打印******************"< if(! ttag||! ctag) cout<<"请先载入相关信息"< else print(tea); break; default: system("cls"); cout<<"\t****************THANKSFORYOURUSE***********"< cout<<"\t*****************感谢使用本系统! *************"< exit(0); } cout<<"系统使用中........."< cout<<"是否继续其他操作? y/Y"< cin>>tag; }while(tag=='y'||tag=='Y'); } voidmain() { dis_menu(); } #include #include #include #include #defineN10 #defineM20 #defineSIZE40 usingnamespacestd; typedefstructtcnode { charname[20]; intipri; }tclist,*ptclist; typedefstructnode { charname[20]; charnum[20]; intwork_time; tclisttc[M]; charcbuf[SIZE]; structnode*next; }tlist,*ptlist; typedefstructNode { charname[20]; charnum[20]; intweek_time; intall_time; intpriority; boolmc;//是否被选 structNode*next; }clist,*pclist; classteacher { public: teacher(); ~teacher(); voidinitdata(); voidsave(); friendvoidprint(teacher&,ptlist); tlist*pt; }; classcourse { public: course(); ~course(); voidinitdata(); voidsave(); friendpclistconvert(course&,char*s); private: clist*pc; }; teacher: : teacher() { pt=NULL; } teacher: : ~teacher() { ptlistp; while(pt) { p=pt; pt=pt->next; deletep; } } voidteacher: : initdata() { chartag; ptlistp=pt; ptlists; intt=0; cout<<"请输入教师信息: "< cout<<"姓名\t教师号\t工作量"< do { if(t>=1) { cout<<"请输入教师信息: "< cout<<"姓名\t教师号\t工作量"< } s=(ptlist)malloc(sizeof(tlist)); cin>>s->name>>s->num>>s->work_time; cout<<"请输入相应课程名及期望值: "< for(inti=0;i cin>>s->tc[i].name>>s->tc[i].ipri; fflush(stdin); s->next=NULL; if(! pt) { pt=s; p=pt; } else { p->next=s; p=p->next; } t++; cout<<"是否继续输入信息: "< fflush(stdin); cin>>tag; system("cls"); }while((tag=='y'||tag=='Y')&&t } voidteacher: : save() { ptlistp=pt; charpath[20]="D: \\teacher.txt"; charstr[50]={'\0'}; cout<<"请选择保存教师信息文件的路径: "< cin>>path; ofstreamoutfile(path); if(! outfile) { cerr<<"保存失败,请检查所选路径是否正确! "< return; } sprintf(str,"姓名\t教师号\t工作量\n"); outfile.write((char*)str,strlen(str)); while(p) { sprintf(str,"%s\t%s\t%d\n",p->name,p->num,p->work_time); outfile.write((char*)str,strlen(str)); sprintf(str,"对相应课程的期望值: \n"); outfile.write((char*)str,strlen(str)); for(inti=0;i { sprintf(str,"%s\t%d\n",p->tc[i].name,p->tc[i].ipri); outfile.write((char*)str,strlen(str)); } sprintf(str,"\n"); outfile.write((char*)str,strlen(str)); p=p->next; } outfile.close(); cout<<"保存成功! "< } course: : course() { pc=NULL; } course: : ~course() { pclistp; while(pc) { p=pc; pc=pc->next; deletep; } } voidcourse: : initdata() { pclistp=pc; pclists; chartag; inti=0; cout<<"请输入课程信息: "< cout<<"课程名\t课程号\t周学时\t总学时\t优先级"< do{ if(i>=1) { cout<<"请输入课程信息: "< cout<<"课程名\t课程号\t周学时\t总学时\t优先级"< } s=(pclist)malloc(sizeof(clist)); cin>>s->name>>s->num>>s->week_time>>s->all_time>>s->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/Y"< cin>>tag; system("cls"); }while(tag=='y'||tag=='Y'); } voidcourse: : save() { charpath[2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 课程