欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:971491       资源大小:260.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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、在程序完成后但由于输入选手姓名后不能根据名字长短自动判断自动判断对齐编号列表,后来经过老师指导并请教

    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 structElemType *data; /定义结构体指针变量data,指向此结构体类型数据int len; int lists

    16、ize; 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; /定义结构体指针变量指向ElemType结构体类型数据 int

    17、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_INCREMENT;for(i=1;ilen;i+) /for循环

    18、输入选手信息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); doscanf(%d,&num);if(num L-len)printf(你输入的编号错误请重新输入 (1-%d)n,L-len);continue;elsefor(i=1;ilen;i+)if(L-datai.num = num)L-datai.score += 1;while(

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

    20、nt) 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;elseL-datai.tax= L-datai-1.tax+1;printf(正在计算选手名次请稍后n排序成功n)

    21、;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; /定义一个指向文件的指针变量fpint i;char filename20;printf(请输入目标文件名:n);scanf(%s,filename);

    22、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() /Meun函数,生成系统主界面 printf(*电视大赛观众投票及排名系统*n); printf(* 1、输入选手信息(姓名、编号) *n);

    23、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);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语言版).清华大学出版社, 2012word文档 可自由复制编辑


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922