ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:46.14KB ,
资源ID:9894991      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9894991.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子投票系统C语言课程设计广东工业大学.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子投票系统C语言课程设计广东工业大学.docx

1、电子投票系统C语言课程设计广东工业大学课程设计报告一、需求分析:1、 设计题目:电子投票系统2、设计内容及要求:(1)通过编程建立一个小型电子投票系统,其中包含电子投票、票数统计功能。尽量 做到提供一个简单的人机界面,系统界面友好,使用方便。(2)软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始化和修改, 还可浏览候选人信息介绍,可对候选人的票数进行排序以及对系统的用户进行管理,创建 使用者用户名和密码等。另一类为使用者普通投票者,该类用户需要用管理员分配的用 户名和密码正确登录系统,可以查询候选人介绍、投票等。 (投票是只需做到输入自己想要 投票的候选人编号即可完成投票)3、系统

2、功能分析:本系统程序功能:(1)投票者功能a.浏览所有候选人资料b.查询要了解的候选人的信息c.在了解候选人之后进行投票(2)管理员功能a.创建新的候选人资料b.创建新的用户资料c.查询要了解的候选人资料d.浏览所有的候选人资料e.对候选人票数进行统计并排序二、具体设计1、功能模块(1)开始运行与结束运行界面模块 开始运行显示有“电子投票系统”字样的界面,结束运行时则输出显示“感谢参与、再见”字样的界面。(2)功能选择模块 根据输入的用户名和密码,分别进入管理员界面和投票者界面(3)身份验证模块验证管理员和投票者的用户名和密码是否正确,不正确可选择重新输入用户名和密码 或者退出。(4)投票人管

3、理模块 ?实现对投票人的管理功能,如创建投票人用户名和密码。主要用结构体类型的数组和 文件的读写来完成数据的管理操作。(5)候选人管理模块同投票人管理模块类似,要实现对大量有一定结构的信息进行管理的操作,如创建候 选人,查询、浏览候选人信息。因此定义候选人信息结构体,用于存储候选人信息记录, 并且将大量记录存储在硬盘文件中以便保存。用文件的读写函数实现各项功能。(6)投票区模块投票区模块用于完成系统的主体功能,提示投票人输入自己想要选举的候选人序号, 系统立刻将该候选人对应的票数加一,并将目前的投票状况显示给投票人。因此该部分只 需读取候选人信息文件,将对应的候选人票数加一后再写回文件并显示即

4、可。(7)票数管理模块 :该模块具有对候选人票数进行排行和浏览两大功能。2、程序流程图三、源程序代码#include#include #include#include #include#define closegr closegraph#define N 30void welcome();/*欢迎 */void thans(); /* 再见 */void main_a(); /* 管理员主控平台 */void main_v(); /* 用户(投票者)主控平台 */ void create(); /* 创建候选人 */ void CreatUser();/* 创建用户 */ void searc

5、h(); /* 查询候选人信息 */ void browse(); /* 浏览候选人信息 */ void vote(); /* 用户投票 */void read_c_man();/* 读取候选人信息 */ void c_save(); /* 存储候选人信息 */int total=0,c_total=0;int i=0;/* 候选人信息数据结构描述候选人的编号、姓名、简介和得票数量信息,作为候选人信息记录存在文件中 */ typedef struct candidatelong number;char name20;char intro400;int vote;candidate;/* 系统用

6、户数据结构*/描述系统用户编号、用户名、密码和权限信息,作为一整条记录存放在文件中typedef struct userchar name20;char ps8;int power;user;candidate c_manN;user total_userN;void read_c_man()char DataFile20=候选人 .txt;FILE * fp=NULL;c_total=0;fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fail! End With any key n,DataFile); perror(Open f

7、ile fail);getch();exit(1);while(fread(&c_manc_total,sizeof(candidate),1,fp)!=(int)NULL)c_total+;fclose(fp);void c_save()FILE *fp=NULL;char DataFile20=候选人 .txt;/* 存储投票人信息的文件名 */fp=fopen(DataFile,wb);for(i=0;ic_total;i+)if(fwrite(&c_mani,sizeof(candidate),1,fp)!=1)printf(nwrite file is fail! End with

8、any keyn,DataFile);perror(write file fail);getch();exit(1);void byebye()thans();void vote()long candidatenum;/* 定义进行操作时的临时结构体变量 */int i,flag;char DataFile20=候选人 .txt,next;/* DataFile 存储候选人信息的文件名, next 为是否进行下一次投标操作的选项 */candidate TempS;FILE *fp;begin:flag=0;/*flag 用来标志是否找对应编号,即投票是否成功 */read_c_man();p

