当前位置:文档之家› 电视投票系统综合课程设计

电视投票系统综合课程设计

综合程序课程设计说明书课程设计名称:综合程序课程设计课程设计题目:电视大赛观众投票及排名系统学院名称:信息工程学院专业:电子信息工程班级: 120414学号: 12041412 姓名:彭涛评分:教师:吴小润20 15 年 3 月 20 日综合程序课程设计任务书20 14 -20 15学年第 2 学期第 1 周- 2周摘要随着电视机走进了千家万户,电视上最多的是电视广告,电视剧,除此以外就是各类综艺节目,各类综艺节目层出不穷,为了给带给观众带来更多的欢乐,增强参与感,大多电视大赛都少不了大量观众的互动,现场观众会对大赛的参赛选手进行投票支持,随着形式的发展,传统的记录排列方式已经不能满足需求,智能投票系统的出现,使投票变得轻松简单,功能也更为强大。

此次设计采用 Visual C + + 程序设计语言、运用数据结构通过模块化系统来制作一个电视大赛观众投票和排名系统,以此实现选手信息的录入、观众的投票、排名显示的功能。

关键字:大赛投票希尔排序排名系统目录前言_____________________________________________________________________________ 7正文 _____________________________________________________________________________________________ 8 第一章设计要求_______________________________________________________________________________ 8 第二章设计概要 ________________________________________________________________________________ 8 第三章设计详细_______________________________________________________________________________ 10 1.系统的组成 _________________________________________________________________________________ 102.系统程序框图 ________________________________________________________________________________ 103..函数设计 __________________________________________________________________________________ 111.添加选手信息 ____________________________________________________________________________ 112、投票 ___________________________________________________________________________________ 133.希尔排序 ________________________________________________________________________________ 154.显示菜单 ________________________________________________________________________________ 175.主函数 __________________________________________________________________________________ 17 第四章运行结果及调试_________________________________________________________________________ 18 第五章设计体会 _______________________________________________________________________________ 22 第六章参考文献______________________________________________________________________________ 23 第七章附件__________________________________________________________________________________ 24 程序 _________________________________________________________________________________________ 24智能电视投票系统的优越性在于他的高效率和准确率,投票系统采用合理的程序,科学的算法,人性化的界面,使得观众投票变成一件简单的事情,本次设计通过C语言来编写一个简单实用的投票系统,通过希尔算法进行排列第一章设计要求【问题描述】在电视大赛中,选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,按高到低进行。

现在要求编写一程序模拟实现上述系统的功能。

【实现提示】在本例中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc或new函数来开辟存放选手信息的顺序表。

将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志。

投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同第二章设计概要通过对课题的需求分析,首先想到的是需要初始化(选手信息)、投票、排序、显示输出的模块,退出的功能。

初始化课题假设选手为1到9,而且选手信息较多,采用结构体定义选手信息,在初始化中完成存储空间的开辟、对选手信息初始化。

投票在投票中,完成投票功能,最初按照提示中的方向来做,但在调试过程中发现每次的投票环节会比较繁琐,且不适宜大数据的测试,后来在老师提醒下采用随机数来模拟投票这一过程,也更科学,更符合投票这一过程。

排名在这一环节中到没怎么纠结,按提示中的希尔排序方法来实现。

显示这一功能的实现比价简单,用printf()函数实现退出系统使用完以后需要退出,是不是必要的有待考察,因为可以直接点击右上角的关闭主菜单为了有一个友好的用户界面,增加菜单提示,方便自己调试和用户的操作。

第三章设计详细1.系统的组成2.系统程序框图3..函数设计1.添加选手信息通过该函数可以添加选手的信息,使用时首先输入参赛选手的人数(范围为1-9个),选手的信息包括姓名和编号,还有该函数是根据人数通过malloc函数来开辟存放选手信息的顺序表,当使用者添加完成选手的编号和姓名后,该函数进依次将选手的信息存入顺序表单元中。

当下次使用,选择该功能时,就会自动读出上次保存的选手的信息,如果选手的信息丢失了,还可以通过该函数重新输入选手的信息,并且自动保存在"xuanshou.txt"的文件名的文本文档中。

