电子投票平台

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct _Info
{
	int no;//序号
	int count;//得票数
	char name[20];//姓名
	char introduce[100];//简介
}Info,*PInfo;

typedef struct _Code
{
	char count[20];//账号
	char code[20];//密码
}Code;

int Main_Menu()
{
	int choice;
	system("cls");
	printf("1:用户登录\n");
	printf("2:管理员登录\n");
	printf("0:退出\n");
	printf("请输入选择:");
	scanf("%d",&choice);
	while(choice<0||choice>2)
	{
		printf("请重新输入选择:");
		scanf("%d",&choice);
	}
	return choice;
}

int Menu1()
{
	int choice;
	system("cls");
	printf("1:投票\n");
	printf("2:浏览候选人\n");
	printf("3:查看候选人简介\n");
	printf("0:返回\n");
	printf("请输入选择:");
	scanf("%d",&choice);
	while(choice<0||choice>3)
	{
		printf("请重新输入选择:");
		scanf("%d",&choice);
	}
	return choice;
}

int Menu2()
{
	int choice;
	system("cls");
	printf("1:增加候选人信息\n");
	printf("2:浏览候选人简介\n");
	printf("3:修改候选人简介\n");
	printf("4:查询投票情况\n");
	printf("5:清除投票信息\n");
	printf("6:删除候选人信息\n");
	printf("7:设置投票账号密码\n");
	printf("0:返回\n");
	printf("请输入选择:");
	scanf("%d",&choice);
	while(choice<0||choice>7)
	{
		printf("请重新输入选择:");
		scanf("%d",&choice);
	}
	return choice;
}

void Set_User_Info(Code* user)
{
	system("cls");
	printf("请设置投票用户:");
	scanf("%s",user->count);
	printf("请设置投票密码:");
	scanf("%s",user->code);
	printf("设置成功!\n");
	system("pause");
}

void Save_USER_File(Code user)
{	
	FILE* fp=fopen("user.txt","w+");//用写的方式打开文件
	if(fp==NULL)//打开失败则返回
	{		
		return ;	
	}	
	fwrite(&user,sizeof(Code),1,fp);//每次写入一个结构体大小	
	fclose(fp);//关闭文件
}

void Load_USER_File(Code* user)
{	
	FILE* fp=fopen("user.txt","r+");//用读的方式打开文件
	if(fp==NULL)//打开失败则返回	
	{		
		return;	
	}	
	fread(user,sizeof(Code),1,fp);	//每次读取一个结构体大小
	fclose(fp);//关闭文件
}

void Save_Info(PInfo mon,int n)
{
	int i;
	FILE* pFile = fopen("Mon_Info.dat","w");
	if(pFile==NULL)
	{
		return;
	}
	for(i=0;i<n;i++)
	{
		fwrite(&mon[i],1,sizeof(Info),pFile);
	}
	fclose(pFile);
}

int Read_Info(PInfo mon)
{
	int i=0;
	FILE* pFile = fopen("Mon_Info.dat","r");
	if(pFile==NULL)
	{
		return 0;
	}
	while(fread(&mon[i++],1,sizeof(Info),pFile));
	fclose(pFile);
	if(i>=1)
	{
		return i-1;
	}
	return 0;
}

int Login(Code* user)
{
	char count[20],code[20];
	system("cls");
	printf("请输入账号:");
	scanf("%s",count);
	printf("请输入密码:");
	scanf("%s",code);
	if(!strcmp(count,user->count) && !strcmp(code,user->code))
		return 1;
	printf("账号密码错误!\n");
	system("pause");
	return 0;
}

int Add_New_Info(PInfo info,int n)
{
	system("cls");
	printf("请输入候选人序号:");
	scanf("%d",&info[n].no);
	printf("请输入候选人姓名:");
	scanf("%s",info[n].name);
	printf("请输入候选人简介:");
	scanf("%s",info[n].introduce);
	info[n].count=0;
	printf("录入成功!\n");
	system("pause");
	return n+1;
}

int Del_Info(PInfo info,int n)
{
	int i,temp,j;
	system("cls");
	printf("请输入要删除的序号:");
	scanf("%d",&temp);
	for(i=0;i<n;i++)
	{
		if(temp==info[i].no)
			break;
	}
	if(i==n)
		return n;

	for(j=i;j<n;j++)
		info[j]=info[j+1];
	printf("删除成功!\n");
	system("pause");
	return n-1;
}

