c程序班委投票选举系统
要先在文件夹中新建名字为“候选人”的文本文档且里面不要有任何内容。此程序还是有一部分漏洞的,切勿直接使用!
/* Note:Your choice is C IDE */
#include
#include
#include
#include //通过按键盘产生的对应操作getch();
#define closegrclosegraph
#define N 30//最多候选人数
void main_a(); //管理员界面
void main_v(); //投票者者界面
void addcandidate(); // 创建候选人
void addUser();//创建投票者(用户)
void search(); //查询候选人信息
void scan();//浏览候选人信息
void vote(); //投票者投票
void read();//读取候选人信息
void save();//存储候选人信息
void sort();//整理所有投票
void del();//删除候选人 从文本写入数组中读取然后置为空在传回文本
void read1();//读取用户信息
int total=0,c_total=0;//内存中候选人数
inti=0;
typedef struct candidate//候选人数据结构体
{
long number;//候选人编号
char name[20];//候选人姓名
char intro[400];//候选人简介
int vote;//候选人得票数
}candidate;
typedef struct user//投票者数据结构体
{
char name[20];//投票者姓名
char ps[8];//对应密码
int power;//权限
int sum;//投了几次票
}user;
candidate c_man[N];
user total_user[N];
void main_v()//投票者者界面
{
int key;
do
{
printf("\n***************************************************************\n");
printf("********************欢迎进入班委投票界面***********************\n"); printf("***************************************************************\n");
printf("** 1. 浏览所有候选人 2. 查询候选人信息 printf("** 3. 投票 4. 退出 scanf("%d",&key);
switch(key)
{
case 1:scan();break;
case 2:search();break;
case 3:vote();break;
case 4:system("cls");break;
default:break; **\n"); **\n");
}
}while(key!=4);
}
void vote() //投票者投票
{
long candidatenum;//定义进行操作时的临时结构体变量
intover_flag=0,tf=0;
inti,flag,j,k,m=0;
char DataFile[20]="候选人.txt",next;// DataFile存储候选人信息的文件名,next 为是否进行下一次投标操作的选项
char DataFile1[20]="用户.txt";
user TempS1; //临时存放用户信息
user TempS2;
candidate TempS; //零时存放候选人信息
FILE *fp;//定义一个指向文件的指针变量fp
FILE *fp1;
begin: //和后面的goto begin对应
read();
// read1();
printf("请输入进行投票的用户账号:\n");
scanf("%s",&TempS2.name);
printf("密码:\n");
scanf("%s",&TempS2.ps);
fp1=fopen(DataFile1,"ab+"); //读写用户信息
if(fp1==NULL)
{
printf("\n打开%S失败! 按任意键结束.Open file %s fail!End With any key.\n",DataFile1); perror("Open file fail");
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打开文件失败! 按任意键结束.Open file fail! End With any key.\n",DataFile); perror("Open file fail"); //同系统的错误一起输出
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失败! 按任意键结束.Open file %s fail! End With any key \n",DataFile); perror("Open file fail");
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
\n",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;
m=0;
}
system("cls"); \t%d
}
void main_a()//管理员界面
{
int key;
do
{
printf("\n\n***************************************************************\n"); printf("********************欢迎进入班委投票界面***********************\n"); printf("***************************************************************\n"); printf("** 1. 创建新候选人 2. 创建新用户 printf("** 3. 查询候选人信息 4. 显示所有候选人 printf("** 5. 选举结果显示 6. 投票界面 printf("** 7. 删除候选人 0. 退出 scanf("%d",&key);
switch(key)
{
case 1:addcandidate();break;
case 2:system("cls");addUser();break;
case 3:system("cls");search();break;
case 4:system("cls");scan();break;
case 5:system("cls");sort(); break; **\n"); **\n"); **\n"); **\n");
case 6:system("cls");printf("\n\n 您是投票者! 欢迎您登录系统! 正在进入投票者界面...\n");
main_v(); break; case 7:del();break;
case 0:break;
default:break;
}
}while(key!=0);
}
void addcandidate()//创建候选人
{
char DataFile[20]="候选人.txt";
FILE * fp=NULL;
char c;
intover_flag=0;
candidate TempS;
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写入文件失败! 按任意键结束.write file is fail! End with any key\n",DataFile);
getch();
exit(1);
}
printf("要继续创建新的候选人吗? 是(Y)/否(N): ");
fflush(stdin);
c=getchar();
}while(c=='Y'||c=='y');
fclose(fp);
printf("\n按任意键返回首页!");
getch();system("cls");
}
void read()//读取候选人信息
{
char DataFile[20]="候选人.txt";
FILE * fp=NULL;
c_total=0;
fp=fopen(DataFile,"rb");//rb只读
if(fp==NULL)
{
printf("\n打开%S失败! 按任意键结束.Open file %s fail!End With any key.\n",DataFile);
getch();
exit(1);
}
while(fread(&c_man[c_total],sizeof(candidate),1,fp)!=(int)NULL)
{
c_total++;
}
fclose(fp);
}
void read1()//读取用户信息
{
char DataFile[20]="用户.txt";
FILE * fp=NULL;
total=0;
fp=fopen(DataFile,"rb");//rb只读
if(fp==NULL)
{
printf("\n打开%S失败! 按任意键结束.Open file %s fail!End With any key.\n",DataFile); perror("Open file fail");
getch();
}
while(fread(&total_user[total],sizeof(candidate),1,fp)!=(int)NULL)
{
total++;
}
fclose(fp);
}
void addUser()//创建用户
{
FILE *fp=NULL;
char DataFile[20]="用户.txt";//存储投票人信息的文件名
user TempS;
intover_flag=0;
char c;
fp=fopen(DataFile,"rb");//读入原始数据, 用于检查输入是否有重复
if(fp==NULL)
{
printf("\n打开%S失败! 按任意键结束.Open file %s fail!End With any key.\n",DataFile); perror("Open file fail");
getch();
}
while(fread(&total_user[total],sizeof(user),1,fp)!=(int)NULL)
{
total++;
}
fclose(fp);
fp=fopen(DataFile,"ab+");
do
{
");
printf("\n请输入:"); printf(" *****************创建新用户*****************
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写入文件失败! 按任意键结束.write file is fail! End with any key\n",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");
printf("************************************************************");
if(fp==NULL)
{
printf("\n打开文件失败! 按任意键结束.Open file fail! End With any key.\n",DataFile); perror("Open file fail");
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");
}
void scan()//显示候选人信息
{
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();
}
void search() //查询候选人信息
{
char c;
long number;
int flag=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'));
}
void sort()//整理所有投票, 选举结果显示
{
inti,k,j,t=0,flot=0;
candidate c_man2[N]/*存放排序后的数据 */, temp;
read();
for(i=0;i
{
if(c_man[i].number!=0)
{
c_man2[t]=c_man[i];
t++;
}
else
{
flot=1;
}
continue;
}
for(i=0;i
k=i;
for(j=i+1;j
{
if(c_man2[k].vote
}
if(k!=i){
temp=c_man2[i];c_man2[i]=c_man2[k];c_man2[k]=temp;
}
} //排序结束
printf("票数从高到低排列如下:\n");
printf("***********************************************\n");
printf("*号码 候选人 票数 *\n");
printf("***********************************************\n");
for(i=0;i
{
printf("* %-13ld %-13s
*\n",c_man2[i].number,c_man2[i].name,c_man2[i].vote);
}
printf("***********************************************\n");
printf("按任意键返回首页!");
fflush(stdin); %-6d
}
void del()//删除候选人
{
long candidatenum;//定义进行操作时的临时结构体变量
inti,flag,j=0;
char DataFile[20]="候选人.txt",next;// DataFile存储候选人信息的文件名,next 为是否进行下一次投标操作的选项
candidate TempS; //零时存放候选人信息
FILE *fp;//定义一个指向文件的指针变量fp
begin: //和后面的goto begin对应
flag=0;//flag用来标志是否找对应编号,即删除是否成功
read();
printf("请输入您要删除的候选人的号码:");
scanf("%ld",&candidatenum);
for(i=0;i
{
if(c_man[i].number==candidatenum)
{
printf("您所删除的候选人信息:\n号码:%ld 姓名:%s 简介:%s 票数:%s\n",c_man[i].number,c_man[i].name,c_man[i].intro,c_man[i].vote);
flag=1;
c_man[i].vote=0;
c_man[i].number=0;
strcpy(c_man[i].intro,"无");
strcpy(c_man[i].name,"无");
}
}
if(flag)
{
printf("删除成功\n");
fp=fopen(DataFile,"wb");
if(fp==NULL)//如果当前文件不存在,提示打开文件失败
{
printf("\n打开文件失败! 按任意键结束.Open file fail! End With any key.\n",DataFile); perror("Open file fail"); //同系统的错误一起输出
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");// 显示删除后的情况
c_total--;
printf("候选人资料:\n"); // 在屏幕上显示文件内容
printf("*****************************************************************\n");
printf(" 号码 候选人 票数
while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL)
{
if(TempS.number!=0)
printf("%5ld \t%4s
\n",TempS.number,TempS.name,TempS.vote);
else if(TempS.number==0)
j=1; \n"); \t%4d
continue;
}
printf("*****************************************************************");
fclose(fp);
printf("\n继续吗? 是(Y)/否(N): ");
fflush(stdin);//清空输入缓冲区
next=getchar();
putchar('\n');
if(next=='y'||next=='Y')goto begin;
}
void main()
{
FILE * fp=NULL;
char DataFile[20]="用户.txt";
char relogin;//是否重新登录的标志
int success=0,i;
user input_user,temp_user;
printf("班委投票系统 制作者:思 奥 \n");
printf("管理员账号:admin 密码:123\n"); printf("\n"); printf("*************************************************************\n");
printf("********************欢迎登录班委投票系统*********************\n");
printf("*************************************************************\n"); printf("* *\n"); again:
printf("* 请输入用户名: *");
scanf("%s",input_user.name);
printf("* 请输入密码: *");
scanf("%s",input_user.ps);
printf("*************************************************************\n");
fflush(stdin);
fp=fopen(DataFile,"ab+");
while(fread(&total_user[total],sizeof(user),1,fp)!=(int)NULL)
{
total++;
}
if(fp==NULL)
{
printf("\n打开文件失败! 按任意键结束.Open file fail! End With any key.\n",DataFile); perror("Open file fail");
getch();
exit(1);
}
system("cls");
if(strcmp(input_user.name,"admin")==0 && (strcmp(input_user.ps,"123")==0))//校验用户名和密码, 若用户名和密码分别为1, 是管理员, 并调用管理员界面
{ printf("%d",total);
printf("\nlogin successful!");
success=1;
printf("\n\n 您是管理员! 欢迎您登录系统! 正在进入管理员界面...\n");
main_a();
} else
{
for(i=0;i
if(strcmp(input_user.name,total_user[i].name)==0&&(strcmp(input_user.ps,total_user[i].ps)==0))
{
printf("\nlogin successful!");
success=1;
printf("\n\n 您是投票者! 欢迎您登录系统! 正在进入投票者
界面...\n");
main_v();
}
} } fclose(fp);
if(success==0)
{
fflush(stdin);
printf("\n用户名或密码错误!继续输入吗?是(Y)/否(N): "); fflush(stdin);
relogin=getchar();
if((relogin=='Y')||(relogin=='y'))
{
goto again;
}
else
{
printf("结束\n");
exit(0);
}
}
}
相关文章
- 大学班级规章制度(共7篇)
- 第二单元_我们都有发言权_教案
- 班委竞选策划书
- 团总支学生会改选方案
- 班干部聘选方案
- 高校班委选举办法
- 浅谈班主任对九零后大一新生的管理
- 600031三一重工关于召开20**年度股东大会的通知
- 优良学风班申请论文
篇一:大学班级管理制度 大学班级日常管理制度 2.1宿舍内部要制定相应的卫生制度, 实行责任到人制,宿舍长及班干部负责一. 班级日常治理制度 监督,由生活委定期检查. 1.学习: 2.2宿舍卫生每日打扫,值日生要尽职大学生的主要任务是学习, ...
第二单元:我们都有发言权 第 一 课:谁说了算 主 题:谁说了算 活动目标: 1.分析家庭.学校生活等民主现状,明白集体的事要大家商量说了算. 2.学会运用大家商量.投票表决等公平.民主的方式解决集体生活中的一些实际问题. 活动准备:若干调 ...
广东外语艺术职业学院 外语系英教13级班干竞选 策 划 书 前 言 为了给同学们创造一个愉快的学习和生活环境,使班级工作能够正常有序的进行,使英语教育2013级各班成为一个团结优秀的集体,特建立此班委管理制度,今天我们在此竞选包括班长.团支 ...
国交学院第八届团总支学生会改选方案 一. 指导思想: 为了更好地发挥我院团总支学生会在学生"自我教育.自我管理. 自我服务"中的作用,充分发扬民主和服务精神,依据学生会工作需要,按照学生会章程规定的要求,现对第八届团总支 ...
班干部聘选方案.txt 班干部选聘方案 班干部选聘方案 现代教育理论告诉我们,要组织一个成功的班级,班主任首先要选择一些品学兼优.责任心强.身体健康.乐意为同学服务的学生担任班干部,并根据他们性格.能力的差异,安排相应的工作,尽心地进行培养 ...
06级政治学与行政学班 班干部竞选办法(试行) 第一章 总则 第一条:根据中华人民共和国选举法,制定河北大学工商学院06级政治学与行政学班班干部竞选规定. 第二条:河北大学工商学院06级政治学与行政学班班干部竞选包括班委.团支部.班级会议. ...
・218・ 价值工程 浅谈班主任对九零后大一新生的管理 OnManagementofFreshmen Who AreBornafter1990s 董忠平Dong (School of Zhongping: 贵平HouGuiping:吕芳Lv ...
证券代码:600031 证券简称:三一重工 公告编号:2013-014 三一重工股份有限公司 关于召开2012年度股东大会的通知 本公司董事会及全体董事保证本公告内容不存在任何虚假记载.误导性陈述或者重大遗漏,并对其内容的真实性.准确性和完 ...
我们车辆工程112班是由来自五湖四海的31位活泼开朗.积极上进的同学组成的一个大家庭.我们在学习上永不怠慢,工作上认真贯彻学院给我们下的任何一个指标,同时还起到了带头模范的作用,为创建一个极具特色的优良学风班而一直努力和奋斗.很欣庆也很自豪 ...