电子投票系统C语言课程设计广东工业大学_第1页
电子投票系统C语言课程设计广东工业大学_第2页
电子投票系统C语言课程设计广东工业大学_第3页
电子投票系统C语言课程设计广东工业大学_第4页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、数进行排行和浏览两大功能。2、程序流程图三、源程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<graphics.h>#define closegr closegraph#define N 30void welcome();/*欢迎 */void thans(); /*void main_a(); /*void main_v(); /*void create(); /*void CreatUser();/*void se

5、arch(); /*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 int

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

7、en file %s fail! End With any key n",DataFile); perror("Open file 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&qu

8、ot;);for(i=0;i<c_total;i+)if(fwrite(&c_mani,sizeof(candidate),1,fp)!=1)printf("nwrite file is fail! End with any keyn",DataFile);perror("write file fail");getch();exit(1);void byebye()thans();void vote()long candidatenum;/*定义进行操作时的临时结构体变量*/int i,flag;char DataFile20="

9、候选人 .txt",next;/* DataFile 存储候选人信息的文件名, next 为是否进行下一次投标操作的选项 */ candidate TempS;FILE *fp;begin:flag=0;/*flag用来标志是否找对应编号,即投票是否成功*/read_c_man();printf("请输入您要投票的候选人的号码:");scanf("%ld",&candidatenum);printf(" 您所投票的候选人号码是 :%ldn",candidatenum); for(i=0;i<c_total;i+

10、)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); perror("Open file fail");getch();exit(1);for(i=0;i<c_total;i+)f

11、write(&c_mani,sizeof(candidate),1,fp);fclose(fp);elseprintf("printf("投票失败!您要投票的号码不存在按任意键返回首页!n");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")

12、;getch();exit(1);printf(" printf("n整理后的最新投票情况候选人号码:n"); t候选人姓名t票数 n");/* 将文件中的数据读入结构体数组 */ while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL) if(TempS.number!=0)printf("n%ldn",TempS.number,TempS.name,TempS.vote);fclose(fp);printf("n继续吗 ?是(Y)/ 否(N): ");

13、fflush(stdin);t%st%dnext=getchar();putchar('n');if(next='y'|next='Y')goto begin;/* 创建用户信息 */void CreatUser()FILE *fp=NULL;char DataFile20=" 用户 .txt"/* 存储投票人信息的文件名 */ user TempS;int over_flag=0;char c;/*读入原始数据 , 用于检查输入是否有重复*/fp=fopen(DataFile,"rb");if(fp=NU

14、LL)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)!=(int)NULL)total+;fclose(fp);fp=fopen(DataFile,"ab+");clrscr();doclrscr();printf("*创建新用户*");gotoxy(23,3);

15、printf("请输入 :");gotoxy(30,5);printf(" 用户名 :");scanf("%s",&TempS.name); TempS.name19='0'/*检查输入姓名是否有重复*/for(i=0;i<total;i+)if(strcmp(TempS.name,total_)=0)printf(" 该用户名已存在!按任意键浏览所有用户 ."); getch();over_flag=1;break;if (over_flag)over_flag=

16、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,sizeo

