电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx

上传人:b****6 文档编号:20202170 上传时间:2023-01-18 格式:DOCX 页数:10 大小:70.62KB
下载 相关 举报
电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx_第1页
第1页 / 共10页
电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx_第2页
第2页 / 共10页
电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx_第3页
第3页 / 共10页
电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx_第4页
第4页 / 共10页
电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx

《电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。

电视大赛观众投票及排名系统排序应用算法与数据结构报告模版Word格式文档下载.docx

投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同。

四、总体设计本程序分为四个模块:

1.主程序模块:

实现对函数的调用;

2.顺序表模块:

实现对选手信息的存储;

3.投票模块:

实现观众对选手的投票;

4.排序模块:

实现对选手成绩的排序。

它们之间的关系为:

主程序模块顺序表模块投票模块排序模块五、详细设计与实现本程序分为五个模块a、主程序模块:

b、顺序表模块:

实现选手信息存储;

c、投票模块:

d、排序模块:

实现对选手成绩的排序;

e、文件保存模块:

实现对选手成绩的保存;

(1)分析:

为了实现上述程序功能,需要定义顺序表的抽象数据类型如下1、存储类型的定义参赛选手信息存储类型的定义:

typedefstructnode/结构体定义,命名一个新的类型名代表结构体类型charname9;

/选手姓名intnum;

/选手编号intscore;

/选手得分inttax;

/选手名次ElemType;

/新的类型名2、函数的定义1.函数Menu,用于进行菜单的显示和选号:

voidMeun()2.函数Init_sq,为选手个数分配动态:

voidInit_sq(SeqList*L,intn)3.函数Init,用于完成选手信息的输入:

voidInit(SeqList*L)4.Vote函数用以实现投票的功能:

voidVote(SeqList*L)5.希尔排序:

voidShellsort(SeqList*L)6.Rank函数,用以计算选手名次:

voidRank(SeqList*L)7.Display函数,用以输出最终结果:

voidDisplay(SeqList*L)8.Save函数,实现文件的生成:

voidSave(SeqList*L)

(1)输入选手信息界面

(2)投票界面(3)排序界面(4)排序结果页面(5)保留到文件的界面经编译完成,此次设计程序已完成选手信息输入、投票、排序及保存到文件等功能总结电视大赛观众投票及排名系统是一个运用在各种电视节目中用来进行投票的一种较为智能的系统。

该系统用途广泛例如进行选手的投票和选手的观众的支持数量统计以及各种竞赛节目都能发挥作用。

本次设计的采用的是以C语言以及数据结构的知识在visualC+6.0的环境下进行编程。

通过模块化的方法将投票、排序、文档输出保存等功能进行一一实现。

最终程序能够较好的实现选手信息输入、投票、排序、结果保存输出txt文件等功能。

源代码:

#include#include/动态存储分配函数头文件#defineLIST_INIT_SIZE3/#define指令,指定用一个符号名称代表常量#defineLIST_INCREMENT3typedefstructnode/结构体定义,命名一个新的类型名代表结构体类型charname9;

/新的类型名typedefstructElemType*data;

/定义结构体指针变量data,指向此结构体类型数据intlen;

intlistsize;

SeqList;

/新的类型名voidInit_sq(SeqList*L,intn)/定义函数Init_sq,为选手个数分配动态内存L-data=(ElemType*)malloc(n*sizeof(ElemType);

/用malloc函数分配动态内存if(!

L-data)exit

(1);

/存储分配失败L-len=n;

/空表长度为0L-listsize=n;

/初始存储容量voidInit(SeqList*L)/定义函数Init,用于完成选手信息的输入ElemType*newbase;

/定义结构体指针变量指向ElemType结构体类型数据inti,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循环输入选手信息scanf(%s%d,L-datai.name,&

L-datai.num);

L-datai.score=L-datai.tax=0;

voidVote(SeqList*L)/定义Vote函数用以实现投票的功能inti,num;

printf(请输入您要为几号选手投票:

(0结束)n);

doscanf(%d,&

num);

if(numL-len)printf(你输入的编号错误请重新输入(1-%d)n,L-len);

continue;

elsefor(i=1;

i+)if(L-datai.num=num)L-datai.score+=1;

while(num!

=0);

/for循环实现为某号选手投票使其得分增加voidShellsort(SeqList*L)/希尔排序inti,j;

intincrement=L-len;

doincrement=increment/3+1;

/增量序列for(i=increment+1;

i+)if(L-datai.scoreL-datai-increment.score)/需将L-ri插入有序增量子表L-data0=L-datai;

/暂存在L-r0for(j=i-increment;

j0&

L-data0.scoreL-dataj.score;

j-=increment)L-dataj+increment=L-dataj;

/记录后移,查找插入位置L-dataj+increment=L-data0;

/插入while(increment1);

/*计算选手名次*/voidRank(SeqList*L)/Rank函数,用以计算选手名次inti;

L-data1.tax=1;

for(i=2;

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);

voidDisplay(SeqList*L)/定义Display函数,用以输出最终结果inti;

printf(姓名t编号t票数t名次tn);

i+)printf(%st%dt%dt%dtn,L-datai.name,L-datai.num,L-datai.score,L-datai.tax);

printf(n);

voidSave(SeqList*L)/定义Save函数,实现文件的生成FILE*fp;

/定义一个指向文件的指针变量fpinti;

charfilename20;

printf(请输入目标文件名:

scanf(%s,filename);

fp=fopen(filename,w);

/建立新文件将fopen函数的返回值赋给指针/变量fp,fp指向了名为filename的文件fprintf(fp,姓名t编号t票数t名次n);

i+)fprintf(fp,%st%dt%dt%dtn,L-datai.name,L-datai.num,L-datai.score,L-datai.tax);

fclose(fp);

printf(数据已成功保存!

voidMeun()/Meun函数,生成系统主界面printf(*电视大赛观众投票及排名系统*n);

printf(*1、输入选手信息(姓名、编号)*n);

printf(*2、开始投票*n);

printf(*3、排序*n);

printf(*4、查看结果*n);

printf(*5、保存到文件*n);

printf(*6、退出*n);

printf(*n);

voidmain()/主函数intsel;

SeqListL;

SeqListP;

while

(1)Meun();

printf(n请输入您要选择的操作序号,按回车键确认:

sel);

while(sel6)printf(输入有误,请重新输入:

switch(sel)case1:

Init(&

L);

break;

case2:

Vote(&

case3:

Shellsort(&

Rank(&

case4:

Display(&

case5:

Save(&

case6:

printf(谢谢使用,再见!

exit(0);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

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

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