数据结构课程设计 电子投票系统

该博客介绍了电子投票系统的实现,包括管理员登陆和界面,创建候选人和用户的功能,以及查询、浏览候选人的操作。投票者可以查询候选人并进行投票,系统还能进行投票统计和信息清理。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>


#define closegr closegraph
#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 effectivevoting();//有效投票数
void empty();//清空候选人

void Votexiugai();//票数修改

int total=0;
int c_total=0;
int i=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;//权限
}user;



candidate c_man[N];
user total_user[N];




void main_v()//投票者者界面
{   
	
	
    int key;
	do 
    {	
		printf("*************************************************************\n");
		printf("********************欢迎进入投票员界面***********************\n");
		printf("*************************************************************\n");
		printf("**  1.浏览所有候选人              2.查询候选人信息         **\n");   
		printf("**  3.投票                        4.退出                   **\n");   
		scanf("%d",&key);

		switch(key)
		{
         case 1:scan();break;
         case 2:search();break;
         case 3:vote();break;
         case 4:break;
         default:break;
         }

     }while(key!=4);
}

void vote()  //投票者投票
{   
	
	
    long candidatenum;//定义进行操作时的临时结构体变量
    int i,flag;
    char DataFile[20]="DataFile.txt",next;// DataFile存储候选人信息的文件名,next为是否进行下一次投标操作的选项   
    candidate TempS;
    FILE *fp;

begin:
    
	flag=0;//flag用来标志是否找对应编号,即投票是否成功
    read();
    printf("请输入您要投票的候选人的号码:");
    scanf("%ld",&candidatenum);
    printf("您所投票的候选人号码是:%ld\n",candidatenum);
    for(i=0;i<c_total;i++)
    {
        if(c_man[i].number==candidatenum)
        {
            flag=1;
            c_man[i].vote++;
        }
    }
    if(flag)
    {
        printf("投票成功\n");


        fp=fopen(DataFile,"wb");

        if(fp==NULL)//如果当前文件不存在,提示打开文件失败
        {
            printf("\nOpen file is fail!End with any key.\n",DataFile);
            perror("Open file fail");
            getch();
            exit(1);
        }
        for(i=0;i<c_total;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("\nOpen file %s fail! End With any key \n",DataFile);
        perror("Open file fail");
        getch();
        exit(1);
    }

		printf("整理后的最新投票情况:\n");
        printf("\n候选人号码     \t候选人姓名      \t票数\n");//"\t"  横向跳到下一制表符位置

    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')goto begin;

}

void main_a()//管理员界面
{    
	
    int key;
	do 
    {	
		printf("*************************************************************\n");
		printf("********************欢迎进入管理员界面***********************\n");
		printf("*************************************************************\n");
		printf("**  1.创建新候选人          
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值