C语言课设之投票系统复习过程.docx
- 文档编号:5821854
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:17
- 大小:137.38KB
C语言课设之投票系统复习过程.docx
《C语言课设之投票系统复习过程.docx》由会员分享,可在线阅读,更多相关《C语言课设之投票系统复习过程.docx(17页珍藏版)》请在冰豆网上搜索。
C语言课设之投票系统复习过程
C语言课程设计
前言
计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。
人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习可以分为两部分:
一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在暑期最后一星期安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:
投票程序
一.题目要求:
设有代号为’a’,’b’,’c’的三个个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。
请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。
请注意;若同一张票上写有两个相同代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三个候选者得分并输出“祝贺X当选冠军!
”。
二.需求分析:
根据题目要求,选票数据以txt文件的形式存储,所以应提供文件的打开,关闭,输入,输出等操作,并对读取的文件进行调用。
三.总体设计
根据题目要求,可对程序进行如下设计:
四.详细设计:
1.主函数
本系统主要用主函数调用打开的选票数据和进入主菜单函数,通过调用主菜单函数实行主函数的功能。
程序
main()
{
voidchoose();
menu();
}
voidmenu()
{voidchoose();
intn,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();
}
elsew=0;
}while(w==1);
switch(n)
{
case1:
innum();break;
case2:
input();break;
case3:
output();break;
case4:
choose();break;
case5:
exit(0);
}
}
2.选票人数模块
选票信息保存在“voter.txt”文件中,之前已通过只读的方式从“voter.txt”文件中打开并读取出来并保存在之前建立的结构体变量vote[NUM]中。
通过调用选票信息统计选票人数,并通过选择函数菜单返回或退出。
程序
voidinnum()
{
inti=loadvote();
printf("\n选票人数:
\t%d\n\n",i);
select();
}
3.选票信息模块
读取选票信息,用for循环语句进行票数的统计并用ifelse语句进行选择,如果出现票数一样的则选票无效,通过调用累加函数将票数统计结果统计出来。
程序
voidinput()
{
inti;
intm=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].c3) printf("\t该票无效! \n"); else { add(vote[i].c1,vote[i].c2,vote[i].c3); printf("\n"); } } printf("\n\n"); select(); } 4.分数统计模块 通过三人所得票数按照计分方法将三人的得分计算出来,也要用到for循环语句和ifelse语句,并分别用将三人的得分结果输出来。 程序 voidoutput() { intn,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].c3); 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.选举结果模块 运用Ifelseif语句对前面三个候选人的得分情况进行比较分析,如果三个人的得分相同则显示重新投票并返回主函数main(),否则通过switchcase语句进行比较选出得分最高的人为冠军。 程序 voidchoose() { intc; if(number[0].num>number[1].num&&number[0].num>number[2].num) { c=1; } elseif(number[1].num>number[0].num&&number[1].num>number[2].num) { c=2; } elseif(number[2].num>number[1].num&&number[2].num>number[0].num) { c=3; } else { printf("重新选票! \n"); main(); } switch(c) { case1: printf("\n祝贺a当选冠军! \n\n\n");select(); case2: printf("\n祝贺b当选冠军! \n\n\n");select(); case3: printf("\n祝贺c当选冠军! \n\n\n");select(); } } 6.选择模块 选择函数的建立是为了每运行完一个模块之后都可以通过选择函数返回或退出。 voidselect() { intm,w; do { puts("下一个"); puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); puts("\t\t{}"); puts("\t\t{[1.返回]}"); puts("\t\t{[2.退出]}"); puts("\t\t{}"); puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("请选择你的数字(1-2): []\b\b"); scanf("%d",&m); if(m<1||m>2) { w=1; printf("错误\n"); select(); } elsew=0; switch(m) { case1: printf("\n\n");menu();break; case2: exit(0); } }while(w==1); } 五.完整编写过程如下: 完整程序 #include #include #include #defineNUM20 structFOOD { charc; intnum; }number[3]; structVOTE { charc1; charc2; charc3; }vote[NUM]; voidcount(charc,intn); voidmenu() intloadvote() { FILE*fp; inti; if((fp=fopen("voter.txt","r"))==NULL) { printf("\n不能打开此文件\n"); return0; } for(i=0;! feof(fp);i++) { fscanf(fp,"%s%s%s",&vote[i].c1,&vote[i].c2,&vote[i].c3); } fclose(fp); return(i); } voidselect() { intm,w; do { puts("下一个"); puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); puts("\t\t{}"); puts("\t\t{[1.返回]}"); puts("\t\t{[2.退出]}"); puts("\t\t{}"); puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("请选择你的数字(1-2): []\b\b"); scanf("%d",&m); if(m<1||m>2) { w=1; printf("错误\n"); select(); } elsew=0; switch(m) { case1: printf("\n\n");menu();break; case2: exit(0); } }while(w==1); } voidinnum() { inti=loadvote(); printf("\n选票人数: \t%d\n\n",i); select(); } voidadd(charc1,charc2,charc3) { inti; for(i=0;i<3;i++) { switch(i) { case0: count(c1,5);break; case1: count(c2,3);break; case2: count(c3,2); } } } voidcount(charc,intn) { switch(c) { case'a': number[0].num+=n;break; case'b': number[1].num+=n;break; case'c': number[2].num+=n; } } voidinput() { inti; intm=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].c3) printf("\t该票无效! \n"); else { add(vote[i].c1,vote[i].c2,vote[i].c3); printf("\n"); } } printf("\n\n"); select(); } voidoutput() { intn,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].c3); 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(); } main() { voidchoose(); menu(); } voidmenu() { voidchoose(); intn,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(); } elsew=0; }while(w==1); switch(n) { case1: innum();break; case2: input();break; case3: output();break; case4: choose();break; case5: exit(0); } } voidchoose() { intc; if(number[0].num>number[1].num&&number[0].num>number[2].num) { c=1; } elseif(number[1].num>number[0].num&&number[1].num>number[2].num) { c=2; } elseif(number[2].num>number[1].num&&number[2].num>number[0].num) { c=3; } else { printf("重新选票! \n"); main(); } switch(c) { case1: printf("\n祝贺a当选冠军! \n\n\n");select(); case2: printf("\n祝贺b当选冠军! \n\n\n");select(); case3: printf("\n祝贺c当选冠军! \n\n\n");select(); } } 六.上机操作 1.主菜单模块 随科技的迅速发展,人们的生活日益趋向便捷、快速,方便,对于我国传统的手工艺制作,也很少有人问津,因此,我组想借此创业机会,在校园内开个DIY创意小屋。 它包括编织、刺绣、串珠等,让我们传统的手工制作也能走进大学,丰富我们的生活。 大学生对手工艺制作兴趣的调研 1、购买“女性化” 创业首先要有“风险意识”,要能承受住风险和失败。 还要有责任感,要对公司、员工、投资者负责。 务实精神也必不可少,必须踏实做事; 2.选票人数模块 (一)创业机会分析 3.选票信息模块 (1)专业知识限制.4.分数统计模块 我们长期呆在校园里,没有工作收入一直都是靠父母生活,在资金方面会表现的比较棘手。 不过,对我们的小店来说还好,因为我们不需要太多的投资。 5.选举结果模块 创新是时下非常流行的一个词,确实创新能力是相当重要的特别是对我们这种经营时尚饰品的小店,更应该勇于创新。 在这方面我们是很欠缺的,故我们在小店经营的时候会遇到些困难,不过我们会克服困难,努力创新,把我们的小店经营好。 (一)DIY手工艺品的“多样化” (一)大学生的消费购买能力分析 6.退出模块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 投票 系统 复习 过程
![提示](https://static.bdocx.com/images/bang_tan.gif)