void tianjia(){。

int i=1;p=(info *)malloc(sizeof(info));if((fp=fopen("xuanshou.txt", "r"))!=NULL){char a[10],b[10];fscanf(fp,"%s%s\n",a,b); //读取"编号","姓名"这两个字符串while(!feof(fp)){fscanf(fp,"%d%s\n",&p[i]->num ,p[i]->name );i++;}fclose(fp);numbers =i-1;printf("读取文件记录成功!\n");}else{printf("不存在记录文件,请输入选手的数量:\n");int n;添加选手信息:首先输入参赛选手的人数(范围为1-9个),选手的信息包括姓名和编号,然后根据人数通过malloc函数来开辟存放选手信息的顺序表。

最后通过输入将选手的编号和姓名依此存入顺序表单元中。

scanf("%d",&n);getchar();numbers =n;printf("请输入%d名选手的编号和姓名:\n",n);while(n--){scanf("%d%s",&p[i]->num ,p[i]->name );getchar();i++;}printf("输入完成!\n");}printf("选手信息如下:\n");printf("编号姓名\n");for( i=1;i<= numbers;i++)printf("%d %s\n",p[i]->num ,p[i]->name );}2、投票使用者通过该投票函数,可以对选手进行投票,该函数是定义一个p[i]->sum来存放选手的票数,当输入'1'时就为一号选手投票,输入'2'为2号选手投票,以此类推,以输入'0'作为投票结束标记。

当输入的数字n(n<1||n>numbers)时,就输出"不存在此号码,请重新输入"void toupiao(){int i;for(i=1;i<=numbers ;i++)p[i]->sum =0;printf("投票开始啦!\n");printf("请观众通过按键进行投票,按'1'为1号选手投票");printf("按'2'为2号选手投票,以此类推,以按'0'作为投票结束标记\n");printf("投票现在正式开始:\n");int n;投票:创建好选手的人数和信息之后,观众就可以通过该投票函数对选手进行投票。

while(1){scanf("%d",&n);getchar();if(n==0)break;while(n<1||n>numbers){printf("不存在此号码,请重新输入:");scanf("%d",&n);}p[n]->sum ++;}printf("投票完成!\n");printf("投票情况如下:\n");printf("编号姓名票数\n");for(i=1;i<=numbers ;i++)printf("%d %s %d\n",p[i]->num ,p[i]->name ,p[i]->sum );}3.希尔排序排序:该函数采用希尔排序法对选手的票数进行排序,排序完成后依次按名次、编号、姓名、票数进行输出void shellinsert(info *R,int n,int dk){int i;for(i=dk+1;i<=n;i++){if(R[i]->sum >R[i-dk]->sum ){ //小于时,需R[i]将插入有序表*R[0] =*R[i]; //存储待插入的记录for(int j=i-dk;j>0&&R[j]->sum <R[0]->sum ;j=j-dk)*R[j+dk]=*R[j]; //记录后移*R[j+dk]=*R[0]; //插入到正确位置}}}void shellsort(info *R,int n){int i;int t[10]={21,19,17,13,11,7,5,3,2,1}; //步长因子中除1外没有公因子,且最后一个步长因子必须为1for(i=0;i<10;i++)shellinsert(R,n,t[i]); //调用每个步长因子printf("最终排名如下:\n");printf("名次编号姓名票数\n");int mm=1;for(i=1;i<=numbers;i++){if(i>=2&&p[i]->sum <p[i-1]->sum )mm++;printf("%d %d %s %d\n",mm,p[i]->num ,p[i]->name ,p[i]->sum );}}4.显示菜单用户界面提示使用人员如何操作void menu(){printf(" ************************电视大赛观众投票及排名系统*************************** \n\n\n");printf(" 1添加选手信息\n 2投票\n 3排序\n 4退出\n");}5.主函数通过主函数调用函数实现功能void main(){int i;while (1){menu();printf("\n 请输入您要选择的操作序号,按回车键确认:");scanf("%d", &i);while (i<1 || i>4){printf("输入有误,请重新输入:");scanf("%d", &i);}switch (i){case 1: tianjia(); break;case 2: toupiao(); break;case 3: shellsort(p, numbers);break;case 4: printf("谢谢使用,再见!"); exit(0);第四章运行结果及调试1.界面2.按提示输入选手信息3.观众投票4.排序结果5.结束退出第五章设计体会此次实习为期两周,时间虽然不多不少,我学到了一些东西,也知道了很多的不足。

相关主题