C语言课设之投票系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计
前言
计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。十多年前,只有部分理工科专业开设计算机课程。今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。根据我们专业的性质和要求,则应侧重于上机操作运用。为此,学校特意在暑期最后一星期安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:
投票程序
一.题目要求:
设有代号为’a’,’b’,’c’的三个个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。请注意;若同一张票上写有两个相同代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三个候选者得分并输出“祝贺X当选冠军!”。
二.需求分析:
根据题目要求,选票数据以txt文件的形式存储,所以应提供文件的打开,关闭,输入,输出等操作,并对读取的文件进行调用。
三.总体设计
根据题目要求,可对程序进行如下设计:
四.详细设计:
1.主函数
本系统主要用主函数调用打开的选票数据和进入主菜单函数,通过调用主菜单函数实行主函数的功能。
程序
main()
{
void choose();
menu();
}
void menu()
{ void choose();
int n,w;
do
{ puts("\t\t^^^^^^^^^^^^足球先生投票程序^^^^^^^^^^^^^^^^^^");
puts("\t\t{ }");
puts("\t\t{ [1.选票人数:] }");
puts("\t\t{ [2.选票信息:] }");
puts("\t\t{ [3.分数:] }");
puts("\t\t{ [4.结果:] }");
puts("\t\t{ [5.退出] }");
puts("\t\t{ }");
puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("请选择你的数字(1-5):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>5)
{
w=1;
getchar();
}
else w=0;
}while(w==1);
switch(n)
{
case 1:innum();break;
case 2:input();break;
case 3:output();break;
case 4:choose();break;
case 5:exit(0);
}
}
2.选票人数模块
选票信息保存在“voter.txt”文件中,之前已通过只读的方式从“voter.txt”文件中打开并读取出来并保存在之前建立的结构体变量vote[NUM]中。通过调用选票信息统计选票人数,并通过选择函数菜单返回或退出。
程序
void innum()
{
int i=loadvote();
printf("\n选票人数:\t%d\n\n",i);
select();
}
3.选票信息模块
读取选票信息,用for循环语句进行票数的统计并用if else语句进行选择,如果出现票数一样的则选票无效,通过调用累加函数将票数统计结果统计出来。
程序
void input()
{
int i;
int m=loadvote();
printf("\n");
number[0].num=number[1].num=number[2].num=0;
for(i=0;i { printf("%c %c %c",vote[i].c1,vote[i].c2,vote[i].c3); if(vote[i].c1==vote[i].c2||vote[i].c1==vote[i].c3||vote[i].c2==vote[i].c 3) printf("\t该票无效!\n"); else { add(vote[i].c1,vote[i].c2,vote[i].c3); printf("\n"); } } printf("\n\n"); select(); } 4.分数统计模块 通过三人所得票数按照计分方法将三人的得分计算出来,也要用到for循环语句和if else语句,并分别用将三人的得分结果输出来。 程序 void output() { int n,i; n=loadvote(); number[0].num=number[1].num=number[2].num=0; for(i=0;i { if(vote[i].c1==vote[i].c2||vote[i].c1==vote[i].c3||vote[i].c2==vote[i].c 3); else { add(vote[i].c1,vote[i].c2,vote[i].c3); } } printf("\n候选人的得分:\t"); printf("a: %d\n",number[0].num); printf("b: %d\n",number[1].num); printf("c: %d\n\n\n",number[2].num); select(); } 5. 选举结果模块 运用If else if语句对前面三个候选人的得分情况进行比较分析,如果三个人的得分相同则显示重新投票并返回主函数main(),否则通过 switch case语句进行比较选出得分最高的人为冠军。 程序