电子投票系统C语言课程设计广东工业大学Word文档下载推荐.docx
- 文档编号:17780885
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:23
- 大小:21.18KB
电子投票系统C语言课程设计广东工业大学Word文档下载推荐.docx
《电子投票系统C语言课程设计广东工业大学Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电子投票系统C语言课程设计广东工业大学Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
(5)候选人管理模块
同投票人管理模块类似,要实现对大量有一定结构的信息进行管理的操作,如创建候选人,查询、浏览候选人信息。
因此定义候选人信息结构体,用于存储候选人信息记录,并且将大量记录存储在硬盘文件中以便保存。
用文件的读写函数实现各项功能。
(6)投票区模块
投票区模块用于完成系统的主体功能,提示投票人输入自己想要选举的候选人序号,系统立刻将该候选人对应的票数加一,并将目前的投票状况显示给投票人。
因此该部分只需读取候选人信息文件,将对应的候选人票数加一后再写回文件并显示即可。
(7)票数管理模块:
该模块具有对候选人票数进行排行和浏览两大功能。
2、程序流程图
三、源程序代码
#include<
stdio.h>
string.h>
stdlib.h>
conio.h>
graphics.h>
#defineclosegrclosegraph
#defineN30
voidwelcome();
/*欢迎*/
voidthans();
/*再见*/
voidmain_a();
/*管理员主控平台*/
voidmain_v();
/*用户(投票者)主控平台*/
voidcreate();
/*创建候选人*/
voidCreatUser();
/*创建用户*/
voidsearch();
/*查询候选人信息*/
voidbrowse();
/*浏览候选人信息*/
voidvote();
/*用户投票*/
voidread_c_man();
/*读取候选人信息*/
voidc_save();
/*存储候选人信息*/
inttotal=0,c_total=0;
inti=0;
/*候选人信息数据结构
描述候选人的编号、姓名、简介和得票数量信息,作为候选人信息记录存在文件中*/
typedefstructcandidate
{
longnumber;
charname[20];
charintro[400];
intvote;
}candidate;
/*系统用户数据结构
描述系统用户编号、用户名、密码和权限信息,作为一整条记录存放在文件中*/
typedefstructuser
charps[8];
intpower;
}user;
candidatec_man[N];
usertotal_user[N];
voidread_c_man()
charDataFile[20]="
候选人.txt"
;
FILE*fp=NULL;
c_total=0;
fp=fopen(DataFile,"
rb"
);
if(fp==NULL)
{
printf("
\nOpenfile%sfail!
EndWithanykey\n"
DataFile);
perror("
Openfilefail"
getch();
exit
(1);
}
while(fread(&
c_man[c_total],sizeof(candidate),1,fp)!
=(int)NULL)
c_total++;
fclose(fp);
}
voidc_save()
FILE*fp=NULL;
/*存储投票人信息的文件名*/
wb"
for(i=0;
i<
c_total;
i++)
if(fwrite(&
c_man[i],sizeof(candidate),1,fp)!
=1)
\nwritefileisfail!
Endwithanykey\n"
writefilefail"
voidbyebye()
thans();
voidvote()
longcandidatenum;
/*定义进行操作时的临时结构体变量*/
inti,flag;
next;
/*DataFile存储候选人信息的文件名,next为是否进行下一次投标操作的选项*/
candidateTempS;
FILE*fp;
begin:
flag=0;
/*flag用来标志是否找对应编号,即投票是否成功*/
read_c_man();
请输入您要投票的候选人的号码:
"
scanf("
%ld"
&
candidatenum);
您所投票的候选人号码是:
%ld\n"
candidatenum);
if(c_man[i].number==candidatenum)
flag=1;
c_man[i].vote++;
if(flag)
投票成功\n"
/*如果当前文件不存在,提示打开文件失败*/
\nOpenfileisfail!
Endwithanykey.\n"
fwrite(&
c_man[i],sizeof(candidate),1,fp);
else
投票失败!
您要投票的号码不存在\n"
按任意键返回首页!
\n"
return;
/*显示投票后的情况*/
整理后的最新投票情况:
\n"
\n候选人号码\t候选人姓名\t票数\n"
/*将文件中的数据读入结构体数组*/
TempS,sizeof(candidate),1,fp)!
if(TempS.number!
=0)
\n%ld\t%s\t%d\n"
TempS.number,TempS.name,TempS.vote);
\n继续吗?
是(Y)/否(N):
"
fflush(stdin);
next=getchar();
putchar('
\n'
if(next=='
y'
||next=='
Y'
)gotobegin;
/*创建用户信息*/
voidCreatUser()
用户.txt"
userTempS;
intover_flag=0;
charc;
/*读入原始数据,用于检查输入是否有重复*/
total_user[total],sizeof(user),1,fp)!
total++;
ab+"
clrscr();
do
*****************创建新用户*****************"
gotoxy(23,3);
请输入:
gotoxy(30,5);
printf("
用户名:
scanf("
%s"
TempS.name);
TempS.name[19]='
\0'
/*检查输入姓名是否有重复*/
total;
if(strcmp(TempS.name,total_user[i].name)==0)
该用户名已存在!
按任意键浏览所有用户..."
over_flag=1;
break;
if(over_flag)
over_flag=0;
continue;
gotoxy(30,6);
密码:
TempS.ps);
TempS.ps[7]='
gotoxy(30,7);
权限:
%d"
TempS.power);
if(TempS.power!
TempS.power=0;
/*将数据加入原始数据,用于下一次输入比较*/
total_user[total]=TempS;
TempS,sizeof(user),1,fp)!
要继续创建新用户吗?
getchar();
c=getchar();
}while(c=='
||c=='
/*在屏幕上显示文件内容*/
用户资料数据处理完毕.\n"
所有用户具体情况如下:
************************************************************"
\n姓名\t\t密码\t\t权限\n"
\n%s\t\t%-8s\t\t%d\n"
TempS.name,TempS.ps,TempS.power);
\n按任意键返回首页!
voidcreate()
*****************创建新候选人*****************"
gotoxy(22,3);
gotoxy(29,5);
候选人号码:
TempS.number);
/*检查输入编号是否有重复*/
if(TempS.number==c_man[i].number)
该号码已存在.按任意键浏览所有候选人..."
gotoxy(27,6);
姓名:
if(strcmp(TempS.name,c_man[i].name)==0)
该姓名已存在!
请再输入一次!
按任意键继续..."
gotoxy(27,7);
简介:
gets(TempS.intro);
TempS.intro[399]='
TempS.vote=0;
c_man[c_total]=TempS;
要继续创建新的候选人吗?
候选人资料:
*****************************************************************"
\n号码:
%-15ld姓名:
%-15s简介:
TempS.number,TempS.name,TempS.intro);
\n*****************************************************************"
voidbrowse()/*浏览候选人信息*/
/*清屏*/
***************************************************************\n"
号码:
%-15ld"
c_man[i].number);
姓名:
%-19s"
c_man[i].name);
简介:
%s\n"
c_man[i].intro);
***************************************************************"
voidsearch()/*查询候选人信息*/
intflag=0;
\n\t请输入要查询的候选人号码:
number);
if(number==c_man[i].number)
\t您要查询的候选人信息如下:
\n\n"
\t号码:
%ld\n"
\t姓名:
%s\n"
\t简介:
if(flag)
\t对不起,没有您要查询的候选人\n"
\t要继续查询候选人吗?
}while((c=='
)||(c=='
));
voidsort()/*按票数从高到低列出所有数据*/
inti,k,j;
candidatec_man2[N],temp;
/*c_man[N]用于存放排序后的数据*/
c_man2[i]=c_man[i];
/*将c_man[c_total]赋值给c_man2[c_total]*/
c_total-1;
i++)/*用选择法排序*/
k=i;
for(j=i+1;
j<
j++)
if(c_man2[k].vote<
c_man2[j].vote)k=j;
if(k!
=i){
temp=c_man2[i];
c_man2[i]=c_man2[k];
c_man2[k]=temp;
}/*排序结束*/
票数从高到低排列如下:
*---------------------------------------------*\n"
*号码候选人票数*\n"
i++)/*输出排序后的结果*/
*%-13ld%-13s%-6d*\n"
c_man2[i].number,c_man2[i].name,c_man2[i].vote);
voidwelcome()
\n********************电子投票系统********************\n\n\n\n\r"
按任意键进入系统登录界面..."
\n\n\n\r********************欢迎登陆电子投票系统********************\n\n\r"
voidthans()
cprintf("
\n\n\n\n\n\n\r感谢您的参与!
\n\n\n\n\n\n\r再见!
sleep(3);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 投票 系统 语言 课程设计 广东工业大学