在运行代码之前需要在D盘创建两个文本文件election.txt(保存候选人姓名、编号、特点、初始得票数)、ID.txt(保存投票者姓名、账号、密码、所投的候选人编号、权限)
例:各个信息用空格隔开分别为投票者姓名、账号、密码、所投的候选人编号、权限(1是有权限,0是没有权限)
1.管理员和投票者都需要账号密码登录
2.管理者可以查看候选人信息、查看投票信息、查看投票者信息、修改投票者信息、修改候选人信息、清空投票信息
3.投票者可以查看候选人信息、进行投票
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include <windows.h>
#include<string.h>
typedef struct ENode //候选人
{
char name[100];
int number;
char introduction[500];
int sum;
struct ENode *next;
} enode;
typedef struct IDNode
{
char name[100];
char user[100];
char password[100];
int order;
int jurisdiction;
struct IDNode *next;
} idnode;
enode *ehead=NULL;
idnode *Idhead=NULL;
void Login(int a) //登录界面
{
idnode *r;
r=Idhead->next;
char number[100];
char password[100];
printf("账号:");
scanf("%s",number);
if(a==1)
{
if(strcmp(number,"guanlizhe123")==0)
{
printf("密码:");
scanf("%s",password);
if(strcmp(password,"123")==0)
{
system("cls");
printf("\n\n登陆成功");
Sleep(500);
fflush(stdin);
system("cls");
AFunction();
}
else
{
system("cls");
printf("\n\n密码错误");
Sleep(500);
fflush(stdin);
system("cls");
}
}
else
{
system("cls");
printf("\n\n账号错误");
Sleep(500);
fflush(stdin);
system("cls");
}
}
else
{
int ver=0;
while(r!=NULL)
{
if(strcmp(number,r->user)==0)
{
ver=1;
break;
}
r=r->next;
}
if(ver==1)
{
printf("密码:");
scanf("%s",password);
if(r->password!=NULL)
{
if(strcmp(password,r->password)==0)
{
system("cls");
if(r->jurisdiction==0)
{
printf("\n\n该账号无权限!");
Sleep(1000);
fflush(stdin);
system("cls");
}
else
{
printf("\n\n登陆成功");
Sleep(500);
fflush(stdin);
system("cls");
VFunction(r);
}
}
else
{
system("cls");
printf("\n\n密码错误");
Sleep(500);
fflush(stdin);
system("cls");
}
}
}
else
{
system("cls");
printf("\n\n账号错误");
Sleep(500);
fflush(stdin);
system("cls");
}
}
}
void VFunction(idnode *r)
{
while(1)
{
printf("请选择功能:\n\n");
printf("1.投票\n\n");
printf("2.查看候选人信息\n\n");
printf("3.退出");
char a;
a=getch();
system("cls");
if(a==49)
{
vote(r);
}
else if(a==50)
{
browse();
}
else if(a==51)
{
break;
}
else
{
printf("\n\n没有此选项!");
Sleep(500);
fflush(stdin);
system("cls");
}
}
}
void vote(idnode *r) //投票函数
{
if(r->order==0)
{
int order;
for(;;)
{
int i;
printf("\n\n输入候选人编号即为投票成功\n\n若弃权或没有决定好,输入'0'\n\n仅一次投票机会\n\n请选择:");
i=scanf("%d",&order);
if(i==0)
{
fflush(stdin);
printf("输入有错误!");
Sleep(1000);
fflush(stdin);
system("cls");
}
else
break;
}
enode *s;
s=ehead->next;
while(s!=NULL)
{
if(s->number==order)
{
r->order=order;
printf("\n\n投票完成");
s->sum=s->sum+1;
break;
}
s=s->next;
}
if(order==0)
{
printf("\n\n欢迎下次投票");
}
else if(s==NULL)
printf("\n\n没有该编号的候选人");
Sleep(500);
fflush(stdin);
}
else
{
printf("\n\n您已经为%d号候选人投票",r->order);
Sleep(2000);
fflush(stdin);
}
system("cls");
}
void AFunction()
{
while(1)
{
printf("请选择功能:\n\n");
printf("1.浏览候选人简介\n\n");
printf("2.修改候选人简介\n\n");
printf("3.查询投票情况\n\n");
printf("4.清除投票信息\n\n");
printf("5.修改投票人信息\n\n");
printf("6.返回");
char a;
a=getch();
system("cls");
if(a==49)
browse();
else if(a==50)
modify();
else if(a==51)
check();
else if(a==52)
eli