ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:181.54KB ,
资源ID:11337756      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11337756.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电视大赛观众投票及排名系统设计报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电视大赛观众投票及排名系统设计报告.docx

1、电视大赛观众投票及排名系统设计报告 课程设计说明书课程设计名称: 综合程序课程设计 课程设计题目: 电视大赛观众投票及排名系统 学 院 名 称: 信息工程学院 专业:电子信息工程 班级: 学号: 姓名: 评分: 教师: 20 14 年 2 月 20 日 电子信息工程专业 课程设计任务书20 13 20 14 学年 第 2 学期第 1 周 2 周 题目电视大赛观众投票及排名系统内容及要求 在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。现在要求采用编写一程序模拟实现上述系统的功能

2、进度安排周一、布置任务,查阅资料周二、模块程序的分别设计周三、对整个程序进行调试周四、对程序代码进行优化周五、设计结果的检查及报告的撰写学生姓名:指导时间 第一周指导地点:综合楼506 室任务下达2014年 2 月 17 日任务完成2014 年 2 月 21 日考核方式1.评阅 2.答辩 3.实际操作 4.其它指导教师系(部)主任注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。摘 要 电视大赛观众投票及排名系统是一个运用在各种电视节目中用来进行投票的一种较为智能的系统。该系统用途广泛例如进行选手的

3、投票和选手的观众的支持数量统计以及各种竞赛节目都能发挥作用。本次设计的采用的是以C语言以及数据结构的知识在visual C+ 6.0的环境下进行编程。通过模块化的方法将投票、排序、文档输出保存等功能进行一一实现。最终程序能够较好的实现选手信息输入、投票、排序、结果保存输出txt文件等功能。 关键词:C语言;数据结构;投票及排名系统;编译第一章 设计内容及要求3第二章 程序设计方案4第三章 程序具体分析与设计3.1 基本思路53.2 程序分析及其设计63.3关键程序设计与分析73.4程序预计实现结果8第四章 方案的调试及测试结果与分析4.1 调试过程中遇到的问题及解决方案94.2 调试结果与分析

4、9第五章 课程设计分析总结与心得体会12附录13参考文献17第一章 设计内容及要求在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。现在要求编写一程序模拟实现上述系统的功能在该课程设计中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc函数来开辟存放选手信息的顺序表。将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按1为1号选手投票,按2为2号选手投票,以此类推,以按0作为投票结束标志。投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名

5、次,得票相同的名次也相同。最终输出排名结果,并将结果保存到文件中。 第二章程序设计方案2.1总体设计思路本程序分为四个模块:1.主程序模块:实现对函数的调用; 2.顺序表模块:实现对选手信息的存储; 3.投票模块:实现观众对选手的投票; 4.排序模块:实现对选手成绩的排序。 它们之间的关系为:主程序模块 顺序表模块 投票模块 排序模块2.2详细设计方案 本程序分为五个模块a、主程序模块: 实现对函数的调用;b、顺序表模块: 实现选手信息存储;c、投票模块: 实现观众对选手的投票;d、排序模块: 实现对选手成绩的排序;e、文件保存模块: 实现对选手成绩的保存;第三章 程序具体分析及设计3.1 基

6、本思路 将输入的信息储存在顺序链表中,然后观众投票后对其累加票数,最后利用希尔排序对选手的得票进行从高到低地排序,显示名次的先后(包含并列名次),并对最终结果进行保存到文件。3.2 程序分析及其设计分析:为了实现上述程序功能,需要定义顺序表的抽象数据类型如下1、存储类型的定义 参赛选手信息存储类型的定义:typedef struct node /结构体定义,命名一个新的类型名代表结构体类型 char name9; / 选手姓名 int num; /选手编号 int score; / 选手得分 int tax; /选手名次ElemType; /新的类型名2、函数的定义1. 函数Menu, 用于进

