选美比赛管理_第1页
选美比赛管理_第2页
选美比赛管理_第3页
选美比赛管理_第4页
选美比赛管理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

PAGE沈阳航院设计用纸课程设计学号班级姓名指导教师2007年07课程设计任务书一、课程设计题目:选美比赛管理二、课程设计工作自2007年7月9三、课程设计内容:运用所学的C语言知识,编制和调试程序,具有如下功能:一批选手参加比赛,比赛的规则是最后得分越高,名次越低。当半决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:选手序号:1,2,3,4,5,6,7选手得分:5,3,4,7,3,5,6输出名次为:3,1,2,5,1,3,4编写程序完成半决赛的评分排名工作,并按以上格式将结果输出到屏幕及文件beauty.dat四、课程设计要求:程序质量:贯彻结构化程序设计思想。用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。用户界面中的菜单至少应包括“信息录入”、“查询”、“排名”、“退出”4项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:封面目录课程设计任务书需求分析(分析题目的要求)程序流程图(总体流程图和主要功能模块流程图)核心技术的实现说明及相应程序段个人总结参考资料源程序及适当的注释指导教师:________学生签名:________PAGEI目录HYPERLINK一、需求分析 1HYPERLINK二、程序流程图 2HYPERLINK三、核心技术的实现说明及相应程序段 7HYPERLINK四、个人总结 8HYPERLINK五、参考文献 9HYPERLINK六、源程序 9PAGE18一、需求分析经过对程序设计题目的分析可知,此问题用链表来完成。建立结构体player,来存储选手信息,包括选手序号、姓名、分数、名次以及指向下一结点的指针next。按序号从小到大建立链表,依次将各结点赋初值,名次先初始化为0。将此链表按分数进行排序,为每个结点的名次赋值,保存。输出结果。整个程序的设计实现大致分为3大模块,第一大模块为选手信息录入模块,其中包括录入信息、排序、保存等;第二大模块为查询选手信息模块,其中包括按姓名查询、按序号查询、按名次查询;第三大模块为输出比赛结果模块。程序中用到的函数:主菜单函数menu()、建立结点函数creatone()、建立链表函数inseart()、排出名次函数sorts()、保存函数save()、子菜单函menu1()、按姓名查询函数searchname()、按序号查询函数searchid()、按名次查询函数searchorder()、输出比赛结果函数print()。其实现的功能具体如下:1、建立结点函数creatone():录入选手信息(姓名、分数)建立选手结点,即创建人物。2、建立链表函数inseart():将各个结点按序号链接在一起,构建一个链表。3、排出名次函数sorts():对链表中分数进行排序,分数越少名次越高。将得到的名次赋给各个结点中的order。4、保存函数save():对输出到屏幕的选手信息按指定路径加以保存。5、按姓名查询函数searchname():输入姓名,到链表中去比对,成功则输出此人信息,否则输出无此人信息。按序号、名次查询结构与此相同。6、输出比赛结果函数print():按名次输出各个选手的信息。二、程序流程图总体结构图开始开始调用system()为屏幕即字体设置颜色定义一些变量、为头结点分配空间并使它的next指向空无条件循环choice=menu()choice=11P!=NULL调用creatone()insert()函数调用sorts()save()函数Choice!=4choice=21查询菜单查询函数调用print()Choice=3结束 程序运行情况:主菜单录入选手信息:查询子菜单:名次查询:输出比赛结果:三、核心技术的实现说明及相应程序段本程序采用链表结构,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,排出名次函数sorts()是程序中最为核心的部分,下面对此函数加以说明。此函数的目标是对选手链表按分数进行排名,为结构体中的order项赋值。具体的程序说明如下://排序函数structplayer*sorts(structplayer*head,intn){structplayer*min;structplayer*p;intcount=0;intorder=1; min=head->next;p=min->next;while(count<n){ while(p!=NULL) { if(min->score>p->score&&p->order==0) min=p; p=p->next; } min->order=order; count++; p=min->next; while(p!=NULL) { if(min->score==p->score) { p->order=order; count++; } p=p->next; } order++; min=head->next; if(min->order!=0) min=min->next; p=min->next;}returnhead;}四、个人总结在设计此程序时由于已经1年没复习C语言知识了忘记了好多语句,所以我又把《C程序设计》阅读了几边把忘记的知识补充上,这使我的C语言基础知识更牢靠了。这次C程序的设计不同于以前,其要求更高了,我设计了一个小程序就用了5天的时间,现在知道了做程序员是很辛苦的。此次我设计的程序通过了测试,基本能达到课程设计要求,本人知识有限程序可能还有不合理之处望老师批评指正。五、参考文献1谭浩强C程序设计北京:清华大学出版社,20052谭浩强C程序设计题解与上机指导北京:清华大学出版社,2005六、源程序//=======================================================//在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最//后得分越高,名次越低。当半决决赛结束时,要在现场按照选手的出场//顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,//名次连续编号,不用考虑同名次的选手人数。//=======================================================//头文件#include<stdio.h> #include<string.h> #include<malloc.h>#include<windows.h>//宏定义#defineLsizeof(structplayer)//结构体structplayer{ intid; //序号 intorder; //名次 charname[30]; //姓名 intscore; //分数 structplayer*next;};//菜单intmenu(){ inta; printf("\n\n\n欢迎进入选美成绩管理系统!\n\n\n"); printf("**************MENU************\n"); printf("1、选手信息录入\n"); printf("2、选手信息查询\n"); printf("3、输出比赛结果\n"); printf("4、退出\n"); printf("******************************\n"); do { printf("请输入1-4中的一个选项:"); scanf("%d",&a); }while(a>4||a<1); return(a);}/*1-子菜单函数*/intmenu1(){ inta; printf("************MENU**********\n"); printf("(1)、按姓名查询\n"); printf("(2)、按序号查询\n"); printf("(3)、按名次查询\n"); printf("(4)、返回上一菜单\n"); printf("**************************\n"); do { printf("请输入1-4中的一个选项:"); scanf("%d",&a); }while(a>4||a<1); return(a);}//建立结点structplayer*creatone(structplayer*p,inti){ p=(structplayer*)malloc(L); /*为新结点分配空间*/ printf("%d号选手姓名:",++i); /*输入信息*/ scanf("%s",p->name); if(strcmp(p->name,"end")==0) /*判断是否停止输入*/ p=NULL; else { printf("最后得分:"); scanf("%d",&p->score); p->id=i; p->order=0; p->next=NULL; printf("\n"); } returnp;}//建立链表structplayer*insert(structplayer*head,structplayer*p){ structplayer*q; q=head; while(q->next!=NULL) q=q->next; q->next=p; returnhead;}//排序函数structplayer*sorts(structplayer*head,intn){ structplayer*min; structplayer*p; intcount=0; intorder=1; min=head->next; p=min->next; while(count<n) { while(p!=NULL) { if(min->score>p->score&&p->order==0) min=p; p=p->next; } min->order=order; count++; p=min->next; while(p!=NULL) { if(min->score==p->score) { p->order=order; count++; } p=p->next; } order++; min=head->next; if(min->order!=0) min=min->next; p=min->next; } returnhead;}//按名字查找voidsearchname(structplayer*head){ structplayer*q; charname[30]; q=head->next; printf("请输入要查询的选手的姓名:"); scanf("%s",name); while(q!=NULL&&strcmp(q->name,name)!=0) q=q->next; if(q==NULL) printf("没有此人的信息!\n\n"); else printf("\n%d号选手%s\n名次:第%d名\n最后得分:%d分\n\n\n",q->id,q->name,q->order,q->score); }//按序号查找voidsearchid(structplayer*head){ structplayer*q; intid=0; q=head->next; printf("请输入要查询的选手的序号:"); scanf("%d",&id); while(q!=NULL&&q->id!=id) q=q->next; if(q==NULL) printf("没有此人的信息!\n\n"); else printf("\n%d号选手%s\n名次:第%d名\n最后得分:%d分\n\n\n",q->id,q->name,q->order,q->score); }//按名次查找voidsearchorder(structplayer*head){ structplayer*q; intorder=0; intn=0; q=head->next; printf("请输入要查询的选手的名次:"); scanf("%d",&order); while(q!=NULL) { if(q->order==order) { printf("\n%d号选手%s\n名次:第%d名\n最后得分:%d分\n",q->id,q->name,q->order,q->score); n=1; } q=q->next; } if(n==0) printf("没有此人的信息!\n\n"); }//输出比赛结果voidprint(structplayer*head,intn){ structplayer*p; intcount=0; inti=1; while(count<n) { p=head->next; printf("\n\n第%d名:\n",i); while(p!=NULL) { if(p->order==i) { printf("\n%d号选手%s最后得分:%d分",p->id,p->name,p->score); count++; } p=p->next; } i++; }}/*保存文件*/voidsave(structplayer*head){ FILE*fp; structplayer*p; p=head->next; if((fp=fopen("beauty.dat","wb"))==NULL) { printf("Can'topenthefile\n"); exit(0); } while(p!=NULL) { fwrite(p,L,1,fp); p=p->next; } fclose(fp);}//主函数intmain(){ intsystem(constchar*); system("color2e"); structplayer*head; structplayer*p; intchoice; inti=0; head=(structplayer*)malloc(L); head->next=NULL; while(1)/*主菜单*/ { choice=menu(); switch(choice) { case1: printf("请依次输入要录入的选手信息,在姓名栏输入end结束:\n\n"); while(1) { p=creatone(p,i); if(p==NULL) break; i++; head=insert(head,p); } sorts(head,i); save(head); break; case2: do { choice=menu1(); switch(choice) { case1: searchname(head); break; case2: searchid(head); break; case3: searchorder(head); break; case4: break; } }while(choice!=4); break; case3: print(head,i); break; case4: exit(0); /*安全退出操作系统*/ } } return0;}目录TOC\o"1-2"\h\z\u第一章总论 41.1项目概况 41.2编制依据 51.3项目建设内容及规模 51.4项目投资概算及资金筹措 141.5产品方案 151.6原材料及动力 161.7主要技术经济指标 171.8项目实施进度 181.9研究结论 18第二章项目建设背景和必要性 192.1项目建设背景 192.2项目建设必要性 20第三章市场分析和预测 223.1市场现状 223.2**县市场 233.3全国市场 233.4鸡肉市场分析 243.5鸡蛋市场分析 243.6有机肥市场分析 243.7销售预测 25第四章项目区概况 264.1项目区基本情况 264.2项目区畜牧业生产现状 274.3水、电、路、通讯、技术等条件 27第五章项目建设方案 295.1项目建设原则 295.2项目设计依据的规范与规程 295.3项目设计方案 305.4工程设计标准 335.5技术标准 365.6设备选型 53第六章消防安全 576.1消防依据 576.2消防工作程序 576.3消防安全流程 59第七章节水与节能 607.1节水工程与科技措施 607.2养殖节能措施 617.3饲料加工节能措施 617.4电气节能措施 627.5减排 62第八章环境影响和保护措施 638.1环境保护依据 638.2项目区环境现状 638.3环境影响评价 648.4工程环境保护措施 648.5“三废”处理措施 658.6环境影响综合评价 65第九章项目组织管理 679.1基本思路 679.2组织管理 679.3施工组织及质量管理 689.4建设及运作方式 69第十章招投标方案 7010.1项目招标执行文件及标准 7010.2项目招标范围、组织形式及方式 7010.3招投标组织 71第十一章建设实施进度安排 7311.1项目建设期 7311.2项目建设进度安排 73第十二章投资估算和资金筹措 7412.1投资概算

温馨提示

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

评论

0/150

提交评论