17、f(user),1,fp)!=1)printf("nwrite file is fail! 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",D

18、ataFile);printf("所有用户具体情况如下:n");fp=fopen(DataFile,"rb");printf("*");if(fp=NULL)printf("nOpen file is fail! End With any key n",DataFile);perror("Open file fail");getch();exit(1);printf("n姓名 tt密码 tt权限 n");while(fread(&TempS,sizeof(user),

19、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="FILE * fp=NULL;char c;int over_flag=0;candidate TempS;clrscr();候选人 .txt"read_c_man();fp=fopen(DataFile,

20、"ab+");doclrscr();printf("*创 建 新 候 选 人*");gotoxy(22,3);printf("请输入 :");gotoxy(29,5);printf("候选人号码 :");scanf("%ld",&TempS.number);/*检查输入编号是否有重复*/for(i=0;i<c_total;i+)if(TempS.number=c_mani.number)printf("该号码已存在 . 按任意键浏览所有候选人.");getch(

21、);over_flag=1;break;if (over_flag)over_flag=0;continue;gotoxy(27,6);printf(" 姓名 :");scanf("%s",&TempS.name); TempS.name19='0'for(i=0;i<c_total;i+)if(strcmp(TempS.name,c_)=0)printf("该姓名已存在!请再输入一次!按任意键继续.");getch();over_flag=1;break;if (over_flag)o

22、ver_flag=0;continue;gotoxy(27,7);printf("简介 :");fflush(stdin);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)

23、; perror("write file fail");getch();exit(1);printf(" 要继续创建新的候选人吗 ?是(Y)/ 否(N): "); fflush(stdin);c=getchar();while(c='Y'|c='y');fclose(fp);/*在屏幕上显示文件内容*/clrscr();printf("候选人资料: n");printf("*");fp=fopen(DataFile,"rb");if(fp=NULL)printf(

24、"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简介:%s",TempS.number,TempS.name,TempS.intro);fclose(fp);printf("n*");printf("n按

25、任意键返回首页! ");getch();void browse()/*浏览候选人信息*/read_c_man();clrscr();/*清屏 */printf("候选人资料: n");printf("*n"); for(i=0;i<c_total;i+)printf("号码 :%-15ld",c_mani.number);printf("姓名 :%-19s",c_);printf("简介 :%sn",c_ro);printf("*&qu

26、ot;);printf("n按任意键返回首页! ");getch();void search()/*查询候选人信息*/char c;long number;int flag=0;read_c_man();doclrscr();printf("nt 请输入要查询的候选人号码 :"); scanf("%ld",&number);for(i=0;i<c_total;i+)if(number=c_mani.number)clrscr();printf("tprintf("tprintf("tprin

27、tf("t您要查询的候选人信息如下:nn");号码 :%ld n",c_mani.number);姓名 :%s n",c_);简介 :%s n",c_ro);flag=1;break;if (flag)flag=0;elseprintf("t对不起,没有您要查询的候选人n");printf("t 要继续查询候选人吗 ?是(Y)/ 否(N): "); getchar();c=getchar();while(c='Y')|(c='y');voi

28、d sort() /*按票数从高到低列出所有数据*/int i,k,j;candidate c_man2N,temp;read_c_man();for(i=0;i<c_total;i+)c_man2i=c_mani;/*/*c_manN 将用于存放排序后的数据 */c_manc_total赋值给 c_man2c_total*/for(i=0;i<c_total-1;i+)/*用选择法排序*/k=i;for(j=i+1;j<c_total;j+)if(c_man2k.vote<c_man2j.vote)k=j;if(k!=i)temp=c_man2i;c_man2i=c_

29、man2k;c_man2k=temp;/*排序结束 */printf("票数从高到低排列如下:n");printf("*-*n");printf("*号码候选人票数printf("*-*n");for(i=0;i<c_total;i+)/*输出排序后的结果*/*n");printf("*%-13ld%-13s*n",c_man2i.number,c_,c_man2i.vote);printf("*-*n");printf("按任意键返回首页

30、! ");fflush(stdin);getch();%-6dvoid welcome()printf("n*nnnnr");printf("getch();clrscr();printf("nnnr* nnr");void thans()*电子投票系统按任意键进入系统登录界面.");*欢迎登陆电子投票系统clrscr();cprintf("nnnnnnr感谢您的参与!n");cprintf("nnnnnnr再见 !");sleep(3);clrscr();/* 管理员主控平台 */v

31、oid main_a()int key;char*nr""管理员界面 nr"menu=""*nr""nr""1.创建新候选人 nnr""2.创建新用户 nnr""3.查询候选人信息 nnr""4.浏览所有候选人 nnr""5.整理所有投票 nnr""0.退出 nnr""nn*请选择 0 到 5:"doclrscr();cprintf("%s",menu);/

32、*输出主菜单 */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;charmenu="*nr""投票者界面nr"&q

33、uot;*nr""nnr ""1.浏览所有候选人nnr""2. 查询候选人信息nnr""""n*3.0.请选择投票退出 0 到 3:"nnr"nnr"doclrscr();cprintf("%s",menu);/*输出主菜单*/scanf("%d",&key);switch(key)case 1:browse();break;case 2:search();break;case 3:clrscr(); vote();b

34、reak;case 0:break;default:break;while(key!=0);byebye();void main()FILE * fp=NULL;char DataFile20="用户 .txt"char relogin;/*是否重新登录的标志int success=0;user input_user,temp_user;system( "graftabl 936 ");welcome();again:/*输入用户名 */printf("nn*/请输入用户名:");scanf("%s",input_

35、);printf("nr 请输入密码 :"); scanf("%s",input_user.ps);fflush(stdin);fp=fopen(DataFile,"rb");if(fp=NULL)printf("nOpen file %s fail! End With any keyn",DataFile); perror("Open file fail");getch();exit(1);/*校验用户名和密码 */while(fread(&temp_user,siz

36、eof(user),1,fp)!=NULL)if(strcmp(input_,temp_)=0&&(strcmp(input_user.ps,temp_user.ps)=0)printf("nlogin successful!");success=1;/*判断权限,如 power 的值为 1,则是管理员 , 并调用管理员界面 */if(temp_user.power=1)clrscr();printf("nnnnnnn您是管理员 ! 欢迎您登录系统 ! 正在进入管理员界面 .");sleep(2);main_a();break;/*如 power 的值为 0, 则是投票者,并调用投票者界面 */if(temp_user.power=0)clrscr();printf("nnnnnnn您是投票者 ! 欢迎您登录系统 ! 正在进入投票者界面 .");sleep(2);main_v();break;fclose(fp);if(success=0)fflush(std

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论