9、rintf( 请输入您要投票的候选人的号码 :);scanf(%ld,&candidatenum);printf( 您所投票的候选人号码是 :%ldn,candidatenum);for(i=0;ic_total;i+)if(c_mani.number=candidatenum)flag=1;c_mani.vote+;if(flag)printf( 投票成功 n);fp=fopen(DataFile,wb);/* 如果当前文件不存在,提示打开文件失败 */ if(fp=NULL)printf(nOpen file is fail!End with any key.n,DataFile);per

10、ror(Open file fail);getch();exit(1);for(i=0;ic_total;i+)fwrite(&c_mani,sizeof(candidate),1,fp);fclose(fp);elseprintf( 投票失败!您要投票的号码不存在 n);getch();return;/* 显示投票后的情况 */fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fail! End With any key n,DataFile);perror(Open file fail);getch();exit(1);printf

11、( 整理后的最新投票情况 :n);/* 将文件中的数据读入结构体数组 */while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL)if(TempS.number!=0)printf(n%ld t%s t%d n,TempS.number,TempS.name,TempS.vote);fclose(fp);printf(n 继续吗?是(Y)/ 否(N): );fflush(stdin);next=getchar();putchar(n);if(next=y|next=Y)goto begin;/* 创建用户信息 */ void CreatUse

12、r()FILE *fp=NULL;char DataFile20=用户 .txt;/* 存储投票人信息的文件名 */ user TempS;int over_flag=0;char c;/* 读入原始数据 ,用于检查输入是否有重复 */ fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fail! End With any key n,DataFile); perror(Open file fail);getch();exit(1);while(fread(&total_usertotal,sizeof(user),1,fp)!=(in

13、t)NULL)total+;fclose(fp);fp=fopen(DataFile,ab+);clrscr();do创建新用户clrscr();printf();gotoxy(23,3);printf( 请输入 :);gotoxy(30,5);printf(用户名 :);scanf(%s,&TempS.name);TempS.name19=0;/* 检查输入姓名是否有重复 */ for(i=0;itotal;i+)if(strcmp(TempS.name,total_useri.name)=0)printf( 该用户名已存在!按任意键浏览所有用户 .);getch();over_flag=1

14、;break;if (over_flag)over_flag=0;continue;gotoxy(30,6);printf( 密码 :);scanf(%s,&TempS.ps);TempS.ps7=0;gotoxy(30,7);printf( 权限 :);scanf(%d,&TempS.power);if(TempS.power!=1)TempS.power=0;/* 将数据加入原始数据 ,用于下一次输入比较 */total_usertotal=TempS;total+;if(fwrite(&TempS,sizeof(user),1,fp)!=1)printf(nwrite file is f

15、ail! End with any keyn,DataFile);perror(write file fail);getch();exit(1);printf(要继续创建新用户吗 ?是(Y)/ 否(N):);getchar();c=getchar();while(c=Y|c=y);fclose(fp);/* 在屏幕上显示文件内容 */printf( 用户资料数据处理完毕 .n,DataFile);printf( 所有用户具体情况如下 :n);fp=fopen(DataFile,rb);printf( *);if(fp=NULL) printf(nOpen file is fail! End W

16、ith any key n,DataFile);perror(Open file fail);getch();exit(1);printf(n 姓名 tt 密码tt 权限 n); while(fread(&TempS,sizeof(user),1,fp)!=(int)NULL)printf(n%stt%-8stt%dn,TempS.name,TempS.ps,TempS.power); fclose(fp);printf( *);printf(n 按任意键返回首页! );getch();void create()char DataFile20=候选人 .txt;FILE * fp=NULL;c

17、har c;int over_flag=0;candidate TempS;clrscr();read_c_man();fp=fopen(DataFile,ab+);doclrscr();printf(创建新候选人);gotoxy(22,3);printf( 请输入 :);gotoxy(29,5);printf(候选人号码 :);scanf(%ld,&TempS.number);/* 检查输入编号是否有重复 */for(i=0;ic_total;i+)if(TempS.number=c_mani.number)printf( 该号码已存在 .按任意键浏览所有候选人 .);getch();ove

