电视大赛观众投票及排名系统设计报告.doc
《电视大赛观众投票及排名系统设计报告.doc》由会员分享,可在线阅读,更多相关《电视大赛观众投票及排名系统设计报告.doc(20页珍藏版)》请在沃文网上搜索。
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、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。word文档 可自由复制编辑摘 要 电视大赛观众投票及排名系统是一个运用在各种电视节目中用来进行投票的一种较为智能的系统。该系统用途广泛例如进行选手的投票和
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(Seq
8、List *L)3.3 关键程序设计与分析(希尔排序)本次程序设计的关键部分在于对选手投票结果的排序,对投票排序模块的代码分析如下:本次程序设计采用希尔排序,取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量dt=1(dtdt-ld2len;doincrement=increment/3+1; /* 增量序列 */for(i=increment+1;ilen;i+)if (L-datai.score L-datai-increment.score
9、) /* 需将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+)if(L-datai-
10、1.score=L-datai.score)L-datai.tax= L-datai-1.tax;elseL-datai.tax= L-datai-1.tax+1;printf(正在计算选手名次请稍后n排序成功n);3.4程序预计实现结果 本程序在c+6.0中运行:1.输入的形式和输入值的范围:由于本程序主要运用于观众投票以及选手信息的输入,所以输入的形式是数字及字符,范围不限;2.输出的形式:根据观众投票情况输出排名情况3.程序实现的功能:实现观众投票以及选手得分情况的排名4.测试数据:a.输入选手的个数以及每个选手的信息输入“4”“asdf”b.根据菜单输入选号“2”输出“1号a得分是0,
11、排名是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、在程序完成后但由于输入选手姓名后不能根据名字长短自动判断自动判断对齐编号列表,后来经过老师指导并请教
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电视大赛 观众 投票 排名 系统 设计 报告