7、行菜单的显示和选号:void Meun()2.函数Init_sq,为选手个数分配动态:void Init_sq(SeqList *L,int n)3.函数Init,用于完成选手信息的输入:void Init(SeqList *L)4. Vote函数用以实现投票的功能:void Vote(SeqList *L)5.希尔排序:void Shellsort(SeqList *L)6. Rank函数,用以计算选手名次:void Rank(SeqList *L)7.Display函数,用以输出最终结果:void Display(SeqList *L)8.Save函数,实现文件的生成:void Save(

8、SeqList *L)3.3 关键程序设计与分析(希尔排序)本次程序设计的关键部分在于对选手投票结果的排序,对投票排序模块的代码分析如下:本次程序设计采用希尔排序,取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量dt=1(dtdt-ld2len; do increment=increment/3+1; /* 增量序列 */ for(i=increment+1;ilen;i+) if (L-datai.score L-datai-incremen

9、t.score) /* 需将L-ri插入有序增量子表 */ L-data0=L-datai; /* 暂存在L-r0 */ for(j=i-increment; j0 & L-data0.score L-dataj.score; j-=increment) L-dataj+increment=L-dataj; /* 记录后移,查找插入位置 */ L-dataj+increment=L-data0; /* 插入 */ while(increment1);void Rank(SeqList *L) /* 计算选手名次 */ int i; L-data1.tax=1; for(i=2;ilen;i+)

10、 if(L-datai-1.score=L-datai.score) L-datai.tax= L-datai-1.tax; else L-datai.tax= L-datai-1.tax+1; printf(正在计算选手名次请稍后n排序成功n);3.4程序预计实现结果 本程序在c+6.0中运行:1.输入的形式和输入值的范围:由于本程序主要运用于观众投票以及选手信息的输入,所以输入的形式是数字及字符,范围不限;2.输出的形式:根据观众投票情况输出排名情况3.程序实现的功能:实现观众投票以及选手得分情况的排名4.测试数据:a.输入选手的个数以及每个选手的信息输入“4”“asdf”b.根据菜单输入

11、选号“2”输出“1号a得分是0,排名是0;2号s得分是0,排名是0;3号d得分是0,排名是0;4号f得分是0,排名是0;”c.给选手投票,输入“123333432210”。d.根据菜单输入选号“4”,输出排序结果及名次。 e根据菜单驶入选号“5”,保存输出文件 f根据菜单选号“6”,退出程序。第四章 方案的调试及测试结果与分析4.1 调试过程1、 在刚开始编程的时候经常会碰到一些低级编写错误例如漏分号大括号不匹配等 经过仔细修改已能正常运行; 2、 本程序的模块划分简单而合理,在操作方面比较容易,运用顺序表来存储选手信息;3、在程序完成后但由于输入选手姓名后不能根据名字长短自动判断自动判断对齐

12、编号列表,后来经过老师指导并请教同学优化代码,在输入名字后按下TAB键就能自动对齐编号列表,程序更加人性化。 4、 本实验程序设计中,将程序分为五个模块,使得设计时思路清晰,实现时调试顺利,各 模块具有较好的可重用性,确实得到了一次良好的程序设计训练。4.2 调试结果与分析(1)输入选手信息界面(2)投票界面(3)排序界面(4)排序结果页面(5)保存到文件(6)保留到文件的界面:经编译完成,此次设计程序已完成选手信息输入、投票、排序及保存到文件等功能第五章 课程设计分析总结与心得体会此次实习为期一周,时间虽然不多但是我学到了很多,也知道了很多的不足。通过老师的精心指导带领下,我不仅获得了很多新

13、知识,还好好复习了一下以前学的知识。作为一个电子专业的学生,C语言是一门必须要熟练掌握的重要语言。在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是更多的还是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。C语言课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机

14、实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。我所编的虽然只是一个小程序,但是每一步的编的过程,让我懂得很多。重温一下C语言,因为过了计算机二级,因而编程比较容易懂,但是通过练习,发现理论与实际的差距。编程从一开始全部编到一个main函数中到,最后逐个分块,到添加功能,到最后的进行代码的优化,使程序的可用性和智能性都有进一步的提高,一点一点的进步让我很欣喜,对编程的兴趣也更加浓厚。此次实习,不仅了有关c语言的知识,还掌握了一些现实中编程的一些小技巧,实际的编程能力也得到了历练,本次课程设计是很好

15、的一次锻炼机会!附录 程序源代码#include #include /动态存储分配函数头文件#define LIST_INIT_SIZE 3 /#define指令,指定用一个符号名称代表常量#define LIST_INCREMENT 3 typedef struct node /结构体定义,命名一个新的类型名代表结构体类型 char name9; / 选手姓名 int num; /选手编号 int score; / 选手得分 int tax; /选手名次ElemType; /新的类型名typedef struct ElemType *data; /定义结构体指针变量data,指向此结构体类型

16、数据 int len; int listsize; SeqList; /新的类型名void Init_sq(SeqList *L,int n) /定义函数Init_sq,为选手个数分配动态内存 L-data=(ElemType*)malloc(n*sizeof(ElemType); /用malloc函数分配动态内存 if(!L-data) exit(1); /存储分配失败 L-len = n; /空表长度为0 L-listsize = n; /初始存储容量void Init(SeqList *L) /定义函数Init,用于完成选手信息的输入 ElemType *newbase; /定义结构体指

17、针变量指向ElemType结构体类型数据 int i,n; printf(请输入选手个数: ); scanf(%d,&n); Init_sq(L,n); printf(请输入选手姓名和编号n); printf(姓名t编号tn); if(L-len=L-listsize) newbase=(ElemType*)realloc(L-data,(L-listsize+LIST_INCREMENT)*sizeof(ElemType); /用ralloc函数重新分配动态空间 if(!newbase) exit(1); /分配失败 L-data = newbase; L-listsize += LIST_

18、INCREMENT; for(i=1;ilen;i+) /for循环输入选手信息 scanf(%s%d,L-datai.name,&L-datai.num); L-datai.score = L-datai.tax =0; void Vote(SeqList *L) /定义Vote函数用以实现投票的功能 int i,num; printf(请输入您要为几号选手投票:( 0 结束) n); do scanf(%d,&num); if(num L-len) printf(你输入的编号错误请重新输入 (1-%d)n,L-len); continue; else for(i=1;ilen;i+) if

19、(L-datai.num = num) L-datai.score += 1; while(num != 0); /for循环实现为某号选手投票使其得分增加 void Shellsort(SeqList *L) /希尔排序 int i,j; int increment=L-len; do increment=increment/3+1; /增量序列 for(i=increment+1;ilen;i+) if (L-datai.score L-datai-increment.score) /需将 L-ri插入有序增量子表 L-data0=L-datai; /暂存在L-r0 for(j=i-inc

20、rement; j0 & L-data0.score L-dataj.score; j-=increment) L-dataj+increment=L-dataj; /记录后移,查找插入位置 L-dataj+increment=L-data0; /插入 while(increment1); /* 计算选手名次 */void Rank(SeqList *L) / Rank函数,用以计算选手名次 int i; L-data1.tax=1; for(i=2;ilen;i+) if(L-datai-1.score=L-datai.score) L-datai.tax= L-datai-1.tax; e

21、lse L-datai.tax= L-datai-1.tax+1; printf(正在计算选手名次请稍后n排序成功n);void Display(SeqList *L) /定义Display函数,用以输出最终结果 int i; printf(姓名t编号t票数t名次tn); for(i=1;ilen;i+) printf(%st%dt%dt%dtn,L-datai.name,L-datai.num,L-datai.score,L-datai.tax); printf(n);void Save(SeqList *L) /定义Save函数,实现文件的生成 FILE *fp; /定义一个指向文件的指针

22、变量fp int i; char filename20; printf(请输入目标文件名:n); scanf(%s,filename); fp=fopen(filename,w);/建立新文件将fopen函数的返回值赋给指针/变量fp,fp指向了名为filename的文件 fprintf(fp,姓名t编号t票数t名次n); for(i=1;ilen;i+) fprintf(fp,%st%dt%dt%dtn,L-datai.name,L-datai.num,L-datai.score,L-datai.tax); fclose(fp); printf(数据已成功保存! n); void Meun(

23、) /Meun函数,生成系统主界面 printf(*电视大赛观众投票及排名系统*n); printf(* 1、输入选手信息(姓名、编号) *n); printf(* 2、开始投票 *n); printf(* 3、排序 *n); printf(* 4、查看结果 *n); printf(* 5、保存到文件 *n); printf(* 6、退出 *n); printf(*n); void main() /主函数 int sel; SeqList L; SeqList P; while(1) Meun(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&sel);

24、 while(sel6) printf(输入有误,请重新输入:); scanf(%d,&sel); switch(sel) case 1:Init(&L);break; case 2:Vote(&L);break; case 3:Shellsort(&L); Rank(&L);break; case 4:Display(&L);break; case 5:Save(&L);break; case 6: printf(谢谢使用,再见!n); exit(0); 参考文献1.谭浩强. C程序设计(第4版).清华大学出版社, 2010.62.严蔚敏 吴伟民. 数据结构(C语言版).清华大学出版社, 2012

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1