版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*C语言课程实践报告 题目:歌手评分系统 学院:计算机工程学院 班级:*指导教师:* 学生姓名*同组人: *组长:*完成日期:*年*月* 目 录1 引言2 系统设计2.1设计分析2.1.1 项目描述2.2程序结构(画流程图)2.2.1 程序划分2.2.2 程序结构流程图3 系统实现3.1各模块的功能及程序说明3.2 系统主要功能模块的运行效果图(截图)4 设计体会(结论)5 参考文献附录A:系统完整源程序(组长给出) (注:正文内容宋体、五号)第一章 引言C语言是一门计算机高级语言,它在Microsoft开发的软件Visual C+ 6.0中执行,C语言具有很多优点:1.C语言具有丰富的数据类
2、型,众多的运算符,体现结构化程序设计的优良控制结构, 具有抽象功能及体现信息隐蔽思想的函数。2.C语言的应用几乎遍及了程序的各个领域,如科学家,系统程序设计,字处理软件和电子表格软件的开发,信息管理,计算机辅助设计,等方面。3.C语言简洁,为完成某一功能所写的源程序代码往往比其他语言写得短,便利程序输入工作量减少。4.若程序员在书写过程时严格遵循ANSI C标准,则其源代码可不作修改,即可用于各种型号的计算机和各种操作系统,因此,C语言具有良好的可移植性。 本次实践我们选择了使用C语言编写基于链表的程序,不仅使大家对程序设计、编程方法有了进一步提高,而且掌握了使用C语言动态内存分配及数据结构等
3、方面的知识。第二章 系统设计2.1系统设计2.1设计分析2.1.1 项目描述1项目名称:歌手打分系统2.功能描述:(1)生成字符界面的功能菜单* 1.输入歌手成绩 * 2.插入新歌手 * 3.删除退赛歌手 * 4.歌手成绩排名 * 5.输出歌手分数 * 6.输出歌手排名 * 7.退出系统 *(2)通过输入菜单项的序号启动相应模块的功能 能够根据输入的选手人数创建链表; 录入9名评委给选手的打分,并存储到文件singerOriginal.dat中; 按照去掉一个最高分和去掉一个最低分的原则求每名选手的平均分; 按平均分由高到低的顺序对选手进行排序; 把排名后的数据存储到文件singerFianl
4、.dat中; 把原始数据和最终的结果输出到屏幕; 在第步中保存singerOriginal.dat文件之前,可根据情况修改数据,例如:插入或删除歌手。2.2 程序结构2.2.1程序划分将歌手打分系统程序进行系统模块划分,共分为九部分,分别是:1.定义结构体2.创建链表函数3.输入数据函数4.计算函数5.排序函数6.输出数据函数7.输出最终数据8.删除函数9.插入函数10.主函数2.2.2 程序结构流程图main输出数据存储数据排序求平均分得分维护得分录入创建链表输入成绩第三章 系统实现3.1 各模块的功能及程序说明创建链表:使用尾插法插入数据;输入选手信息:包括选手信息的输入,选手成绩的输入,
5、去掉一个最高分和最低分,并将其余评委的评分求出平均值。输出选手排名:包括选手成绩排名。删除和插入选手信息:将退赛选手和新参加的比赛的选手进行删除和插入。主函数:将所有函数实现。3.2 系统主要功能模块的运行效果图程序的运行效果图: 第四章 设计体会在本次的C语言实践中,让我们受益匪浅,通过本次的实践,让我们更深入的了解了C语言这门计算机语言,也明白了软件开发的相关流程和基本步骤,也明白了团队精神的重要性,一项工作如果是靠一个人的力量是远远不够的。虽然在设计软件中遇到了很多问题,我们所有组员通力合作,积极讨论,翻阅资料,最终完成了这次实践,也许我们的程序还存在些许问题,也许还不完美,但是我相信在
6、以后的学习中我们会继续改进的。也希望老师可以给我们提出您的宝贵意见。第五章 程序源代码/* 创建链表* */#include<stdio.h>#include<stdlib.h>typedef struct Singer char name20;int number; /编号char sex;float score9;/打分(九名评委)float average;/平均分struct Singer *next;/指向下一个元素的指针 SINGER; SINGER* CreateLink(int number)SINGER *head;/头节点SINGER *tail;/
7、尾节点SINGER *NewNode=NULL;/创建新的节点FILE *fp;int n;/循环用head=(SINGER *)malloc(sizeof(SINGER);/动态内存分配head->next=NULL;tail=head;/用头节点给尾节点赋值fp=fopen("singerOriginal.dat","wb");for(n=0;n<number;n+)/创建链表,number为用户输入的歌手个数NewNode=(SINGER *)malloc(sizeof(SINGER);/为新节点动态分配内存NewNode->ne
8、xt=NULL;tail->next=NewNode;/将新节点插入队尾tail=NewNode;/更新尾节点位置fwrite(NewNode,sizeof(SINGER),1,fp);NewNode=NULL;/NewNode指针指向空,防止误操作fclose(fp);return head;/返回头指针/*输入数据函数InputData()*/void InputData(SINGER *s)FILE *fp;int n;/评委打分循环用int m;/记第m名选手用SINGER *h=s->next;/定义新的头指针,以免原头指针移动m=1;fp=fopen("sin
9、gerOriginal.dat","wb");while(1)if(h=NULL)/只有链表结束时才结束本函数return;printf("请输入第%d个选手的信息:n",m);printf("请输入姓名:");scanf("%s",h->name);printf("请输入编号:");scanf("%d",&(h->number);getchar();printf("请输入成绩:n");for(n=0;n<9;n+)pr
10、intf("请输入第%d个评委的打分:",n+1);scanf("%f",&(h->scoren);printf("*n");printf("*n");h=h->next;/移动指针m+;fwrite(s,sizeof(SINGER),1,fp);fclose(fp);/*计算函数CalculateData()*/void CalculateData(SINGER *s)int n;/循环用float min;/记录最小值float max;/记录最大值SINGER *h=s->next;
11、/定义新的头指针,以免原头指针移动while(1)if(h=NULL)/只有链表结束时才结束本函数return;max=h->score0;/初始化maxmin=max;/初始化minh->average=0;/初始化averagefor(n=0;n<9;n+)/求出最大值,最小值if(h->scoren>max)max=h->scoren;if(h->scoren<min)min=h->scoren;for(n=0;n<9;n+)/计算总分(h->average)+=(h->scoren);h->average=(
12、float)(h->average-max-min)/7.0);/计算平均分h=h->next;/*排序函数SortData()*/void SortData(SINGER *s,int number)SINGER *head,*tail;/定义头尾节点指针SINGER *p,*p1,*p2,*p3;/定义四个指针,其中p为寻找尾节点用,p1,p2,p3为排序用int n;/循环用tail=(SINGER *)malloc(sizeof(SINGER);/尾尾节点分配空间head=s;/为head赋值p=s->next;/初始化pwhile(p->next!=NULL)
13、/p找尾节点p=p->next;p->next=tail;/找到后尾节点的next存tailtail->next=NULL;/tail中的next存空,防止出错for(n=0;n<number-1;n+)/循环number-1次,排序p3=head;/为p3初始化到头节点p1=p3->next;/为p1初始化到头节点的下一个p2=p1->next;/为p2初始化到p1的下一个while(p2!=tail)/p2未到底后if(p1->average)<(p2->average)/交换p1->next=p2->next;p2->
14、;next=p1;p3->next=p2;p3=p2;p2=p1->next;elsep3=p1;p1=p2;p2=p2->next;p=s->next;while(p->next!=tail)/将p重新定义到尾p=p->next;p->next=NULL;/next存空,防出错/*输出数据源函数OutputSource()*/void OutputSource(SINGER *s)SINGER *h=s->next;/定义新的头指针,以免原头指针移动int n;/循环用printf("下面输出原始成绩:n");printf(
15、"选手编号 姓名 评委打分n");while(1)if(h=NULL)return;printf(" %d %s ",h->number,h->name);for(n=0;n<9;n+)printf("%.3f ",h->scoren);printf("n");h=h->next;/移动指针/*输出最终数据OutputFinal()*/void OutputFinal(SINGER *s)FILE *fp;SINGER *h=s->next;/定义新的头指针,以免原头指针移动in
16、t n=1;/排名用printf("下面输出最终成绩:n");printf("名次 选手编号 姓名 得分 n");fopen("singerFinal.dat","wb");while(1)if(h=NULL)return;printf(" %d %d %s %.3f",n,h->number,h->name,h->average);n+;printf("n");h=h->next;fclose(fp);/*删除数据Delete()*/SINGER*
17、Delete(SINGER *s)int SN;/删除用SINGER *p1=NULL;/存空SINGER *p2=NULL;/存空p1=s->next;printf("请输入您想删除的歌手的编号");scanf("%d",&SN);/读入想删除的编号while(SN!=p1->number&&p1->next!=NULL)/p1中的number不为SNp2=p1;/移动p1=p1->next;/移动if(p1->number=SN)if(p1=s->next)/当要改数据为头节点时s=p1;/
18、更新头节点p1=NULL;/防止误操作elsep2->next=p1->next;free(p1);return s;elseprintf("无此名歌手!n");return s;/返回头指针/*插入数据insert()*/void insert(SINGER *head,SINGER *p)SINGER *s = (SINGER*)malloc(sizeof(SINGER);for(s=head;s->next!=NULL;)s=s->next;s->next=p;p->next=NULL;/*主函数main()*/int main(v
19、oid)SINGER *head;/头指针int SingerNumber;/学生人数int instruct;/输入指令用int n;printf("*n");printf("*n");printf("歌手评分系统n");printf("nn");printf("下面开始创建歌手信息n");printf("请输入歌手人数:");scanf("%d",&SingerNumber);head=CreateLink(SingerNumber);/调用创
20、建链表函数printf("下面请输入歌手信息n");InputData(head);/调用输入函数OutputSource(head);/调用输出源数据函数printf("*n");printf("*n");printf("请输入操作指令:n");while(1)printf("插入个人信息请按:“1”n");printf("删除个人信息请按:“2”n");printf("计算成绩请按: “3”n");printf("计算排名请按: “4”n&q
21、uot;);printf("输出最终成绩请按:“5”n");printf("退出请按: “6”n");printf("请输入操作指令:");scanf("%d",&instruct);/录入指令if(instruct=1)/指令1SINGER * p = (SINGER*)malloc(sizeof(SINGER);printf("请输入要插入的歌手的信息");printf("请输入姓名:");scanf("%s",p->name);printf("请输入编号:");scanf("%d",&(p->number);getchar();insert(head,p);/调用插入函数SingerNumber+;printf("请输入成绩:n");for(n=0;n<9;n+)printf("请输入第%d个评委的打分:",n+1);scanf("%f",&(p->scoren);printf("插入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 盐城师范学院《语文教学论》2021-2022学年第一学期期末试卷
- 盐城师范学院《网上开店》2021-2022学年期末试卷
- 盐城师范学院《跆拳道》2022-2023学年第一学期期末试卷
- 2024不锈钢采购合同范文
- 人教版四年级上册数学第六单元《除数是两位数的除法》测试卷及参考答案(综合卷)
- 北师大版四年级上册数学第一单元 认识更大的数 测试卷含答案【满分必刷】
- 冀教版四年级上册数学第六单元 认识更大的数 测试卷【能力提升】
- 2024年宝马轿跑车合作协议书
- 2024个人承包经营合同
- 2024农民专业合作社社员股份合同书
- 单人徒手心肺复苏操作评分表(医院考核标准版)
- 教育数字化背景下的创新教学方法及效果评估研究
- 第五章班级活动的设计-与实施
- 小学语文-示儿教学设计学情分析教材分析课后反思
- 《初二班会课件:班级管理与自我管理》
- 食材配送服务方案(技术方案)
- 生物 七年级 人教版 生物体的结构层次 单元作业设计
- 小学英语-My father has short hair教学课件设计
- Unit4+Understanding+Ideas+Click+for+a+friend 高中英语外研版(2019)必修第一册
- 新教科版科学六年级上册期末综合测试卷(五)
- HACCP风险评估报告样板
评论
0/150
提交评论