1、C语言课设之投票系统复习过程C语言课程设计前 言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。如今,高等教育的计算机教育发展十分迅速。十多年前,只有部分理工科专业开设计算机课程。今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。计算机技术发展如此迅猛
2、,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。根据我们专业的性质和要求,则应侧重于上机操作运用。为此,学校特意在暑期最后一星期安排了32个学时的上机实习。现将一星期的实习内容及结果分析分列如下:投票程序一.题目要求:设有代号为a,b,c的三个个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。请注意;若同一张票上写有两个相同代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”
3、,否则显示三个候选者得分并输出“祝贺X当选冠军!”。二. 需求分析: 根据题目要求,选票数据以txt文件的形式存储,所以应提供文件的打开,关闭,输入,输出等操作,并对读取的文件进行调用。三总体设计根据题目要求,可对程序进行如下设计:四详细设计:1.主函数 本系统主要用主函数调用打开的选票数据和进入主菜单函数,通过调用主菜单函数实行主函数的功能。程序main() void choose(); menu(); void menu() void choose();int n,w; do puts(tt足球先生投票程序); puts(tt ); puts(tt 1.选票人数: ); puts(tt 2
4、.选票信息: ); puts(tt 3.分数: ); puts(tt 4.结果: ); puts(tt 5.退出 ); puts(tt ); puts(tt); printf(请选择你的数字(1-5): bb); scanf(%d,&n); if(n5) 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.选票人数模块 选票信息保存在“v
5、oter.txt”文件中,之前已通过只读的方式从“voter.txt”文件中打开并读取出来并保存在之前建立的结构体变量voteNUM中。通过调用选票信息统计选票人数,并通过选择函数菜单返回或退出。程序void innum() int i=loadvote(); printf(n选票人数:t%dnn,i); select();3选票信息模块 读取选票信息,用for循环语句进行票数的统计并用if else语句进行选择,如果出现票数一样的则选票无效,通过调用累加函数将票数统计结果统计出来。 程序void input() int i; int m=loadvote(); printf(n); numb
6、er0.num=number1.num=number2.num=0; for(i=0;im;i+) printf(%c %c %c,votei.c1,votei.c2,votei.c3); if(votei.c1=votei.c2|votei.c1=votei.c3|votei.c2=votei.c3) printf(t该票无效!n); else add(votei.c1,votei.c2,votei.c3); printf(n); printf(nn); select();4. 分数统计模块 通过三人所得票数按照计分方法将三人的得分计算出来,也要用到for循环语句和if else语句,并分别
7、用将三人的得分结果输出来。程序void output() int n,i; n=loadvote(); number0.num=number1.num=number2.num=0; for(i=0;inumber1.num&number0.numnumber2.num) c=1; else if(number1.numnumber0.num&number1.numnumber2.num) c=2; else if(number2.numnumber1.num&number2.numnumber0.num) c=3; else printf(重新选票!n); main(); switch(c)
8、case 1:printf(n祝贺a当选冠军!nnn);select(); case 2:printf(n祝贺b当选冠军!nnn);select(); case 3:printf(n祝贺c当选冠军!nnn);select(); 6.选择模块 选择函数的建立是为了每运行完一个模块之后都可以通过选择函数返回或退出。void select() int m,w; do puts(下一个); puts(tt); puts(tt ); puts(tt1. 返回 ); puts(tt2. 退出 ); puts(tt ); puts(ttn); printf(请选择你的数字(1-2): bb); scanf(
9、%d,&m); if(m2) w=1; printf(错误n); select(); else w=0; switch(m) case 1:printf(nn);menu();break; case 2:exit(0); while(w=1);五.完整编写过程如下:完整程序#include#include#include#define NUM 20struct FOOD char c; int num;number3;struct VOTE char c1; char c2; char c3; voteNUM;void count(char c,int n);void menu()int lo
10、advote() FILE *fp; int i; if(fp=fopen(voter.txt,r)=NULL) printf(n不能打开此文件n); return 0; for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s,&votei.c1,&votei.c2,&votei.c3); fclose(fp); return(i);void select() int m,w; do puts(下一个); puts(tt); puts(tt ); puts(tt1. 返回 ); puts(tt2. 退出 ); puts(tt ); puts(ttn); printf(请选
11、择你的数字(1-2): bb); scanf(%d,&m); if(m2) w=1; printf(错误n); select(); else w=0; switch(m) case 1:printf(nn);menu();break; case 2:exit(0); while(w=1);void innum() int i=loadvote(); printf(n选票人数:t%dnn,i); select();void add(char c1,char c2,char c3) int i; for(i=0;i3;i+) switch(i) case 0:count(c1,5);break;
12、case 1:count(c2,3);break; case 2:count(c3,2); void count(char c,int n) switch(c) case a:number0.num+=n;break; case b:number1.num+=n;break; case c:number2.num+=n; void input() int i; int m=loadvote(); printf(n); number0.num=number1.num=number2.num=0; for(i=0;im;i+) printf(%c %c %c,votei.c1,votei.c2,v
13、otei.c3); if(votei.c1=votei.c2|votei.c1=votei.c3|votei.c2=votei.c3) printf(t该票无效!n); else add(votei.c1,votei.c2,votei.c3); printf(n); printf(nn); select();void output() int n,i; n=loadvote(); number0.num=number1.num=number2.num=0; for(i=0;in;i+) if(votei.c1=votei.c2|votei.c1=votei.c3|votei.c2=votei.
14、c3); else add(votei.c1,votei.c2,votei.c3); printf(n候选人的得分:t); printf(a: %dn,number0.num); printf(b: %dn,number1.num); printf(c: %dnnn,number2.num); select(); main() void choose(); menu(); void menu() void choose(); int n,w; do 程 puts(tt足球先生投票序); puts(tt ); puts(tt 1.选票人数: ); puts(tt 2.选票信息: ); puts(
15、tt 3.分数: ); puts(tt 4.结果: ); puts(tt 5.退出 ); puts(tt ); puts(tt); printf(请选择你的数字(1-5): bb); scanf(%d,&n); if(n5) 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); void choose() int c; if(number0.n
16、umnumber1.num&number0.numnumber2.num) c=1; else if(number1.numnumber0.num&number1.numnumber2.num) c=2; else if(number2.numnumber1.num&number2.numnumber0.num) c=3; else printf(重新选票!n); main(); switch(c) case 1:printf(n祝贺a当选冠军!nnn);select(); case 2:printf(n祝贺b当选冠军!nnn);select(); case 3:printf(n祝贺c当选冠军
17、!nnn);select(); 六.上机操作1主菜单模块随科技的迅速发展,人们的生活日益趋向便捷、快速,方便,对于我国传统的手工艺制作,也很少有人问津,因此,我组想借此创业机会,在校园内开个DIY创意小屋。它包括编织、刺绣、串珠等,让我们传统的手工制作也能走进大学,丰富我们的生活。大学生对手工艺制作兴趣的调研1、购买“女性化”创业首先要有“风险意识”,要能承受住风险和失败。还要有责任感,要对公司、员工、投资者负责。务实精神也必不可少,必须踏实做事;2选票人数模块(一)创业机会分析3.选票信息模块(1) 专业知识限制.4.分数统计模块我们长期呆在校园里,没有工作收入一直都是靠父母生活,在资金方面会表现的比较棘手。不过,对我们的小店来说还好,因为我们不需要太多的投资。5.选举结果模块创新是时下非常流行的一个词,确实创新能力是相当重要的特别是对我们这种经营时尚饰品的小店,更应该勇于创新。在这方面我们是很欠缺的,故我们在小店经营的时候会遇到些困难,不过我们会克服困难,努力创新,把我们的小店经营好。(一)DIY手工艺品的“多样化”(一)大学生的消费购买能力分析6.退出模块
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1