c程序班委投票选举系统.docx

上传人:b****5 文档编号:6850306 上传时间:2023-01-11 格式:DOCX 页数:23 大小:19.78KB
下载 相关 举报
c程序班委投票选举系统.docx_第1页
第1页 / 共23页
c程序班委投票选举系统.docx_第2页
第2页 / 共23页
c程序班委投票选举系统.docx_第3页
第3页 / 共23页
c程序班委投票选举系统.docx_第4页
第4页 / 共23页
c程序班委投票选举系统.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

c程序班委投票选举系统.docx

《c程序班委投票选举系统.docx》由会员分享,可在线阅读,更多相关《c程序班委投票选举系统.docx(23页珍藏版)》请在冰豆网上搜索。

c程序班委投票选举系统.docx

c程序班委投票选举系统

要先在文件夹中新建名字为“候选人”的文本文档且里面不要有任何内容。

此程序还是有一部分漏洞的,切勿直接使用!

/*Note:

YourchoiceisCIDE*/

#include

#include

#include

#include//通过按键盘产生的对应操作getch();

#defineclosegrclosegraph

#defineN30//最多候选人数

voidmain_a();//管理员界面

voidmain_v();//投票者者界面

voidaddcandidate();//创建候选人

voidaddUser();//创建投票者(用户)

voidsearch();//查询候选人信息

voidscan();//浏览候选人信息

voidvote();//投票者投票

voidread();//读取候选人信息

voidsave();//存储候选人信息

voidsort();//整理所有投票

voiddel();//删除候选人从文本写入数组中读取然后置为空在传回文本

voidread1();//读取用户信息

inttotal=0,c_total=0;//内存中候选人数

inti=0;

typedefstructcandidate//候选人数据结构体

{

longnumber;//候选人编号

charname[20];//候选人姓名

charintro[400];//候选人简介

intvote;//候选人得票数

}candidate;

typedefstructuser//投票者数据结构体

{

charname[20];//投票者姓名

charps[8];//对应密码

intpower;//权限

intsum;//投了几次票

}user;

candidatec_man[N];

usertotal_user[N];

voidmain_v()//投票者者界面

{

intkey;

do

{

printf("\n***************************************************************\n");

printf("********************欢迎进入班委投票界面***********************\n");

printf("***************************************************************\n");

printf("**1.浏览所有候选人2.查询候选人信息**\n");

printf("**3.投票4.退出**\n");

scanf("%d",&key);

switch(key)

{

case1:

scan();break;

case2:

search();break;

case3:

vote();break;

case4:

system("cls");break;

default:

break;

}

}while(key!

=4);

}

voidvote()//投票者投票

