课程设计 电子投票系统

文件名称:电子投票系统
作者:滕建 郗小艺
完成时间:2016.12.29


 
#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.创建新候选人                    2.创建新用户         **\n");     
        printf("**  3.查询候选人信息                  4.浏览所有候选人     **\n");     
        printf("**  5.整理所有投票                    6.有效投票数         **\n");   
        printf("**  7.清空候选人信息                  8.票数清零           **\n");  
        printf("**                   0.退出                                **\n");  
        scanf("%d",&key);  
        switch(key)  
        {  
         case 1:addcandidate();break;  
         case 2:addUser();break;  
         case 3:search();break;  
         case 4:scan();break;  
         case 5:sort(); break;  
         case 6:effectivevoting(); break;  
         case 7:empty(); break;  
         case 8:Votexiugai(); break;  
         case 0:break;  
         default:break;  
  
        }  
   }while(key!=0);  
}  
  
void addcandidate()//创建候选人  
{      
      
    char DataFile[20]="DataFile.txt";  
    FILE * fp=NULL;  
    char c;  
    int over_flag=0;  
    candidate TempS;  
    read();  
    fp=fopen(DataFile,"ab+");  
  
    do  
    {  
      printf("                 *****************创建新候选人*****************\n");  
      printf("请输入:");  
  
      printf("候选人号码:");scanf("%ld",&TempS.number);  
        for(i=0;i<c_total;i++)//检查输入编号是否有重复  
        {  
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值