投票竞选系统模拟(c语言实现)
C语言课程设计投票程序系统设计说明
中国地质大学本科生课程论文封面课程名称C语言课程设计教师邵老师本科生常堃本科生学号本科生专业应用化学所在院系材化学院类别: C.本科生日期: 2011 年7 月6 日课程设计评语注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录课程设计评语 (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请参加投票的人开始投票:abccabcaa 此票无效cbabca三位候选人得分:a:12b:13c:15祝贺c当选冠军[提示]数据结构可用结构体数组,结构体成员包括代号、得分。
或者采用二维数组,行方向对应一投票,列方向对应各候选人得分。
2.程序设计思路根据题目要求,首先要输入投票者人数,再输入投票者的选票,而选票不是都有效,若同一票上写有两个相同的代号,则此票无效,所以要将有效的选票选出来,然后对选票进行统计得分,最终来比较得分,若有得分相同,则重新来选,最后得分最多的获胜,最终成为足球先生。
但是此程序还不够完善,可以增加以下程序,增强其功能:1.记录废票数目,以便废票太多,影响选举公正。
2.若出现a,b,c以外的投票,应当将该票记为无效。
C语言课程设计-投票程序系统设计
目录课程设计评语...................................................................................................... 错误!未定义书签。
目录. (1)1.课程论文题目 (2)2.程序设计思路 (2)3.功能模块图 (3)4.数据结构设计 (3)5.算法设计 (3)6.程序代码 (7)7.程序运行结果 (11)8.编程中遇到的困难及解决方法 (12)9.总结心得及良好建议 (12)10.致谢 (12)1.课程论文题目投票程序[要求]设有代号为‘a’,‘b’,‘c’的三个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。
请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。
注意:若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三位候选人得分并输入“祝贺X当选冠军”。
例如:投票人数:5请参加投票的人开始投票:abccabcaa 此票无效cbabca三位候选人得分:a:12b:13c:15祝贺c当选冠军[提示]数据结构可用结构体数组,结构体成员包括代号、得分。
或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。
2.程序设计思路根据题目要求,首先要输入投票者人数,再输入投票者的选票,而选票不是都有效,若同一张票上写有两个相同的代号,则此票无效,所以要将有效的选票选出来,然后对选票进行统计得分,最终来比较得分,若有得分相同,则重新来选,最后得分最多的获胜,最终成为足球先生。
但是此程序还不够完善,可以增加以下程序,增强其功能:1.记录废票数目,以便废票太多,影响选举公正。
2.若出现a,b,c以外的投票,应当将该票记为无效。
3.若出现最终前两名得分相同,应该还可以运行程序,使其重新投票,重新计票,直至最后选出足球先生。
C语言课设之投票系统
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]中。
投票程序——C语言
投票程序[要求]设有代号为’a’,’b’,’c’的三个个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。
请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。
请注意;若同一张票上写有两个相同代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三个候选者得分并输出“祝贺X当选冠军!”。
例如:投票人数:5输入投票内容:a b cc b ac a a 该票无效!c b a三位候选人得分:a: 12b: 13c: 15祝贺c当选冠军!需求分析本程序中要求候选人有编号和得票数,且每张选票上要同时写上三个候选人的编号,最终输出谁是获胜者。
因此可以用结构体来存储候选人的信息。
唱票中要求相对应的编号分别记分为5、3、2,因此在记分程序中可以用一个条件表达式来进行统计得分。
统计结果中若前两名有相同的得票数则要求重新投票。
为此要求把三个后选人的总得分进行比较,则可以用一个判断语句来判断,简单明了。
数据结构可用结构体数组,结构体成员包括代号、得分。
或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。
总体设计主函数设计流程:程序如下:程序运行情况:#include<stdio.h> #include<conio.h> struct houxuanren{int id;int point;}main(){int i=0,j=0,k,temp=0;char x,y,z;struct houxuanren hxr[3];for(i=0;i<3;i++){hxr[i].id=i;hxr[i].point=0;}printf("请输入投票总人数\n"); scanf("%d",&k);printf("请输入投票内容\n"); getchar();for(i=1;i<=k;i++){scanf("%c%c%c",&x,&y,&z); getchar();if(x!=y&&x!=z&&y!=z){hxr[0].point+=(x=='a'?5:(y=='a'?3:(z=='a'?2:0)));hxr[1].point+=(x=='b'?5:(y=='b'?3:(z=='b'?2:0)));hxr[2].point+=(x=='c'?5:(y=='c'?3:(z=='c'?2:0)));printf("point: %d %d %d\n",hxr[0].point,hxr[1].point,hxr[2].point );continue;}printf("投票无效\n");}for(i=0;i<3;i++){if(temp<hxr[i].point){temp=hxr[i].point;j='a'+i;}printf(" %c point %d\n",'a'+hxr[i].id,hxr[i].point);}if(((hxr[0].point==hxr[1].point)&&hxr[0].point>hxr[2].point &&hxr[1].point>hxr[2].point)||( (hxr[0].point==hxr[2].point)&&hxr[0].point>hxr[1].point&&hxr[2].point>hxr[1].point)||((hxr[1].point==hxr[2].point)&&hxr[1].point>hxr[0].point& &hxr[2].point>hxr[0].point))printf("重新投票\n");else{printf("祝贺 %c\n当选冠军",j);}getch();}三.什么是结构化程序设计?比较其与对象化程序设计的区别。
c语言电子投票系统课程设计
c语言电子投票系统课程设计一、教学目标本课程的目标是让学生掌握C语言的基本知识,能够运用C语言设计一个简单的电子投票系统。
具体的学习目标包括:1.知识目标:理解C语言的基本语法、数据类型、运算符、控制结构等基本知识。
2.技能目标:能够使用C语言编写程序,解决实际问题。
3.情感态度价值观目标:培养学生的逻辑思维能力,提高学生解决问题的能力,使学生对编程产生兴趣。
二、教学内容教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等。
具体安排如下:1.第一章:C语言概述,介绍C语言的基本概念、特点和应用。
2.第二章:数据类型和运算符,介绍C语言的基本数据类型、运算符及其用法。
3.第三章:控制结构,介绍条件语句、循环语句等控制结构的使用。
4.第四章:函数,介绍函数的定义、声明和调用,以及函数的参数传递。
5.第五章:数组和字符串,介绍数组的基本概念、操作和字符串的使用。
6.第六章:指针,介绍指针的概念、运算和指针的应用。
7.第七章:结构体和文件,介绍结构体的定义和使用,以及文件的读写操作。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:通过讲解C语言的基本概念、语法和编程技巧,使学生掌握C语言的基本知识。
2.案例分析法:通过分析典型的C语言程序,使学生理解编程思路和方法,提高编程能力。
3.实验法:通过上机实验,让学生动手编写程序,培养学生的实际操作能力。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用《C程序设计语言》作为主要教材,介绍C语言的基本知识和编程技巧。
2.参考书:推荐《C Primer Plus》等参考书,供学生自主学习。
3.多媒体资料:制作课件、视频等多媒体资料,帮助学生更好地理解课程内容。
4.实验设备:提供计算机实验室,让学生进行上机实验,提高实际操作能力。
五、教学评估教学评估主要包括平时表现、作业和考试三个部分。
1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,占总评的20%。
C语言课程设计报告电子投票系统
五.程序设计及各模块函数功能简述
1.数据结构
链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储候选人,投票人相关信息。且对结点的定义如下:
C语言课程设计报告
电子投票系统
学院计算机学院
专业
年级
姓名
学号
教师
年月日
广东工业大学计算机学院制
一.设计题目
电子投票系统
二.课程设计目的
了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用WIN-TC实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。
case 3:search();break;
case 4:scan();break;
case 5:sort(); break;
case 0:break;
default:break;
}
}while(key!=0);
}
void addcandidate()xt";
FILE * fp=NULL;
char c;
{
printf("该用户名已存在!按任意键浏览所有用户...");
getch();
over_flag=1;
电子投票系统c语言课程设计报告
课程设计报告1.需求分析电子投票平台的需求来源于两种不同的角色:管理员,投票用户。
(1).管理员可以对候选人信息进行初始化和修改,还可浏览候选人信息介绍,可对候选人的票数进行排序以及对系统的用户进行管理,创建使用者用户名和密码等。
(2).普通投票用户该类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人介绍、投票等。
(投票是只需做到输入自己想要投票的候选人编号即可完成投票)2.软件功能模块结构如图:3.源程序代码/* Note:Your choice is C IDE */#include"stdio.h"#include"string.h"#include"stdlib.h"#define len1 sizeof(struct can)#define len2 sizeof(struct ur)int power;//记录登录方式struct can{int id;int sum;char name[20];char js[300];struct can *next;};struct ur{char name[20];char psw[20];struct ur *next;};void index();//进入界面void admin();//管理员界面void user();//用户界面void adcd();//新增候选人界面void bscd();//浏览候选人struct can *getcanlist();//从can.txt文件取出链表,返回候选人链表头指针void canlistwf(struct can *p);//把候选人链表写入文件void auser();//新增用户struct ur *geturlist();//获得用户信息链表void userlwf();//更新ur.txt用户信息char*userfpsw(char*name);//查询用户密码void main(){index();}void index(){int indexa;void login();//声明登录界面函数printf("---------欢迎使用电子投票系统---------\n");printf("管理员登陆......请按1\n");printf("投票用户登录......请按2\n");printf("请输入登录方式:");scanf("%d",&indexa);getchar();//吸收输入的回车if(indexa==1||indexa==2){power=indexa;login();}else{printf("\n输入错误,请重新输入\n");index();}}void login(){char logina[20]={'\0'},loginb[20]={'\0'};char psw[20];struct ur *pp;pp=geturlist();printf("------登录界面-------\n");printf("请输入登录帐号:");gets(logina);if(logina[0]!='\0'){printf("请输入登录密码:");}else{printf("\n输入的登录帐号不能为空\n");login();}gets(loginb);strcpy(psw,userfpsw(logina));if(!strcmp(psw,loginb))//帐号密码均正确{if(power==1&&!strcmp("admin",logina)) {admin();}else if(power==2){user();}else{printf("\n权限不正确,请重新输入\n");login();}}else{printf("\n帐号密码不正确,请重新输入\n");login();}}void admin()//管理员工作页面{int admina;while(1){printf("--------管理员工作界面--------\n");printf("新增候选人信息......请按1\n");printf("浏览候选人信息......请按2\n");printf("新增投票用户........请按3\n");printf("要进行操作请输入相应的数字:"); scanf("%d",&admina);getchar();//吸收输入多余字符if(admina==1)//根据输入跳到相应处理函数{adcd();break;}else if(admina==2){bscd();printf("操作成功,自动返回上一层\n");admin();break;}else if(admina==3){auser();break;}else//出错处理{printf("\n输入出错,请重新输入\n");}}}void adcd()//新增候选人函数{char name[20],js[300];struct can *h,cd;void admin();while(1){printf("--------新增候选人界面--------\n");printf("请输入候选人姓名:");gets(name);if(name[0]!='\0')strcpy(,name);else{printf("输入出错,请重试\n");continue;}printf("请输入候选人简介:\n");gets(js);strcpy(cd.js,js);h=getcanlist();cd.id=h->id+1;cd.next=h;canlistwf(&cd);printf("操作成功,自动返回上一层\n");admin();break;}}void bscd()//浏览候选人信息函数{struct can *p,*p1,*p2;char name[20],js[300];int a,t;printf("是否按票数降序排列?1是/2不是,请输入对应的数字\n");scanf("%d",&a);p=getcanlist();if(a==1){p1=p2=p;while(p2->next!=NULL){p2=p2->next;if(p2->next==NULL)break;if(p1->sum<p2->sum)//交换值{strcpy(name,p1->name),strcpy(p1->name,p2->name),strcpy(p2->na me,name);strcpy(js,p1->js),strcpy(p1->js,p2->js),strcpy(p2->js,js);t=p1->id,p1->id=p2->id,p2->id=t;t=p1->sum,p1->sum=p2->sum,p2->sum=t;}}}if(a==2){printf("--------候选人信息-------\n");printf("编号\t候选人姓名\t所得票数\t候选人简介\n");if(p==NULL){printf("数据为空,自动返回上一层\n");admin();}else{while(p->next!=NULL){printf("%3d\t",p->id);printf("%6s\t\t",p->name);printf("%4d\t\t",p->sum);printf("%s\t\n",p->js);p=p->next;}}}else if(a!=1){printf("输入错误,请重新输入\n");bscd();}}struct can *getcanlist()//从can文件取出链表,返回头指针{char str[300],ch,*t=str;int i=1;FILE *fp;struct can *p1=NULL,*p2=NULL,*h=NULL;if((fp=fopen("can.txt","r"))==NULL){printf("无法打开此文件");exit(0);}while(!feof(fp)){if(i++==1){p1=p2=(struct can *)malloc(len1);//开辟新单元,存一个候选人h=p2;//指定头指针}else{p1=p2;p2=(struct can *)malloc(len1);p1->next=p2;}fscanf(fp,"%s",str);//取出idch=fgetc(fp);//吸收回车p2->id=atoi(str);//设置idfscanf(fp,"%s",str);//取出sumch=fgetc(fp);//吸收回车p2->sum=atoi(str);//设置sumfscanf(fp,"%s",str);//取出namech=fgetc(fp);//吸收回车strcpy(p2->name,str);//设置namefscanf(fp,"%s",str);//取出jsch=fgetc(fp);//吸收回车strcpy(p2->js,str);//设置jsp2->next=NULL;}fclose(fp);return h;}void canlistwf(struct can *p)//更新can数据文件{FILE *fp;if((fp=fopen("can.txt","w"))==NULL){printf("无法打开此文件");exit(0);}while(p->next!=NULL)//把链表数据逐个输出到文件{fprintf(fp,"%d\n",p->id);fprintf(fp,"%d\n",p->sum);fprintf(fp,"%s\n",p->name);fprintf(fp,"%s\n",p->js);p=p->next;}fclose(fp);}void user()//用户界面{int usera;int usercd;struct can *p,*t;printf("------用户界面------\n");printf("浏览候选人信息....请按1\n"); printf("投票给候选人....请按2\n"); scanf("%d",&usera);getchar();if(usera==1)//浏览候选人信息{bscd();printf("操作成功,自动返回上一层\n");user();}else if(usera==2)//投票{printf("请输入候选人编号:");scanf("%d",&usercd);t=p=getcanlist();while(p->next!=NULL){if(p->id==usercd){(p->sum)++;break;}p=p->next;}printf("操作成功,自动返回上一层\n");canlistwf(t);user();}}void auser()//新增用户{char name[20];char psw[20];struct ur *p,ausera;printf("请输入新用户帐号:");gets(name);printf("请输入新用户密码:");gets(psw);p=geturlist();strcpy(,name);strcpy(ausera.psw,psw);ausera.next=p;userlwf(&ausera);printf("操作成功,自动返回上一层\n");admin();}struct ur *geturlist()//获得用户信息链表{char str[20],ch,*t=str;int i=1;FILE *fp;struct ur *p1=NULL,*p2=NULL,*h=NULL;if((fp=fopen("ur.txt","r"))==NULL){printf("无法打开此文件");exit(0);}while(!feof(fp)){if(i++==1){p1=p2=(struct ur *)malloc(len2);//开辟新单元,存一个候选人h=p2;//指定头指针}else{p1=p2;p2=(struct ur *)malloc(len2);p1->next=p2;}fscanf(fp,"%s",str);//取出namech=fgetc(fp);//吸收回车strcpy(p2->name,str);//设置namefscanf(fp,"%s",str);//取出pswch=fgetc(fp);//吸收回车strcpy(p2->psw,str);//设置pswp2->next=NULL;}fclose(fp);return h;}void userlwf(struct ur *p)//更新ur.txt用户信息{FILE *fp;if((fp=fopen("ur.txt","w"))==NULL){printf("无法打开此文件");exit(0);}while(p->next!=NULL)//把链表数据逐个输出到文件{fprintf(fp,"%s\n",p->name);fprintf(fp,"%s\n",p->psw);p=p->next;}fclose(fp);}char*userfpsw(char*name)//查询用户密码{struct ur *p;p=geturlist();while(p->next!=NULL){if(!strcmp(name,p->name)){return p->psw;break;}p=p->next;}return NULL;}四.测试用例和测试说明。
c语言电子投票系统课程设计
c语言电子投票系统课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针等基本概念,并能运用这些知识构建电子投票系统的数据结构。
2. 学会使用C语言进行文件读写操作,实现对投票数据的存储和读取。
3. 掌握C语言中的模块化编程,将电子投票系统的功能划分为独立模块,提高代码可读性和可维护性。
技能目标:1. 能够运用所学知识设计并实现一个简单的电子投票系统,具备投票、计票、结果显示等功能。
2. 培养学生分析问题、解决问题的能力,通过编写代码解决电子投票系统中遇到的技术难题。
3. 提高学生的团队协作能力,分组合作完成课程设计任务。
情感态度价值观目标:1. 培养学生对待编程的热情和兴趣,激发学生学习C语言的积极性。
2. 培养学生严谨、细心的编程习惯,提高代码质量。
3. 增强学生的法律意识和道德观念,认识到电子投票系统在实际应用中应遵循公平、公正、公开的原则。
课程性质:本课程设计属于实践性课程,旨在让学生将所学的C语言知识应用于实际项目中,提高编程能力和团队协作能力。
学生特点:学生已具备一定的C语言基础,具有较强的学习能力和动手能力,但对复杂系统的设计和实现尚缺乏经验。
教学要求:教师应引导学生掌握课程核心知识,注重实践操作,鼓励学生自主探究和团队协作,提高学生的编程能力和解决问题的能力。
同时,关注学生的情感态度价值观培养,使学生在课程学习中形成正确的价值观。
通过分解课程目标为具体的学习成果,为后续的教学设计和评估提供依据。
二、教学内容1. C语言基础回顾:数组、函数、指针、结构体等基本概念及其应用。
2. 文件操作:文件读写、文件存储格式,重点讲解如何将投票数据存储到文件中。
3. 模块化编程:介绍模块化编程的概念,指导学生将电子投票系统划分为用户界面、数据管理、投票处理、结果统计等模块。
4. 电子投票系统功能设计:- 投票功能:实现用户投票,包括投票选项的输入和验证。
- 计票功能:统计各选项的票数,并计算投票结果。
c语言投票管理系统课程设计
c语言投票管理系统课程设计一、教学目标本课程旨在通过学习C语言投票管理系统的设计与实现,让学生掌握C语言编程的基本技能,理解程序设计的基本流程,培养学生的实际编程能力和问题解决能力。
同时,通过课程的实践操作,使学生了解计算机在现代社会中的重要作用,增强学生对计算机科学的兴趣和热情。
1.掌握C语言的基本语法和数据结构。
2.理解程序设计的基本概念,如变量、函数、循环、条件语句等。
3.学习C语言在实际应用中的编程技巧。
4.能够使用C语言编写简单的程序。
5.能够独立设计和实现一个投票管理系统。
6.具备调试和优化程序的能力。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。
2.培养学生对编程的兴趣,激发学生进一步学习计算机科学的动力。
3.培养学生对现代科技的认识,理解计算机在现代社会中的重要作用。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、程序设计的基本概念和方法。
具体包括以下几个方面:1.C语言的基本语法:数据类型、变量、运算符、表达式等。
2.数据结构:数组、指针、结构体等。
3.程序设计的基本概念:变量、函数、循环、条件语句等。
4.投票管理系统的设计与实现:需求分析、系统设计、编码实现、测试与优化等。
教学大纲将按照以下顺序进行:1.C语言的基本语法和数据结构。
2.程序设计的基本概念和方法。
3.投票管理系统的设计与实现。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
1.讲授法:通过讲解C语言的基本语法、数据结构和程序设计的基本概念,使学生掌握理论知识。
2.案例分析法:通过分析实际案例,使学生了解C语言在实际应用中的编程技巧。
3.实验法:让学生动手编写代码,实现投票管理系统,培养学生的实际编程能力。
4.小组讨论法:分组进行讨论,培养学生的团队合作意识和沟通能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材。
单片机课程设计投票与计票系统c语言程序
void Beep();
int deal();
void read();
void main()
{
int i;
int flg_d=0;
InDX0=1;
EA=1;
EX0=1;
IT0=1;
t=deal();//初始检查清票
if(t==0)
{
tflg=1;//未清票指示全屏p
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73,0x77,0x6d,0x37};//共阴0~9,p
uchar code teble[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
}
void read()//读取票数
{
int p,i=0,j;
p=P0;
for(j=0;j<8;j++)
{
if((p|0xfe)==0xfe)//按照P0端拨码按键更改|0xfe gai &0x01
{
i++;
}
p>>=1;
}
num=i;
}
void InDX_0() interrupt 0
{
int i;
if(bflg)//检验是否打开蜂鸣器
{
for(i=0;i<num;i++)//蜂鸣器嘟赞同票数次数
{
Beep();
delayms(10);
}
bflg=0;//关闭蜂鸣器
}
}
}
void delayms(uint xms) /*延时函数*/
c语言课程设计投票系统
c语言课程设计投票系统一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:通过本课程的学习,学生将掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,了解C语言在投票系统中的应用。
2.技能目标:学生将能够运用C语言编写简单的投票系统程序,具备一定的编程能力,能够分析并解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生独立思考和合作解决问题的能力,培养学生的创新精神和团队精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础知识:数据类型、运算符、控制结构、函数等。
2.投票系统的设计与实现:了解投票系统的基本原理,学习如何使用C语言实现一个简单的投票系统。
3.编程实践:学生分组完成一个投票系统的编程项目,培养学生的实际编程能力和团队协作能力。
三、教学方法本课程将采用以下几种教学方法:1.讲授法:教师讲解C语言的基本语法和投票系统的基本原理。
2.案例分析法:分析实际投票系统的案例,让学生了解投票系统的应用。
3.实验法:学生分组进行编程实践,培养学生的实际编程能力和团队协作能力。
4.讨论法:学生在课堂上互相交流、讨论,提高学生的沟通能力和解决问题的能力。
四、教学资源本课程的教学资源包括以下几个方面:1.教材:《C语言程序设计》等。
2.参考书:《C Primer Plus》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络等。
5.在线资源:编程、论坛等,供学生自主学习和交流。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:评估学生的课堂参与度、提问回答、团队合作等,占总评的30%。
2.作业:评估学生的作业完成情况,包括编程练习和理论作业,占总评的20%。
3.考试:包括期中和期末考试,占总评的50%。
4.项目实践:评估学生分组完成的投票系统编程项目,占总评的10%。
评估方式应客观、公正,能够全面反映学生的学习成果。
电视大赛观众投票与排名系统C语言设计说明
1.课题简介 (3)2.设计方案 (4)3.具体设计 (4)3.1 程序原理 (4)3.2关键代码段源码及分析 (5)4.测试 (10)4.1测试过程中遇到的问题记录 (13)4.2测试结果 (13)5.总结 (15)设计体会 (15)参考文献 (15)1.课题简介在本例中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc函数来开辟存放选手信息的顺序表。
将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志。
投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同,在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。
现在要求编写一程序模拟实现上述系统的功能2.设计方案1.总体思路:利用学到的C语言编程知识和编程技巧,完成一个小型管理信息系统的开发,帮助学生熟悉开发一个系统的整个过程:系统分析、程序的设计、编写与调试等过程。
2.课程设计内容:.1.输入的形式和输入值的范围:由于本程序主要运用于观众投票以及选手信息的输入,所以输入的形式是数字及字符,范围不限;2.输出的形式:根据观众投票情况输出排名情况3.程序实现的功能:实现观众投票以及选手得分情况的排名4.测试数据:a.输入选手的个数以及每个选手的信息输入“4”“a s d f”b.根据菜单输入选号“2”输出“1号a得分是0,排名是0;2号s得分是0,排名是0;3号d得分是0,排名是0;4号f得分是0,排名是0;”c.给选手投票,输入“1 2 3 3 3 3 4 3 2 2 1 0”。
d. 根据菜单输入选号“4”,输出“第1名是3号选手d;第2名是2号选手s;第3名是1号选手a;第4名是4号选手f”“冠军是3号选手d;亚军是2号选手s;季军是1号选手a”3.具体设计原理:为了实现上述程序功能,需要定义顺序表的抽象数据类型如下ADT list {、数据对象:D={ai|ai∈Elem Set,i=0,1,2,…,n,n≥0}数据关系:R={<ai,ai+1>|ai,ai+1 ∈D}基本操作:Initlist_Sq (&L)操作结果:构造一个空的顺序表L.ListInsert_Sq (&L,i,e)初始条件:顺序表L已存在操作结果:将元素e插入到顺序表L的第i位ListDelete_Sq (&L,i,&e)初始条件:顺序表L已存在操作结果:将顺序表L中i位置的元素删除,元素值置入e中返回 locate_Sq (L,e)初始条件:顺序表L依存在操作结果:顺序表L中查找元素e并返回其位置2、本程序分为四个模块a、主程序模块:实现对函数的调用;b、顺序表模块:实现选手信息存储;c、投票模块实现观众对选手的投票;d、排序模块:实现对选手的成绩的排序;4.源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#define N 9 //假设选手人数不超过9 typedef struct node{int num; //编号char name[20]; //姓名int sum; //票数}info[N+1];info*p;int numbers;//总共的选手人数FILE*fp;void tianjia(){int i=1,n;char a[10],b[10];p=(info*)malloc(sizeof(info));if((fp=fopen("xuanshou.txt","r"))!=NULL){fscanf(fp,"%d%s\n",&p[i]->num,p[i]->name); i++;fclose(fp);printf("读取文件记录成功!\n");}else{printf("不存在记录文件,请输入选手的数量:\n"); scanf("%d",&n);getchar();numbers=n;printf("请输入%d名选手的编号和姓名:\n",n); while(n--){scanf("%d%s",&p[i]->num,p[i]->name);getchar();i++;}printf("输入完成!\n");}printf("选手信息如下:\n");printf("编号姓名\n");for(i=1;i<=numbers;i++)printf("%d %s\n",p[i]->num ,p[i]->name);}void toupiao(){int i,n;for(i=1;i<=numbers;i++)p[i]->sum =0;printf("投票开始啦!\n");printf("请观众通过按键进行投票,按'1'为1号选手投票");printf("按'2'为2号选手投票,以此类推,以按'0'作为投票结束标记\n");printf("投票现在正式开始:\n");while(1){scanf("%d",&n);getchar();if(n==0)break;while(n<1||n>numbers){printf("不存在此号码,请重新输入:");scanf("%d",&n);}p[n]->sum ++;}printf("投票完成!\n");printf("投票情况如下:\n");printf("编号姓名票数\n");for(i=1;i<=numbers;i++)printf("%d %s %d\n",p[i]->num ,p[i]->name ,p[i]->sum ); }//希尔排序void shellinsert(info *R,int n,int dk){int i,j;for(i=dk+1;i<=n;i++){if(R[i]->sum >R[i-dk]->sum ){ //小于时,需R[i]将插入有序表*R[0] =*R[i]; //存储待插入的记录for(j=i-dk;j>0&&R[j]->sum <R[0]->sum ;j=j-dk)*R[j+dk]=*R[j]; //记录后移*R[j+dk]=*R[0]; //插入到正确位置}}}void shellsort(info *R,int n){int i; int mm=1;int t[10]={21,19,17,13,11,7,5,3,2,1}; //步长因子中除1外没有公因子,且最后一个步长因子必须为1for(i=0;i<10;i++)shellinsert(R,n,t[i]); //调用每个步长因子printf("最终排名如下:\n");printf("名次编号姓名票数\n");for(i=1;i<=numbers;i++){if(i>=2&&p[i]->sum <p[i-1]->sum )mm++;printf("%d %d %s %d\n",mm,p[i]->num ,p[i]->name ,p[i]->sum );}}void menu(){printf(" ************************电视大赛观众投票及排名系统*************************** \n\n\n");printf(" 1添加选手信息\n 2投票\n 3排序\n 4退出\n");}void main(){char n;while(1){menu();printf("\n 请输入您要选择的操作序号,按回车键确认:");scanf("%c",&n);getchar();while(n<'1'||n>'4'){printf("输入有误,请重新输入:");scanf("%c",&n);getchar();}switch(n-48){case 1: tianjia();break;case 2: toupiao();break;case 3: shellsort(p,numbers);system("pause");break;case 4: printf("谢谢使用,再见!"); exit(0);}}}.五调试分析1、本程序在编辑过程中遇到不少麻烦例如给字符数组一个一个赋值时,要考虑输入回车的情况,在多次试验及上网查询时加了getchar()这一步骤才得以实现;2、本程序的模块划分简单而合理,在操作方面比较容易,运用顺序表来存储选手信息;3、本实验程序设计中,将程序分为四个模块,使得设计时思路清晰,实现时调试顺利,各模块具有较好的可重用性,确实得到了一次良好的程序设计训练六、测试结果点击运行,进入菜单51、输入“1”,按提示输入“4, 再输入选手信息“a,s,d,f”2、输入“2”,输出3、输入“3”输入“1 2 3 3 3 3 4 3 2 2 1 04、输入“4”,输出”。
C学生电子投票平台系统程序
#include<iostream>using namespace std;#include<string>class Houxuan{int num; 显示候选人录入信息 *"<<"\n * 2. 统计候选人三门课程总成绩 *"<<"\n * 3. 显示票数统计结果 *"<<"\n * 4. 按得票数为候选人排序 *"<<"\n * 5. 显示候选人全部信息 *"<<"\n * 6. 输入编号查询候选人全部信息 *"<<"\n * *"<<"\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *";char c1[10],c[10];int i=0,ii=0;cout<<"\n\t\t\t ***已进入系统***\n";cout<<"\n\t 是否继续?Y 是,N 否. 请输入: ";cin>>c;for(ii;;ii++)输入功能序号进行相关操作 *"<<"\n\t * 二. 输入大写字母N即可退出系统 *"<<"\n\t * 三. 输入完成后按回车键继续 *"<<"\n\t * *"<<"\n\t * 例如: *"<<"\n\t * 用户输入 2 即可实现 2 功能 *"<<"\n\t * *"<<"\n\t * * * * * * * * * * * * * * * * * * * * * * *";int n,e,m,c,j;string na;ou (n,na,e,m,c,0);um1()&&n!=a[1].num1()&&n!=a[2].num1()&&n!=a[3].num1()&&n!=a[4].num1()){ um1()==n) o (b[i]);how();}}if(x=='2')howcj();}}if(x=='3')howdp();}}if(x=='4') ov1()>max){max=a[i].pov1();i1=i;}}a[i1].showdp();ov1()>max){max=a[i].pov1();i2=i; howdp();ov1()>max){max=a[i].pov1();i3=i;}}a[i3].showdp ();ov1()>max){max=a[i].pov1();i4=i;}}a[i4].showdp ();howdp ();howqb();}}if(x=='6')um1()&&n!=a[1].num1()&&n!=a[2].num1()&&n!=a[3].num1()&&n! =a[4].num1()){ ;cout<<"\n\t\t请重新输入候选人编号: ";cin>>n;}elsebreak;}for(i=0;i<5;i++){if(n==a[i].num1())a[i].showqb();}}}。
比赛抽签系统c语言课程设计
比赛抽签系统 c语言课程设计一、课程目标知识目标:1. 理解C语言中数据类型、变量、运算符的基本概念及其在程序设计中的应用;2. 掌握C语言控制结构(如顺序结构、分支结构、循环结构)的使用,并能运用到比赛抽签系统的设计中;3. 学会使用数组和字符串处理函数,实现对比赛队伍和抽签结果的有效管理;4. 了解模块化编程思想,能够将程序划分为多个功能模块,提高代码的可读性和可维护性。
技能目标:1. 能够运用所学C语言知识,独立完成比赛抽签系统的设计与编程;2. 培养学生分析问题、解决问题的能力,通过编写程序解决实际问题;3. 学会使用调试工具和调试技巧,找出并修复程序中的错误,提高程序的稳定性和可靠性;4. 培养学生团队协作能力,能够与他人共同完成一个较大规模的程序设计项目。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养主动学习和探究的精神;2. 培养学生严谨、细致的工作态度,养成良好的编程习惯;3. 增强学生的自信心,让他们在解决实际问题的过程中体验成功的喜悦;4. 培养学生遵守程序设计规范,遵循社会主义核心价值观,为我国信息产业的发展贡献自己的力量。
二、教学内容1. C语言基础知识回顾:数据类型、变量定义、运算符、表达式;2. 控制结构:顺序结构、分支结构(if-else、switch-case)、循环结构(for、while、do-while);3. 函数:函数定义、调用、传值调用、返回值;4. 数组:一维数组、二维数组、数组操作;5. 字符串处理:字符串输入输出、字符串函数(如strlen、strcpy、strcat 等);6. 模块化编程:模块划分、函数封装、代码复用;7. 比赛抽签系统设计:需求分析、功能模块设计、数据结构设计、程序实现;8. 编程实践:学生分组进行比赛抽签系统的设计与编程,包括界面设计、功能实现、调试优化;9. 教学案例:结合教材中的相关案例,讲解程序设计方法和技巧;10. 课后作业与拓展:布置与教学内容相关的课后作业,并提供拓展学习资源,帮助学生巩固和提高所学知识。
C语言实现投票系统
C语⾔实现投票系统本⽂实例为⼤家分享了C语⾔实现投票系统的具体代码,供⼤家参考,具体内容如下问题:某个班级有3个候选⼈,有6个同学参与投票,⽽且只能投⼀个⼈,要求编写统计选票的程序。
先输⼊候选⼈名字,再输⼊同学所投的候选⼈名字,最后根据每位候选⼈的得票数排序思路:先定义⼀个学⽣结构体 stduent,结构体中包含姓名,票数。
同时声明结构数组stu[N - 1],⾥⾯存放候选⼈信息输⼊候选⼈的姓名,开始投票。
如果输⼊的字符串和候选⼈的姓名⼀样,就累加。
之后,⽤冒泡排序。
最后输出排完序票数。
个⼈感觉我做的这个,很简陋。
只是完成了基本的功能// vote.c --投票系统,⽤结构体实现#include <stdio.h>#include <string.h>#define N 3 // 候选⼈#define M 6 // 学⽣struct stduent{ // 声明学⽣结构体char name[20]; // 姓名int num; // 票数} stu[N - 1];int main(void){int i, j;char temp[10];for (i = 0; i < N; i++){printf("请输⼊第%d个候选⼈姓名:", i + 1);scanf("%s", stu[i].name);}for (i = 0; i < M; i++){printf("请第%d个学⽣输⼊投票结果:", i+1);scanf("%s", temp);for (j = 0; j < N; j++)if (strcmp(stu[j].name, temp) == 0){stu[j].num++;break;}}// 冒泡排序// 创建中间结构变量struct stduent t;for (i = 1; i < N; i++)for (j = N - 1; j >= i; j--){if (stu[j - 1].num < stu[j].num){t = stu[j - 1];stu[j - 1] = stu[j];stu[j] = t;}}printf("\n投票排名:\n");for (i = 0; i < N; i++)printf("%s的票数是%d\n", stu[i].name, stu[i].num);return 0;}附图:更多学习资料请关注专题《》。
电子投票系统C语言课程设计广东工业大学
课程设计报告一、需求分析:1、设计题目:电子投票系统2、设计内容及要求:(1)通过编程建立一个小型电子投票系统,其中包含电子投票、票数统计功能。
尽量做到提供一个简单的人机界面,系统界面友好,使用方便。
(2)软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始化和修改,还可浏览候选人信息介绍,可对候选人的票数进行排序以及对系统的用户进行管理,创建使用者用户名和密码等。
另一类为使用者—普通投票者,该类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人介绍、投票等。
(投票是只需做到输入自己想要投票的候选人编号即可完成投票)3、系统功能分析:本系统程序功能:(1)投票者功能a.浏览所有候选人资料b.查询要了解的候选人的信息c.在了解候选人之后进行投票(2)管理员功能a.创建新的候选人资料b.创建新的用户资料c.查询要了解的候选人资料d.浏览所有的候选人资料e.对候选人票数进行统计并排序二、具体设计1、功能模块(1)开始运行与结束运行界面模块开始运行显示有“电子投票系统”字样的界面,结束运行时则输出显示“感谢参与、再见”字样的界面。
(2)功能选择模块根据输入的用户名和密码,分别进入管理员界面和投票者界面(3)身份验证模块验证管理员和投票者的用户名和密码是否正确,不正确可选择重新输入用户名和密码或者退出。
(4)投票人管理模块?实现对投票人的管理功能,如创建投票人用户名和密码。
主要用结构体类型的数组和文件的读写来完成数据的管理操作。
(5)候选人管理模块同投票人管理模块类似,要实现对大量有一定结构的信息进行管理的操作,如创建候选人,查询、浏览候选人信息。
因此定义候选人信息结构体,用于存储候选人信息记录,并且将大量记录存储在硬盘文件中以便保存。
用文件的读写函数实现各项功能。
(6)投票区模块投票区模块用于完成系统的主体功能,提示投票人输入自己想要选举的候选人序号,系统立刻将该候选人对应的票数加一,并将目前的投票状况显示给投票人。
C语言课程设计报告 电子投票系统
C语言课程设计报告电子投票系统学院计算机学院专业年级姓名学号教师年月日广东工业大学计算机学院制一.设计题目电子投票系统二.课程设计目的了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用WIN-TC实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。
通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。
三.系统功能本系统程序功能:(1)投票者功能a.浏览所有候选人资料b.查询要了解的候选人的信息c.在了解候选人之后进行投票(2)管理员功能a.创建新的候选人资料b.创建新的用户资料c.查询要了解的候选人资料d.浏览所有的候选人资料e.对候选人票数进行统计并排序四.系统功能模块结构图本程序利用单链表存储结构完成对学生成绩的动态管理,其基本功能模块如下图所示:1.数据结构链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。
线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。
链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。
链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储候选人,投票人相关信息。
且对结点的定义如下:ttypedef struct candidate//候选人数据结构体{long number;//候选人编号char name[20];//候选人姓名char intro[400];//候选人简介int vote;//候选人得票数}candidate;typedef struct user//投票者数据结构体char name[20];//投票者姓名char ps[8];//对应密码int power;//权限}user;2.main()主函数主函数是程序入口,采用模块化设计。
电视大赛观众投票及排名系统C语言设计
1.课题简介 (3)2.设计方案 (4)3.具体设计 (4)3.1程序原理 (4)3.2关键代码段源码及分析 (5)4.测试 (10)4.1测试过程中遇到的问题记录 (13)4.2测试结果 (13)5.总结 (15)设计体会 (15)参考文献 (15)1.课题简介在本例中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc函数来开辟存放选手信息的顺序表。
将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志。
投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同,在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。
现在要求编写一程序模拟实现上述系统的功能2.设计方案1.总体思路:利用学到的C语言编程知识和编程技巧,完成一个小型管理信息系统的开发,帮助学生熟悉开发一个系统的整个过程:系统分析、程序的设计、编写与调试等过程。
2.课程设计内容:.1.输入的形式和输入值的范围:由于本程序主要运用于观众投票以及选手信息的输入,所以输入的形式是数字及字符,范围不限;2.输出的形式:根据观众投票情况输出排名情况3.程序实现的功能:实现观众投票以及选手得分情况的排名4.测试数据:a.输入选手的个数以及每个选手的信息输入“4”“a s d f”b.根据菜单输入选号“2”输出“1号a得分是0,排名是0;2号s得分是0,排名是0;3号d得分是0,排名是0;4号f得分是0,排名是0;”c.给选手投票,输入“123333432210”。
d.根据菜单输入选号“4”,输出“第1名是3号选手d;第2名是2号选手s;第3名是1号选手a;第4名是4号选手f”“冠军是3号选手d;亚军是2号选手s;季军是1号选手a”3.具体设计原理:为了实现上述程序功能,需要定义顺序表的抽象数据类型如下ADT list{、数据对象:D={ai|ai∈Elem Set,i=0,1,2,…,n,n≥0}数据关系:R={<ai,ai+1>|ai,ai+1∈D}基本操作:Initlist_Sq(&L)操作结果:构造一个空的顺序表L.ListInsert_Sq(&L,i,e)初始条件:顺序表L已存在操作结果:将元素e插入到顺序表L的第i位ListDelete_Sq(&L,i,&e)初始条件:顺序表L已存在操作结果:将顺序表L中i位置的元素删除,元素值置入e中返回locate_Sq(L,e)初始条件:顺序表L依存在操作结果:顺序表L中查找元素e并返回其位置2、本程序分为四个模块a、主程序模块:实现对函数的调用;b、顺序表模块:实现选手信息存储;c、投票模块实现观众对选手的投票;d、排序模块:实现对选手的成绩的排序;4.源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#define N9//假设选手人数不超过9typedef struct node{int num;//编号char name[20];//姓名int sum;//票数}info[N+1];info*p;int numbers;//总共的选手人数FILE*fp;void tianjia(){int i=1,n;char a[10],b[10];p=(info*)malloc(sizeof(info));if((fp=fopen("xuanshou.txt","r"))!=NULL){fscanf(fp,"%d%s\n",&p[i]->num,p[i]->name); i++;fclose(fp);printf("读取文件记录成功!\n");}else{printf("不存在记录文件,请输入选手的数量:\n"); scanf("%d",&n);getchar();numbers=n;printf("请输入%d名选手的编号和姓名:\n",n); while(n--){scanf("%d%s",&p[i]->num,p[i]->name); getchar();i++;}printf("输入完成!\n");}printf("选手信息如下:\n");printf("编号姓名\n");for(i=1;i<=numbers;i++)printf("%d%s\n",p[i]->num,p[i]->name);}void toupiao(){int i,n;for(i=1;i<=numbers;i++)p[i]->sum=0;printf("投票开始啦!\n");printf("请观众通过按键进行投票,按'1'为1号选手投票");printf("按'2'为2号选手投票,以此类推,以按'0'作为投票结束标记\n");printf("投票现在正式开始:\n");while(1){scanf("%d",&n);getchar();if(n==0)break;while(n<1||n>numbers){printf("不存在此号码,请重新输入:");scanf("%d",&n);}p[n]->sum++;}printf("投票完成!\n");printf("投票情况如下:\n");printf("编号姓名票数\n");for(i=1;i<=numbers;i++)printf("%d%s%d\n",p[i]->num,p[i]->name,p[i]->sum);}//希尔排序void shellinsert(info*R,int n,int dk){int i,j;for(i=dk+1;i<=n;i++){if(R[i]->sum>R[i-dk]->sum){//小于时,需R[i]将插入有序表*R[0]=*R[i];//存储待插入的记录for(j=i-dk;j>0&&R[j]->sum<R[0]->sum;j=j-dk)*R[j+dk]=*R[j];//记录后移*R[j+dk]=*R[0];//插入到正确位置}}}void shellsort(info*R,int n){int i;int mm=1;int t[10]={21,19,17,13,11,7,5,3,2,1};//步长因子中除1外没有公因子,且最后一个步长因子必须为1for(i=0;i<10;i++)shellinsert(R,n,t[i]);//调用每个步长因子printf("最终排名如下:\n");printf("名次编号姓名票数\n");for(i=1;i<=numbers;i++){if(i>=2&&p[i]->sum<p[i-1]->sum)mm++;printf("%d%d%s%d\n",mm,p[i]->num,p[i]->name,p[i]->sum);}}void menu(){printf("************************电视大赛观众投票及排名系统***************************\n\n\n");printf("1添加选手信息\n2投票\n3排序\n4退出\n");}void main(){char n;while(1){menu();printf("\n请输入您要选择的操作序号,按回车键确认:");scanf("%c",&n);getchar();while(n<'1'||n>'4'){printf("输入有误,请重新输入:");scanf("%c",&n);getchar();}switch(n-48){case1:tianjia();break;case2:toupiao();break;case3:shellsort(p,numbers);system("pause");break;case4:printf("谢谢使用,再见!");exit(0);}}}.五调试分析1、本程序在编辑过程中遇到不少麻烦例如给字符数组一个一个赋值时,要考虑输入回车的情况,在多次试验及上网查询时加了getchar()这一步骤才得以实现;2、本程序的模块划分简单而合理,在操作方面比较容易,运用顺序表来存储选手信息;3、本实验程序设计中,将程序分为四个模块,使得设计时思路清晰,实现时调试顺利,各模块具有较好的可重用性,确实得到了一次良好的程序设计训练六、测试结果点击运行,进入菜单51、输入“1”,按提示输入“4,再输入选手信息“a,s,d,f”2、输入“2”,输出3、输入“3”输入“1233334322104、输入“4”,输出”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<20;i++)
{
printf("请输入自己心仪的候选人姓名\n");
printf("当前是第%d个人投票\n",i+1);
scanf("%s",tem);
//判断可以写成函数
for(int j=0;j<4;j++)
{
if(strcmp(tem,hxr[j].xingming)==0)
printf("选票结果是%s,票数是%d",hxr[maxpiaoindex].xingming,maxpiao);
*பைடு நூலகம்
struct houxuanren tem;
tem.piaoshu=12;
strcpy(tem.xingming,"zhangqian");
struct houxuanren *phxr;
phxr=&tem;
printf("%s-----%d",phxr->xingming,phxr->piaoshu);
}
{
hxr[j].piaoshu++;
break;
}
}
if(j==4)
{
printf("你输入的候选人不存在!请重新投票\n");
i--;
}
}
printf("\n------------投票结束,信息如下---------------\n");
for(i=0;i<4;i++)
{
printf("当 第%d个候选人姓名:%s,当前票数%d \n",i+1,hxr[i].xingming,hxr[i].piaoshu);
}
printf("\n---------------------------\n");
//比较大小的问题
for(i=0;i<4;i++)
{
printf("第%d个候选人姓名:%s,当前票数%d \n",i+1,hxr[i].xingming,hxr[i].piaoshu);
}
printf("\n---------------------------\n");
char tem[20];
#include<stdio.h>
#include<string.h>
/*
四大美女,让20个人投票,选择最漂亮的是谁
*/
struct houxuanren
{
char xingming[20];
int piaoshu;
};
void main()
{
/* struct houxuanren hxr[4];
int maxpiao=0;
int maxpiaoindex=0;
for(i=0;i<4;i++)
{
if(hxr[i].piaoshu>=maxpiao)
{
maxpiaoindex=i;
maxpiao=hxr[i].piaoshu;
}
}
//
//给系统候选人命名 初始化
printf("初始化系统\n");
for(int i=0;i<4;i++)
{
printf("请输入第%d个候选人的名字\n",i+1);
scanf("%s",hxr[i].xingming);
hxr[i].piaoshu=0;
}
printf("所有选民大家好,现在候选人信息如下,:\n");