电子投票系统C语言课程设计广东工业大学.doc
《电子投票系统C语言课程设计广东工业大学.doc》由会员分享,可在线阅读,更多相关《电子投票系统C语言课程设计广东工业大学.doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 #include #include #include #include #define closegr closegraph #define N 30void welcome;/*欢送 */ void thans;/* 再见 */void main_a; /* 治理员主控平台 */void main_v; /* 用户投票者主控平台 */ void create; /* 创立候选人 */void CreatUser;/* 创立用户 */ void search; /* 查询候选人信息 */ void browse; /* 扫瞄候选人信息 */
5、 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;/*系统用户数据构造描述系统用户编号、用户名、密码和权限信息,作为一整条记录存放在文件中*/typedef struct
6、 userchar name20; char ps8; int power;user;candidate c_manN; user total_userN;void read_c_manchar 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 file fail“);getch;exit(1);while(fread(&c_manc_
7、total,sizeof(candidate),1,fp)!=(int)NULL)c_total+;fclose(fp);void c_saveFILE *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 any keyn“,DataFile); perror(“write file fai
8、l“);getch;exit(1);void byebyethans;void votelong candidatenum;/* 定义进展操作时的临时构造体变量 */ int i,flag;char DataFile20=“候选人.txt“,next;/* DataFile 存储候选人信息的文件名,next 为是否进展下一次投标操作的选项 */candidate TempS;FILE *fp;begin:flag=0;/*flag 用来标志是否找对应编号,即投票是否成功*/ read_c_man;printf(“请输入您要投票的候选人的号码:“); scanf(“%ld“,&candidate
9、num);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); perror(“Open file fail“);getch;exit(1);fo
10、r(i=0;ic_total;i+)fwrite(&c_mani,sizeof(candidate),1,fp);fclose(fp);elseprintf(“投票失败!您要投票的号码不存在n“); printf(“按任意键返回首页!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“);printf(“n 候选人号码t 候选人姓名t 票数n“);/*将文件中的数据读入构造体数组*/ while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL)if(TempS.number!=0)printf(“n%ldt%st%dn“,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;/*
12、创立用户信息*/ void CreatUserFILE *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,
13、sizeof(user),1,fp)!=(int)NULL)total+;fclose(fp); fp=fopen(DataFile,“ab+“); clrscr;doclrscr;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(“该用户名已存
14、在!按任意键扫瞄全部用户.“); getch;over_flag=1; 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,
15、sizeof(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“,DataFile); printf(“全部用户具体状况如下:n“); fp=fopen(DataFile,“rb“);pr
16、intf(“*“);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),1,fp)!=(int)NULL)printf(“n%stt%-8stt%dn“,TempS.name,TempS.ps,TempS.power);fclose(fp);printf(“*“);printf(“n 按任意键返回首页!“); ge
17、tch;void createchar DataFile20=“候选人.txt“; FILE * fp=NULL;char 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(Temp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 投票 系统 语言 课程设计 广东工业大学
限制150内