void Clean_Info(PInfo info,int n)
{
	int i;
	system("cls");
	for(i=0;i<n;i++)
	{
		info[i].count=0;
	}
	printf("清除成功!\n");
	system("pause");
}


void Print_Info_Count(PInfo info,int n)
{
	int i;
	system("cls");
	printf("%-10s%-10s%-10s\n","序号","姓名","得票");
	for(i=0;i<n;i++)
	{
		printf("%-10d%-10s%-10d\n",info[i].no,info[i].name,info[i].count);
	}
	system("pause");
}

void Print_Info_info(PInfo info,int n)
{
	int i;
	system("cls");
	printf("%-10s%-10s\n","序号","姓名");
	for(i=0;i<n;i++)
	{
		printf("%-10d%-10s\n",info[i].no,info[i].name);
	}
	system("pause");
}

void Print_Introduce(PInfo info,int n)
{
	int i;
	system("cls");
	printf("%-10s%-10s%-10s\n","序号","姓名","简介");
	for(i=0;i<n;i++)
	{
		printf("%-10d%-10s%-10s\n",info[i].no,info[i].name,info[i].introduce);
	}
	system("pause");
}

void Print_One_Introduce(PInfo info,int n)
{
	int i,temp;
	system("cls");
	printf("请输入要查询的序号:");
	scanf("%d",&temp);
	for(i=0;i<n;i++)
	{
		if(temp==info[i].no)
			break;
	}
	if(i==n)
	{
		printf("无该序号!\n");
		system("pause");
		return ;
	}
	printf("%-10s%-10s%-10s\n","序号","姓名","简介");
	printf("%-10d%-10s%-10s\n",info[i].no,info[i].name,info[i].introduce);

	system("pause");
}

void Modify_Info(PInfo info,int n)
{
	int i,temp;
	system("cls");
	printf("请输入要修改的序号:");
	scanf("%d",&temp);
	for(i=0;i<n;i++)
	{
		if(temp==info[i].no)
			break;
	}
	if(i==n)
	{
		printf("无该序号!\n");
		system("pause");
		return ;
	}

	printf("请输入新简介:");
	scanf("%s",info[i].introduce);
	printf("修改成功!\n");
	system("pause");
}

void Vote_Info(PInfo info,int n)
{
	int i,temp;
	system("cls");
	printf("请输入要投票的序号:");
	scanf("%d",&temp);
	for(i=0;i<n;i++)
	{
		if(temp==info[i].no)
			break;
	}
	if(i==n)
	{
		printf("无该序号!\n");
		system("pause");
		return ;
	}
	info[i].count++;
	printf("投票成功!\n");
	system("pause");
}


int main()
{
	int choice,choice2;
	Code user;
	Info info[100];
	int NUM;
	Load_USER_File(&user);
	NUM=Read_Info(info);
	do
	{
		choice=Main_Menu();
		switch(choice)
		{
		case 1:
			if(!Login(&user))
				break;
			do
			{
				choice2=Menu1();
				switch(choice2)
				{
				case 1:
					Vote_Info(info,NUM);
					break;
				case 2:
					Print_Info_info(info,NUM);
					break;
				case 3:
					Print_One_Introduce(info,NUM);
					break;
				}
			}while(choice2!=0);
			break;
		case 2:
			do
			{
				choice2=Menu2();
				switch(choice2)
				{
				case 1:
					NUM=Add_New_Info(info,NUM);
					break;
				case 2:
					Print_Introduce(info,NUM);
					break;
				case 3:
					Modify_Info(info,NUM);
					break;
				case 4:
					Print_Info_Count(info,NUM);
					break;
				case 5:
					Clean_Info(info,NUM);
					break;
				case 6:
					NUM=Del_Info(info,NUM);
					break;
				case 7:
					Set_User_Info(&user);
					break;
				}
			}while(choice2!=0);
			break;
		}
	}while(choice!=0);
	Save_USER_File(user);
	Save_Info(info,NUM);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/u011256974/article/details/89212501
今日推荐