C语言课程设计投票程序系统设计.docx
- 文档编号:27900821
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:17
- 大小:47.13KB
C语言课程设计投票程序系统设计.docx
《C语言课程设计投票程序系统设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计投票程序系统设计.docx(17页珍藏版)》请在冰豆网上搜索。
C语言课程设计投票程序系统设计
1.课程论文题目
投票程序
[要求]
设有代号为‘a’,‘b’,‘c’的三个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。
请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。
注意:
若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三位候选人得分并输入“祝贺X当选冠军”。
例如:
投票人数:
5
请参加投票的人开始投票:
abc
cab
caa此票无效
cba
bca
三位候选人得分:
a:
12
b:
13
c:
15
祝贺c当选冠军
[提示]
数据结构可用结构体数组,结构体成员包括代号、得分。
或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。
2.程序设计思路
根据题目要求,首先要输入投票者人数,再输入投票者的选票,而选票不是都有效,若同一张票上写有两个相同的代号,则此票无效,所以要将有效的选票选出来,然后对选票进行统计得分,最终来比较得分,若有得分相同,则重新来选,最后得分最多的获胜,最终成为足球先生。
但是此程序还不够完善,可以增加以下程序,增强其功能:
1.记录废票数目,以便废票太多,影响选举公正。
2.若出现a,b,c以外的投票,应当将该票记为无效。
3.若出现最终前两名得分相同,应该还可以运行程序,使其重新投票,重新计票,直至最后选出足球先生。
3.功能模块图
输入选票信息:
输入对足球先生候选人的选票
输出结果:
输出最后足球先生的获得者
统计选票:
对选票进行统计
4.数据结构设计
要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。
最开始定义一个全局变量m=3,来表示候选者人数。
这样来控制数列数,达到控制输入的目的。
每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。
定义变量v记录作废票数。
判断完毕后,若出现废票,就将其中的票府赋值为‘0’。
返回投票人数re,留到后续函数使用。
5.算法设计
1、主函数:
主函数只提供输入、处理和输出部分函数调用:
【程序】
#include
#include
intstart(charp[][3]); /****输入函数****/
voidcount(inta,charp[][3],intpp[]); /***统计函数***/
intresult(inta,intb,intc); /***输出函数***/
intm; /*****全局变量*****/
voidmain() /*****主函数*****/
{
inta;
m=3;
intpp[3]={0,0,0};
do
{
charp[100][3]={{0}};
/******p[100][3]赋初值,清空******/
a=start(p);
count(a,p,pp);
/******计算得分******/
}
while(result(pp[0],pp[1],pp[2]));
/*****若m=2循环,直至选出足球先生*****/
}
2、各功能模块设计
(1) 输入模块
【分析】
要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。
最开始定义一个全局变量m=3,来表示候选者人数。
这样来控制数列数,达到控制输入的目的。
每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。
定义变量v记录作废票数。
判断完毕后,若出现废票,就将其中的票府赋值为‘0’。
返回投票人数re,留到后续函数使用。
【程序】
intstart(charp[][3])
{
intre,i,j,v=0;
printf("请输入投票人数\n");
scanf("%d",&re);
/******a为投票人数******/
printf("请参加投票的人开始投票\n");
getchar();
/******输入时以回车结束******/
for(i=0;i { intflag=0; for(j=0;j scanf("%c",&p[i][j]); getchar(); /******输入选举投票******/ if(p[i][0]==p[i][1]||p[i][1]==p[i][2]||p[i][0]==p[i][2]) flag=1; /******判断一张票上是否写有两个相同代号******/ for(j=0;j { if(p[i][j]! ='a'&&p[i][j]! ='b'&&p[i][j]! ='c') flag=1; } /******判断是否有a,b,c以外的字母******/ if(flag) { printf("此票无效\n"); v++; for(j=0;j p[i][j]=0; } /******若有以上情况,显示"此票无效",忽略此票,并记录废票数******/ } printf("作废票数是%d票\n",v); returnre; } (2) 统计模块 【分析】 功能上要求分别统计a,b,c三个人的得分,因而用x,y,z来存放,每一票中分别统计得分,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2,将如果出现废票,直接跳过不计,将最后结果分别放入x,y,z.。 引用主函数中的数组pp[3],将统计的x,y,z分别赋值到pp[0],pp[1],pp[2]中,这样就可以带回主函数中。 【程序】 voidcount(inta,charp[][3],intpp[]) { intb=a,i; intx=0,y=0,z=0; /******'a','b','c'分别代表三个候选人xyz分别是他们的得分******/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 投票 程序 系统 设计