收藏 分销(赏)

C语言程序专业课程设计歌手比赛系统.doc

上传人:精*** 文档编号:2864398 上传时间:2024-06-07 格式:DOC 页数:21 大小:389.54KB 下载积分:10 金币
下载 相关 举报
C语言程序专业课程设计歌手比赛系统.doc_第1页
第1页 / 共21页
C语言程序专业课程设计歌手比赛系统.doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
淮南师范学院 课程设计汇报 歌手比赛系统 姓 名:胡欢欢 学 号: 专 业:计算机科学和技术 班 级: 10级(1)班 指导老师:彭飞 职 称:XXX 3月7日 目录 1.引言 1 2.系统设计 1 2.1设计分析 1 2.1.1 项目描述 1 2.2 程序结构 2 2.2.1程序划分 2 2.2.2 程序结构步骤图 3 3.系统实现 3 3.1 各模块功效及程序说明 3 3.2系统关键功效模块运行效果图 3 4.设计体会 6 5.参考文件 7 6.源程序代码 7 1.摘要 C语言是一门计算机高级语言,它在Microsoft开发软件Visual C++ 6.0中实施,C语言含有很多优点: 1.C语言含有丰富数据类型,众多运算符,表现结构化程序设计优良控制结构,含有抽象功效及表现信息隐蔽思想函数。 2.C语言应用几乎遍布了程序各个领域,如科学家,系统程序设计,字处理软件和电子表格软件开发,信息管理,计算机辅助设计,等方面。 3.C语言简练,为完成某一功效所写源程序代码往往比其它语言写得短,便利程序输入工作量降低。 4.若程序员在书写过程时严格遵照ANSI C标准,则其源代码可不作修改,即可用于多种型号计算机和多种操作系统,所以,C语言含有良好可移植性。 此次实践我们选择了使用C语言编写基于链表程序,不仅使大家对程序设计、编程方法有了深入提升,而且掌握了使用C语言动态内存分配及数据结构等方面知识。 2.系统设计 2.1设计分析 2.1.1 项目描述 1.项目名称:歌手打分系统 2.功效描述: (1)生成字符界面功效菜单 **********1.输入选手数据********** **********2.评委打分************** **********3.成绩排序************** **********4.数据查询************** **********5.追加学生数据********** **********6.写入数据文件********** **********7.退出系统************** (2)经过输入菜单项序号开启对应模块功效 ① 能够依据输入选手人数创建链表; ② 录入9名评委给选手打分,并存放到文件singerOriginal.dat中; ③ 根据去掉一个最高分和去掉一个最低分标准求每名选手平均分; ② 按平均分由高到低次序对选手进行排序; ③ 把排名后数据存放到文件singerFianl.dat中; ④ 把原始数据和最终结果输出到屏幕; ④ 在第②步中保留singerOriginal.dat文件之前,可依据情况修改数据,比如:插入或删除歌手。 2.2 程序结构 2.2.1程序划分 将歌手打分系统程序进行系统模块划分,共分为九部分,分别是: 1.定义结构体 2.创建链表函数 3.输入数据函数 4.计算函数 5.排序函数 6.输出数据函数 7.输出最终数据 8.删除函数 9.插入函数 10.主函数 2.2.2 程序结构步骤图 main 输出数据 存放数据 排序 求平均分 得分维护 得分录入 输入成绩 创建链表 3.系统实现 3.1 各模块功效及程序说明 创建链表:使用尾插法插入数据; 输入选手信息:包含选手信息输入,选手成绩输入,去掉一个最高分和最低分,并将其它评委评分求出平均值。 输出选手排名:包含选手成绩排名。 删除和插入选手信息:将退赛选手和新参与比赛选手进行删除和插入。 主函数:将全部函数实现。 3.2系统关键功效模块运行效果图 程序运行效果图: 4.设计体会 在此次C语言实践中,让我受益匪浅,经过此次实践,让更深入了解了C语言这门计算机语言,也明白了软件开发相关步骤和基础步骤,可能我程序还存在些许问题,可能还不完美,不过我相信在以后学习中我们会继改善。也期望老师能够给我们提出您宝贵意见。 5.参考文件 编程入门网: C程序设计(第四版)谭浩强著 6.源程序代码 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #define N 3 #define M 10 int add = N-1; int sum[N]={0},Max[N],Min[N]; float aver[N]={0}; struct player {int num; char name[8]; int score[M]; }; void Inistplayer(struct player a[],int n) {int i; for(i=0;i<n;i++) scanf("%d %s",&a[i].num,&a[i].name); } void Inputscore(int score[],int n) {int i; for(i=0;i<n;i++) score[i]=1+(int)10*rand()/(RAND_MAX+1); } void sort(struct player a[],float b[],int n) {int i,k,j,t; float temp; char str[8]; for(i=0;i<n;i++) {k=i; for(j=i+1;j<n;j++) if(b[k]>b[j]) k=j; if(k!=i) {temp=b[i]; b[i]=b[k]; b[k]=temp; strcpy(str,a[i].name); strcpy(a[i].name,a[k].name); strcpy(a[k].name,str); t=a[i].num; a[i].num=a[k].num; a[k].num=t; } } } void main() {int flag=1,n,i,m,j; FILE *fp; fp = fopen("data.txt","w+"); struct player a[20]; printf("**********1.输入选手数据***********\n"); printf("**********2.评委打分***************\n"); printf("**********3.成绩排序***************\n"); printf("**********4.数据查询***************\n"); printf("**********5.追加学生数据***********\n"); printf("**********6.写入数据文件***********\n"); printf("**********7.退出系统***************\n"); while(flag) {printf("你想进行操作:"); scanf("%d",&n); switch(n) { case 1:Inistplayer(a,N);break; case 2:srand((unsigned)time(NULL)); for(i=0;i<N;i++) { printf("%d位选手成绩:",i+1); Inputscore(a[i].score,M); for(j=0;j<M;j++) printf("%d ",a[i].score[j]); printf("\n"); } break; case 3:for(i=0;i<N;i++) {Max[i]=a[i].score[0]; Min[i]=a[i].score[0]; for(j=0;j<M;j++) { sum[i]+=a[i].score[j]; if(Max[i]<a[i].score[j]) Max[i]=a[i].score[j]; if(Min[i]>a[i].score[j]) Min[i]=a[i].score[j]; } aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2); } sort(a,aver,N); for(i=0;i<N;i++) printf("%s %5.2f\n",a[i].name,aver[i]); break; case 4:printf("你想查询选手数据:"); scanf("%d",&m); for(i=0;i<N;i++) if(a[i].num==m) { printf("%d号选手%s总分:%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]); printf("\n"); } break; case 5:printf("请输入要追加选手数据:\n"); add += 1; scanf("%d %s",&a[add].num,&a[add].name); break; case 6:printf("将数据写入文件中:\n"); for (i = 0 ; i < add+1 ; i++) { fprintf(fp,"%d ",a[i].num); fprintf(fp,"%s ",a[i].name); fprintf(fp,"%d\n",a[i].score); } break; case 7:exit(0); break; default:flag=0; } } } 程序2: #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> //#define N 3 #define M 10 int add = N-1; int x=3; int sum[N]={0},Max[N],Min[N]; float aver[N]={0}; struct player {int num; char name[8]; int score[M]; }; void Inistplayer(struct player a[],int n) {int i; for(i=0;i<n;i++) scanf("%d %s",&a[i].num,&a[i].name); } void Inputscore(int score[],int n) {int i; for(i=0;i<n;i++) score[i]=1+(int)10*rand()/(RAND_MAX+1); } void sort(struct player a[],float b[],int n) {int i,k,j,t; float temp; char str[8]; for(i=0;i<n;i++) {k=i; for(j=i+1;j<n;j++) if(b[k]>b[j]) k=j; if(k!=i) {temp=b[i]; b[i]=b[k]; b[k]=temp; strcpy(str,a[i].name); strcpy(a[i].name,a[k].name); strcpy(a[k].name,str); t=a[i].num; a[i].num=a[k].num; a[k].num=t; } } } void main() {int flag=1,n,i,m,j; FILE *fp; fp = fopen("data.txt","w+"); struct player a[20]; printf("**********1.输入选手数据***********\n"); printf("**********2.评委打分***************\n"); printf("**********3.成绩排序***************\n"); printf("**********4.数据查询***************\n"); printf("**********5.追加学生数据***********\n"); printf("**********6.写入数据文件***********\n"); printf("**********7.退出系统***************\n"); while(flag) {printf("你想进行操作:"); scanf("%d",&n); switch(n) { case 1:Inistplayer(a,N);break; case 2:srand((unsigned)time(NULL)); for(i=0;i<x;i++) { printf("%d位选手成绩:",i+1); Inputscore(a[i].score,M); for(j=0;j<M;j++) printf("%d ",a[i].score[j]); printf("\n"); } break; case 3:for(i=0;i<x;i++) {Max[i]=a[i].score[0]; Min[i]=a[i].score[0]; for(j=0;j<M;j++) { sum[i]+=a[i].score[j]; if(Max[i]<a[i].score[j]) Max[i]=a[i].score[j]; if(Min[i]>a[i].score[j]) Min[i]=a[i].score[j]; } aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2); } sort(a,aver,x); for(i=0;i<x;i++) printf("%s %5.2f\n",a[i].name,aver[i]); break; case 4:printf("你想查询选手数据:"); scanf("%d",&m); for(i=0;i<x;i++) if(a[i].num==m) { printf("%d号选手%s总分:%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]); printf("\n"); } x=x+1; break; case 5:printf("请输入要追加选手数据:\n"); add += 1; scanf("%d %s",&a[add].num,&a[add].name); break; case 6:printf("将数据写入文件中:\n"); for (i = 0 ; i < add+1 ; i++) { fprintf(fp,"%d ",a[i].num); fprintf(fp,"%s ",a[i].name); fprintf(fp,"%d\n",a[i].score); } break; case 7:exit(0); break; default:flag=0; } } } 课程设计汇报评分表(即封底) 淮南师范学院 年课程设计汇报评分表 学生姓名:XXX 学号:XXXXX 班级:XXXX 课程设计题目:歌手比赛系统 项目内容 满分 实 评 选 题 能结合所学课程知识、有一定能力训练。符合选题要求 (3人一题) 5 工作量适中,难易度合理 10 能 力 水 平 能熟练应用所学知识,有一定查阅文件及利用文件资料能力 10 理论依据充足,数据正确,公式推导正确 10 能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等 10 能表现发明性思维,或有独特见解 15 成 果 质 量 模型正确、合理,各项技术指标符合要求。 15 摘要叙述简练完整,假设合理、问题分析正确、数学用语正确、结论严谨合理;问题处理科学、条理分明、语言流畅、结构严谨、版面清楚 15 课程设计汇报关键部分齐全、合理,符号统一、编号齐全。 格式、绘图、表格、插图等规范正确,符合课程设计汇报要求 10 正文字数不少于字,不超出15000字 5 总 分 100 指导老师评语: 指导老师署名: 年 月 日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服