投票系统C语言程序,C语言课程投票程序系统.doc

这是一个C语言实现的足球先生投票程序,通过输入投票人数和选票,统计每位候选人的得分。程序检查选票有效性,记录废票,并在出现平局时提示重新投票。程序设计包括输入、统计和输出功能模块,可以处理异常投票并输出最终结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言课程投票程序系统

目 录

课程设计评语2

目 录3

1.课程论文题目4

2.程序设计思路4

3.功能模块图5

4.数据结构设计5

5.算法设计6

6.程序代码13

7.程序运行结果22

8.编程中遇到的困难及解决方法25

9.总结心得及良好建议26

10.致谢26

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.若出现最终前两名得分相同,应该还可以运行程序,使其重新投票,重新计票,直至最后选出足球先生。

输入选票信息输出结果统计选票要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。最开始定义一个全局变量m=3,来表示候选者人数。这样来控制数列数,达到控制输入的目的。每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。定义变量v记录作废票数。判断完毕后,若出现废票,就将其中的票府赋值为‘0’。

返回投票人数re,留到后续函数使用。主函数主函数只提供输入、处理和输出部分函数调用:【程序】#include

#include

int start(char p[][3]);???????????????? /****输入函数****/void count(int a,char p[][3],int pp[]);?????? /***统计函数***/int result(int a,int b,int c);??????? ????????/***输出函数***/int m;????? /*****全局变量 *****/void main()?????????????????? /*****主函数*****/{?????

?????? ? int a;

???????? m=3;?

????? int pp[3]={0,0,0};??

???? do

?????? ?{

????????????? ?char p[100][3]={{0}};

???? /******p[100][3]赋初值,清空******/????????? a=start(p);

????????? count(a,p,pp);????

????????? /******计算得分******/?????? ?}

?????????? while(result(pp[0],pp[1],pp[2]));

/*****若m=2循环,直至选出足球先生*****/}

各功能模块设计

(1)?? 输入模块

【分析】

要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。

最开始定义一个全局变量m=3,来表示候选者人数。这样来控制数列数,达到控制输入的目的。

每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。定义变量v记录作废票数。判断完毕后,若出现废票,就将其中的票府赋值为‘0’。

返回投票人数re,留到后续函数使用。?

【程序】

?????? int start(char p[][3])

? {

????????? int re,i,j,v=0;

????????? printf("请输入投票人数\n");

????????? scanf("%d",&re);

??????????

针对投票系统源代码 仅供参考 一、课程设计目的和任务 为完成对十佳运动员的选拔,故设计此程序通过众人对20位候选人的投票表决,选出其中票数最高的前十位,定为十佳运动员。这就要求本程序要能够录入20位候选人的名单,包括起编号和姓名,然后程序可以接受用户的投票,并且自动作出票数统计并输出最后的票数由高到低的排序结果。 二、分析与设计 1.程序的基本功能: (1)查看十佳运动员的候选名单。 (2) 接受用户的投票。 (3) 自动统计用户投票并输出排序结果。 (4) 添加一个管理员,可以录入候选者名单。 (5) 退出程序。 2.系统总框图: 3.定义的函数及说明: 本程序由11个函数构成 back_sel()---用来返回用户菜单 display1()------用来显示用户菜单 f_read()-------用来读出候选人名单 admirin_save()-----管理员输入数据并将数据存盘 admirin()------管理员录入数据界面 admir()——管理员界面登录 paixv()-----查看十佳候选人排名,票数由高到低 write()------调用此函数来写入票数 voting()------投票界面,进行对候选者的投票 select()-------首页界面选择 Main()---主函数。 4.算法设计: 本程序主要运用线性表的顺序存储结构,从而很容易的对数组进行操作。同时对于票数的统计排序方面采用比较经典的“冒泡法”来完成,从而优化了整个程序体,降低时间复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值