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

上传人:人*** 文档编号:561471156 上传时间:2022-12-17 格式:DOC 页数:29 大小:867.50KB
返回 下载 相关 举报
电子投票系统C语言课程设计-广东工业大学_第1页
第1页 / 共29页
电子投票系统C语言课程设计-广东工业大学_第2页
第2页 / 共29页
电子投票系统C语言课程设计-广东工业大学_第3页
第3页 / 共29页
电子投票系统C语言课程设计-广东工业大学_第4页
第4页 / 共29页
电子投票系统C语言课程设计-广东工业大学_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《电子投票系统C语言课程设计-广东工业大学》由会员分享,可在线阅读,更多相关《电子投票系统C语言课程设计-广东工业大学(29页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、即可。(7)票数管理模块: 该模块具有对候选人票数进行排行和浏览两大功能。2、程序流程图三、源程序代码#i nclude#i nclude#i nclude#in clude#in clude#defi ne closegr closegraph#defi ne N 30void welcome();/* void thans(); /* void main_a(); /* void main_v(); /* void create(); /* void CreatUser();/* void search(); /* void browse(); /* void vote(); /*欢迎 *

5、/*/再见 */ 管理员主控平台 */ 用户(投票者)主控平台 创建候选人 */ 创建用户 */ 查询候选人信息 */ 浏览候选人信息 */ 用户投票 */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;candida

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

7、 );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 Data= 候选人 .txt;/* 存储投票人信息的文件名 */ fp=fopen(DataFile,wb);for(i=0;ic_total;i+) if(fwrite(&c_mani,sizeof(candidate),1,fp)!=1)printf(nwrite fail! End with any keyn,DataF

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

9、:); 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 fail!End with any key.n,DataFile); perror(Open );getch(); exit

10、(1); for(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 fail! End With any key n,DataFile); perror(Open );getch(); exit(1);printf( 整理后的最新投票情况 :n); p

11、rintf(n 候选人号码 t 候选人姓名 t 票数 n);/* 将文件中的数据读入结构体数组 */ while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL)t%d if(TempS.number!=0) printf(n%ld t%sn,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 CreatUser()FILE *fp=NULL;char Data= 用户.txt;/*存储投票人信息的文件名 */user TempS;int over_flag=0;char c;/* 读入原始数据 , 用于检查输入是否有重复 */ fp=fopen(DataFile,rb);if(fp=NULL)printf(nOpen fail! End With any key n,DataFile); perror(Open );getch();exit(1);while(fread(&total_usertotal,sizeof(user),1,fp)!=(int)NULL)to

13、tal+;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( 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( if(TempS.power!=1) TempS.power=0;权限:);sca nf(%d, &TempS.power);/* 将数据加入原始数据 , 用于下一次输入比较 */total_usertotal=TempS;total+; if(fwrite(&TempS,sizeof(user),1,fp)!=1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号