{

longcandidatenum;//定义进行操作时的临时结构体变量

intover_flag=0,tf=0;

inti,flag,j,k,m=0;

charDataFile[20]="候选人.txt",next;//DataFile存储候选人信息的文件名,next为是否进行下一次投标操作的选项

charDataFile1[20]="用户.txt";

userTempS1;//临时存放用户信息

userTempS2;

candidateTempS;//零时存放候选人信息

FILE*fp;//定义一个指向文件的指针变量fp

FILE*fp1;

begin:

//和后面的gotobegin对应

read();

//read1();

printf("请输入进行投票的用户账号:

\n");

scanf("%s",&TempS2.name);

printf("密码:

\n");

scanf("%s",&TempS2.ps);

fp1=fopen(DataFile1,"ab+");//读写用户信息

if(fp1==NULL)

{

printf("\n打开%S失败!

按任意键结束.Openfile%sfail!

EndWithanykey.\n",DataFile1);

perror("Openfilefail");

getch();

exit

(1);

}

while(fread(&TempS1,sizeof(user),1,fp1)!

=(int)NULL)

{

for(j=0;j

{

if(strcmp(total_user[j].name,TempS2.name)==0&&strcmp(total_user[j].ps,TempS2.ps)==0)//如果输入的名字和内存的一样

{

k=j;

over_flag=1;

break;

}

}

break;

}

if(over_flag)

{

m=0;

}

else

{

printf("此用户不存在或密码错误.按任意键返回...");

getch();

over_flag=0;

main_v();

}

if(total_user[k].sum)

{

printf("此用户已经投过票了!

");

getch();

main_v();

}

else//如果票数=0说明有这个用户只投了一次否则

{

flag=0;//flag用来标志是否找对应编号,即投票是否成功

printf("请输入您要投票的候选人的号码:

");

scanf("%ld",&candidatenum);

printf("您所投票的候选人号码是:

%ld\n",candidatenum);

for(i=0;i

{

if(c_man[i].number==candidatenum)

{

flag=1;

c_man[i].vote++;

total_user[k].sum++;

}

}

if(flag)

{

printf("投票成功\n");

total_user[k].sum++;

fwrite(&total_user[k],sizeof(user),1,fp1);

fclose(fp1);

fp=fopen(DataFile,"wb");

if(fp==NULL)//如果当前文件不存在,提示打开文件失败

{

printf("\n打开文件失败!

按任意键结束.Openfilefail!

EndWithanykey.\n",DataFile);

perror("Openfilefail");//同系统的错误一起输出

getch();//暂停,按任意键继续

exit

(1);//返回1给程序

}

for(i=0;i

{

fwrite(&c_man[i],sizeof(candidate),1,fp);//用二进制将数据输出到文件

}

fclose(fp);

}

else

{

printf("投票失败!

您要投票的号码不存在\n");

printf("按任意键返回首页!

\n");

getch();

return;

}

fp=fopen(DataFile,"rb");//显示投票后的情况

if(fp==NULL)

{

printf("\n打开%s失败!

按任意键结束.Openfile%sfail!

EndWithanykey\n",DataFile);

perror("Openfilefail");

getch();

exit

(1);

}

printf("整理后的最新投票情况:

\n");

printf("\n候选人号码\t候选人姓名\t票数\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')gotobegin;

m=0;

}

system("cls");

}

voidmain_a()//管理员界面

{

intkey;

do

{

printf("\n\n***************************************************************\n");

printf("********************欢迎进入班委投票界面***********************\n");

printf("***************************************************************\n");

printf("**1.创建新候选人2.创建新用户**\n");

printf("**3.查询候选人信息4.显示所有候选人**\n");

printf("**5.选举结果显示6.投票界面**\n");

printf("**7.删除候选人0.退出**\n");

scanf("%d",&key);

switch(key)

{

case1:

addcandidate();break;

case2:

system("cls");addUser();break;

case3:

system("cls");search();break;

case4:

system("cls");scan();break;

case5:

system("cls");sort();break;

case6:

system("cls");printf("\n\n您是投票者!

欢迎您登录系统!

正在进入投票者界面...\n");

main_v();break;

case7:

del();break;

case0:

break;

default:

break;

}

}while(key!

=0);

}

voidaddcandidate()//创建候选人

{

charDataFile[20]="候选人.txt";

FILE*fp=NULL;

charc;

intover_flag=0;

candidateTempS;

read();

fp=fopen(DataFile,"ab+");//ab+读写

do

{

printf("*****************创建新候选人*****************\n");

printf("请输入:

");

printf("候选人号码:

");

scanf("%ld",&TempS.number);

for(i=0;i

{

if(TempS.number==c_man[i].number)

{

printf("该号码已存在.");

over_flag=1;

break;

}

}

if(over_flag)

{

over_flag=0;

continue;

}

printf("姓名:

");scanf("%s",&TempS.name);

TempS.name[19]='\0';

for(i=0;i

{

if(strcmp(TempS.name,c_man[i].name)==0)

{

printf("该姓名已存在!

请再输入一次!

按任意键继续...");

getch();

over_flag=1;

break;

}

}

if(over_flag)

{

over_flag=0;

continue;

}

printf("简介:

");

fflush(stdin);//清空输入缓冲区

gets(TempS.intro);

TempS.intro[399]='\0';

TempS.vote=0;

c_man[c_total]=TempS;//将数据加入原始数据,用于下一次输入比较

c_total++;

if(fwrite(&TempS,sizeof(candidate),1,fp)!

=1)

{

printf("\n写入文件失败!

按任意键结束.writefileisfail!

Endwithanykey\n",DataFile);

perror("writefilefail");

getch();

exit

(1);

}

printf("要继续创建新的候选人吗?

是(Y)/否(N):

");

fflush(stdin);

c=getchar();

}while(c=='Y'||c=='y');

fclose(fp);

printf("\n按任意键返回首页!

");

getch();system("cls");

}

voidread()//读取候选人信息

{

charDataFile[20]="候选人.txt";

FILE*fp=NULL;

c_total=0;

fp=fopen(DataFile,"rb");//rb只读

if(fp==NULL)

{

printf("\n打开%S失败!

按任意键结束.Openfile%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);

}

voidread1()//读取用户信息

{

charDataFile[20]="用户.txt";

FILE*fp=NULL;

total=0;

fp=fopen(DataFile,"rb");//rb只读

if(fp==NULL)

{

printf("\n打开%S失败!

按任意键结束.Openfile%sfail!

EndWithanykey.\n",DataFile);

perror("Openfilefail");

getch();

exit

(1);

}

while(fread(&total_user[total],sizeof(candidate),1,fp)!

=(int)NULL)

{

total++;

}

fclose(fp);

}

voidaddUser()//创建用户

{

FILE*fp=NULL;

charDataFile[20]="用户.txt";//存储投票人信息的文件名

userTempS;

intover_flag=0;

charc;

fp=fopen(DataFile,"rb");//读入原始数据,用于检查输入是否有重复

if(fp==NULL)

{

printf("\n打开%S失败!

按任意键结束.Openfile%sfail!

EndWithanykey.\n",DataFile);

perror("Openfilefail");

getch();

exit

(1);

}

while(fread(&total_user[total],sizeof(user),1,fp)!

=(int)NULL)

{

total++;

}

fclose(fp);

fp=fopen(DataFile,"ab+");

do

{

printf("*****************创建新用户*****************");

printf("\n请输入:

");

printf("用户名:

");scanf("%s",&TempS.name);

TempS.name[19]='\0';

for(i=0;i

{

if(strcmp(TempS.name,total_user[i].name)==0)

{

printf("该用户名已存在!

\n");

over_flag=1;

break;

}

}

if(over_flag)

{

over_flag=0;

continue;

}

printf("密码:

");

scanf("%s",&TempS.ps);

TempS.ps[7]='\0';

printf("权限:

");scanf("%d",&TempS.power);

if(TempS.power!

=1)

{

TempS.power=0;

}

TempS.sum=0;

total_user[total]=TempS;//将数据加入原始数据

total++;

if(fwrite(&TempS,sizeof(user),1,fp)!

=1)

{

printf("\n写入文件失败!

按任意键结束.writefileisfail!

Endwithanykey\n",DataFile);

perror("writefilefail");

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("\n打开文件失败!

按任意键结束.Openfilefail!

EndWithanykey.\n",DataFile);

perror("Openfilefail");

getch();

exit

(1);

}

printf("\n姓名\t\t密码\t\t权限\n");

while(fread(&TempS,sizeof(user),1,fp)!

=(int)NULL)//当文件里有内容时打印

{

printf("\n%s\t\t%-8s\t\t%d\n",TempS.name,TempS.ps,TempS.power);

}

fclose(fp);

printf("************************************************************");

printf("\n按任意键返回首页!

");

getch();

system("cls");

}

voidscan()//显示候选人信息

{

read();

printf("候选人资料:

\n");

printf("***************************************************************\n");

for(i=0;i

if(c_man[i].number==0)

{

continue;

}

else

{

printf("号码:

%-15ld",c_man[i].number);

printf("姓名:

%-19s",c_man[i].name);

printf("简介:

%s\n",c_man[i].intro);

}

printf("***************************************************************");

printf("\n按任意键返回首页!

");

getch();

}

voidsearch()//查询候选人信息

{

charc;

longnumber;

intflag=0;

read();

do

{

printf("\n\t请输入要查询的候选人号码:

");

scanf("%ld",&number);

for(i=0;i

{

if(number==c_man[i].number)

{

printf("\t您要查询的候选人信息如下:

\n\n");

printf("\t号码:

%ld\n",c_man[i].number);

printf("\t姓名:

%s\n",c_man[i].name);

printf("\t简介:

%s\n",c_man[i].intro);

flag=1;

break;

}

}

if(flag)

{

flag=0;

}

else

{

printf("\t对不起,没有您要查询的候选人\n");

}

printf("\t要继续查询候选人吗?

是(Y)/否(N):

");

getchar();

c=getchar();

}while((c=='Y')||(c=='y'));

}

voidsort()//整理所有投票,选举结果显示

{

inti,k,j,t=0,flot=0;

candidatec_man2[N]/*存放排序后的数据*/,temp;

read();

for(i=0;i

{

if(c_man[i].number!

=0)

{

c_man2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

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

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