18、r_flag=1;break;if (over_flag)over_flag=0;continue;gotoxy(27,6);printf( 姓名 :);scanf(%s,&TempS.name);TempS.name19=0;for(i=0;ic_total;i+)if(strcmp(TempS.name,c_mani.name)=0)printf( 该姓名已存在!请再输入一次!按任意键继续 .);getch();over_flag=1;break;if (over_flag)over_flag=0;continue;gotoxy(27,7);printf( 简介 :);fflush(std

19、in);gets(TempS.intro);TempS.intro399=0;TempS.vote=0;/* 将数据加入原始数据 ,用于下一次输入比较 */ c_manc_total=TempS;c_total+; if(fwrite(&TempS,sizeof(candidate),1,fp)!=1)printf(nwrite file is fail! End with any keyn,DataFile);perror(write file fail);getch();exit(1);printf(要继续创建新的候选人吗 ?是(Y)/否(N): );fflush(stdin);c=get

20、char();while(c=Y|c=y);fclose(fp);/* 在屏幕上显示文件内容 */ clrscr();printf( 候选人资料: n);printf( *);fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen file %s fail! End With any key n,DataFile);perror(Open file fail);getch();exit(1);while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL)printf(n 号码:%-15ld姓名:%-15s简介 :

21、%s,TempS.number,TempS.name,TempS.intro);fclose(fp);printf(n*);printf(n 按任意键返回首页! );getch();void browse()/* 浏览候选人信息 */read_c_man();clrscr();/* 清屏 */printf( 候选人资料: n);*n);printf(for(i=0;ic_total;i+)printf(号码 :%-15ld,c_mani.number);printf(姓名 :%-19s,c_mani.name);printf(简介 :%sn,c_mani.intro);printf( *);p

22、rintf(n 按任意键返回首页! );getch();void search()/* 查询候选人信息 */char c;long number;int flag=0;read_c_man();doclrscr();printf(nt 请输入要查询的候选人号码 :);scanf(%ld,&number);for(i=0;iejq!(O4u !ue-,11u s%:号凰 )Hud!(eu ue-,11u s%:沏 lll)uud!(jqnu ue-,11u p%: lll)uudK1.uu: WWBYWWM 11)ud!()JSJ(jqu nr!ue0=OqlU nu)elseprintf(t

23、对不起,没有您要查询的候选人 n);printf(t 要继续查询候选人吗 ?是(Y)/否(N): );getchar();c=getchar();while(c=Y)|(c=y);void sort() /* 按票数从高到低列出所有数据 */int i,k,j;candidate c_man2N,temp; /*c_manN 用于存放排序后的数据 */read_c_man();for(i=0;ic_total;i+)c_man2i=c_mani;/* 将 c_manc_total赋值给 c_man2c_total*/for(i=0;ic_total-1;i+) /* 用选择法排序 */k=i;

24、for(j=i+1;jc_total;j+)if(c_man2k.votec_man2j.vote)k=j;if(k!=i)temp=c_man2i;c_man2i=c_man2k;c_man2k=temp; /* 排序结束 */printf( 票数从高到低排列如下 :n);printf(* *n);printf(* *n);for(i=0;ic_total;i+) /* 输出排序后的结果 */printf(* %-13ld %-13s %-6d*n,c_man2i.number,c_man2i.name,c_man2i.vote);printf(* *n);printf( 按任意键返回首页!

25、 );fflush(stdin);getch();void welcome()printf(n电子投票系统nnnnr);getch();clrscr();printf(nnnr * 欢 迎 登 陆 电 子 投 票 系 统 * nnr);void thans()clrscr();cprintf(nnnnnnr 感 谢 您 的 参 与 !n);cprintf(nnnnnnr 再见 !);sleep(3);clrscr();/* 管理员主控平台 */ void main_a()int key;char menu=*nr 管理员界面 nr *nrnr 1.创建新候选人 nnr 2.创建新用户 nnr

26、3.查询候选人信息 nnr 4.浏览所有候选人 nnr 5.整理所有投票 nnr 0.退出 nnr nn *请选择 0到 5:;doclrscr();cprintf(%s,menu); /* 输出主菜单 */scanf(%d,&key);switch(key)case 1:create();break;case 2:CreatUser();break;case 3:search();break;case 4:browse();break;case 5:clrscr(); sort(); break;case 0:break;default:break;while(key!=0);byebye();void main_v()/* 用户主控平台 */int key;char menu=nrnnr nnrn*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1