⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccc.txt

📁 投票 实习用 系统。 C语言编写的。。 大家参考一下吧。
💻 TXT
📖 第 1 页 / 共 3 页
字号:
#include "user.h"
#include "stdio.h"
#include "shead.h"
#include "stdlib.h"
void Admin(user m_user);
void AddUser();
void Addcandidate();
void BrowseIntro();
void CreatFile();
void CreatUser();
void Creatmaster();
void DelUser();
void Delcandidate();
void Guest(user m_user);
void ModifyMyPassword(m_user);
void ModifyUserNumber();
void ModifyIntro();
void QueryIntro();
void SortByUserNum();
void Vote();
void ClearVote();
void SortByVote();
int main()
 {
  FILE * fp=NULL;
  user Show;
  user TempS;/* 临时存放用户信息的结构体变量 */
  char DataFile[40]="yonghu",c;/* 存放用户信息的文件名 */
  int i;
  char relogin;/* 是否重新登录的标志 */
  int success=0;
  fp=fopen(DataFile,"r");
 if(fread(&Show,sizeof(user),1,fp)==(int)NULL)
 {
	 printf("你是首次使用本系统,请创建用户\n");
     Creatmaster();
 }
  /* CreateUser(); */
  printf("#==============================#\n");
  printf("# 欢迎进入投票系统!  #\n");
  printf("#==============================#\n\n");
  again:
     /* 输入用户名 */
     printf("请输入用户名:");
     scanf("%s",TempS.Name);
     printf("password=");
     fflush(stdin);
     for(i=0;i<7;i++)
     {
       c=getch();
      if(c==0x0d)
      {
       TempS.ps[i]='\0';
       break;
       }
       printf("*");
      TempS.ps[i]=c;
      TempS.ps[i+1];
     }
     TempS.ps[7]='\0';
     /* 打开yonghu文件,用来验证用户名和密码 */
     fp=fopen(DataFile,"rb");
     if(fp==NULL)
     {
      printf("\n打开文件 %s 失败! 按任意键结束\n",DataFile);
      perror("打开文件失败");
      getch();
      exit(1);
     }
     /* 循环读取文件校验用户名和密码是否正确 */
     while(fread(&Show,sizeof(user),1,fp)!=(int)NULL)
     /*while(fread(&Show,sizeof(user),1,fp)!=int(NULL))*/
     {
      if(strcmp(TempS.Name,Show.Name)==0 && (strcmp(TempS.ps,Show.ps)==0))
      {
        printf("\n登陆成功!");
        success=1;
        /* 判断权限,如power的值为1,则是管理员,并调用管理员功能界面 */
        if(Show.power==1)
        {
         system("cls");
         printf("\n你的权限是管理员!\n\n\n按任意键继续...\n");
         getch();
         Admin(Show);
         break;
        }/* 判断权限,如power的值为0,则是投票者,并调用投票者功能选择界面 */
        if(Show.power==0)
        {
         system("cls");
         printf("\n你的权限是普通用户!\n按任意键继续...\n");
         getch();
         Guest(Show);
         break;
    }
      }
     }
     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);
      }
     }
  }
 void Admin(user m_user)/*m_user接收用户的登录信息*/
 {
  int choice=0;/* 存放用户选项的变量 */
  while(1)
  {
   system("cls");
  printf("+------------------------------------------+\n");
  printf("|   欢迎进入管理员系统      |\n");
  printf("|----------------------+-------------------|\n");
  printf("|1.初始化候选人文件    |2.浏览候选人简介   |\n");
  printf("|3.修改候选人简介      |4.按票数排序       |\n");
  printf("+----------------------+-------------------+\n");
  printf("|5.清空票数            |6.修改密码         |\n");
  printf("+----------------------+-------------------+\n");
  printf("|11.创建新的用户文件   |12.添加新用户      |\n");
  printf("|13.删除用户           |14.修改用户信息    |\n");
  printf("|15.按用户序号排序     |16.删除候选人      |\n");
  printf("|17添加候选人          |0.结束程序         |\n");
  printf("+----------------------+-------------------+\n");
  printf("输入你的选择:");
  scanf("%d",&choice);
  switch(choice)
  {
   case 1:
      CreatFile();
      break;
   case 2:
      BrowseIntro();
      break;
   case 3:
      ModifyIntro();
      break;
   case 4:
      SortByVote();
      break;
   case 5:
      ClearVote();
      break;
   case 6:
      ModifyMyPassword(m_user);
      break;
   case 11:
      CreatUser();
       break;
   case 12:
      AddUser();
      break;
   case 13:
      DelUser();
      break;
   case 14:
      ModifyUserNumber();
      break;
   case 15:
      SortByUserNum(); 
	  break;
   case 16:
	   Delcandidate();
	   break;  
   case 17:
	   Addcandidate();
	   break;
   case 0:
   exit(0);
   default:
      printf("选择错误 \n按任意键继续....\n");
      fflush(stdin);/*清空输入缓冲区*/
      getch();
      break;
  }
 }
}
   /*添加用户信息*/
  void AddUser()
  {
   FILE *fp=NULL,*fp1=NULL;
   user Show[100],Show1;
   user TempS[100];
   int i=0,j;
   char DataFile[40]="yonghu";/* 存储投票人信息的文件名 */
   char m;
   int flag=0;
  again:  fp=fopen(DataFile,"ab");
		  fp1=fopen(DataFile,"r");
    system("cls");
   /* 如果当前文件不存在,提示打开文件失败 */
   if(fp==NULL)
   {
   printf("\n打开文件 %s 失败!按任意键结束\n",DataFile);
   perror("Open file fail");
   getch();
   exit(1);
  }
  /* 如果成功打开文件,则提示输入序号、用户名、密码、权限等相关信息 */

  printf("输入 序号,姓名 和 密码.序号为0意味着结束.\n");
  printf("序号不要超过10位,姓名不要超过20个字节,密码不要超过6位,权限0~1(0为普通,1为管理员)\n");
  printf("文件内容如下:\n");
  printf("\n序号\t\t姓名\t\t密码\t\t权限\n");
while(fread(&Show1,sizeof(user),1,fp1)!=(int)NULL)
  {
		
   printf("\n%ld\t\t%s\t\t%-8s\t\t%d\n",Show1.Number,Show1.Name,Show1.ps,Show1.power);
   flag++;
  }

	
  /* 循环从键盘上读取投票人输入的投票人相关信息 */
while(1)
  { 
        
    fp1=fopen(DataFile,"rb");
again1:	j=0;
    printf("\n序号0意味着结束.\n");
    printf("请输入序号:");
    scanf("%ld",&TempS[i].Number);
	getchar();	
    while(fread(&Show[j],sizeof(user),1,fp1)!=(int)NULL)
	{
		if(Show[j].Number==TempS[i].Number)
		{
			printf("序号已存在,请重新输入:\n");
			goto again1;			
		}
	j++;
	}
    if(TempS[i].Number==0)
    {  
     break;
    }
    printf("\n姓名:");
    scanf("%s",TempS[i].Name);
    TempS[i].Name[19]='\0';
    printf("\n密码:");
    scanf("%s",TempS[i].ps);
    TempS[i].ps[7]='\0';
    printf("\n权限=");
    scanf("%d",&TempS[i].power);
	getchar();
  if(TempS[i].power!=1)
    {
     TempS[i].power=0;
    }
   flag++;
    if(flag>=99)/* 如果输入的数据量超过最大允许的范围,则提示数据不能录入 */
	{
		printf("超出范围");
		break;
	}
    /* 如遇无法写入文件的异常,则加以提示 */
    if(fwrite(&TempS[i],sizeof(user),1,fp)!=1)
    {
     printf("\n写入 %s 失败! 按任意键结束\n",DataFile);
     perror("写入失败");
     getch();
     exit(1);
    }
	i++;   
  fclose(fp);
  /* 在屏幕上显示文件内容 */
  printf("添加用户到 %s 成功.\n",DataFile);
printf("添加后的内容如下:\n");
  i=0;
  fp=fopen(DataFile,"rb");
  if(fp==NULL)
  {
   printf("\n打开文件 %s 失败!按任意键结束 \n",DataFile);
   perror("打开失败\n");
   getch();
   exit(1);
  }
 printf("\n序号\t\t姓名\t\t密码\t\t权限\n");
 while(fread(&Show[i],sizeof(user),1,fp)!=(int)NULL)
  {
   printf("\n%ld\t\t%s\t\t%-8s\t\t%d\n",Show[i].Number,Show[i].Name,Show[i].ps,Show[i].power);
   i++;
  }
  fclose(fp);
  printf("是否继续 (Y/N):");
  m=getchar();
  if(m=='y'||m=='Y')
	  goto again;
  else if(m=='n'||m=='N')
  {   
	  printf("按任意键继续:\n"); 
      getch();
	  return;      
  }
}
}
  /*排序简介*/
  void BrowseIntro()
  {
   FILE *fp=NULL;
   candidate Show;
   candidate a[100];
   candidate temp;
   char name[40]="houxuanren";
   int count=0,i,j,m;
   //printf("请输入文件名:\n");
   //scanf("%s",name);
   fp=fopen(name,"r+");
   system("cls");
   /* 如果当前文件不存在,提示打开文件失败 */
   if(fp==NULL)
   {
   printf("\n打开文件 %s 失败!按任意键结束!.\n",name);
   perror("打开文件失败!");
   getch();
   exit(1);
   }
   i=0;
  while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
  {
   printf("",Show.Number,Show.Name,Show.intro,Show.votenum);
   a[i].Number=Show.Number;a[i].votenum=Show.votenum;
   strcpy(a[i].Name,Show.Name,20);
   strcpy(a[i].intro,Show.intro,500);
   i++;
   }
loop1:printf("请输入1(降序)或2(升序)\n");
  scanf("%d",&m);
  count=i;
  fclose(fp);
  switch(m)
  {
  case 1:for(i=0;i<count;i++)
	       for(j=0;j<count;j++)
		     if(a[i].Number>a[j].Number)
			 {   temp=a[i];
		         a[i]=a[j];
			     a[j]=temp;			  
			 }break;
  case 2:for(i=0;i<count;i++)
	       for(j=0;j<count;j++)
		     if(a[i].Number<a[j].Number)
			 {   temp=a[i];
		         a[i]=a[j];
			     a[j]=temp;			  
			 }break;
  default: printf("选择错误,请重新选择!");
	       goto loop1;
  }
  
   fp=fopen(name,"wb");  
   for(i=0;i<count;i++)
	   if((fwrite(&a[i],sizeof(candidate),1,fp)!=1))
		  {printf("出现错误:\n");break;}
  fclose(fp);
  fp=fopen(name,"r");
  printf("排序后");
   printf("\n编号\t\t姓名\t\t简介\n");
   while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
   printf("\n%ld\t\t%s\t\t%-8s\t\t\n",Show.Number,Show.Name,Show.intro);
   fclose(fp);
   printf("按任意键继续:\n");
   getch();

  }
   /*创建候选人信息*/
  void CreatFile()
  {
   FILE *fp=NULL,*fp1=NULL;
   candidate Show;
   candidate TempS;
   char DataFile[40]="houxuanren";/* 存储候选人信息的文件名 */
   int count=0,i,j=0,a[10];	
    fp=fopen(DataFile,"wb");
	fclose(fp);
    fp=fopen(DataFile,"ab");    
    system("cls");
   /* 如果当前文件不存在,提示打开文件失败 */
   if(fp==NULL)
   {
   printf("\n打开文件 %s 失败!按任意键结束.\n",DataFile);
   perror("打开文件失败!");
   getch();
   exit(1);
   }
  /* 如果成功打开文件,则提示输入编号、候选人、简介、等相关信息 */
  printf("请输入候选人编号,姓名,简介.编号0意味着结束:\n");
  printf("编号不要超过10位,姓名不要超过20字节,简介不要超过500字节\n");
  /* 循环从键盘上读取投票人输入的投票人相关信息 */
  while(1)
  { 

    fp1=fopen(DataFile,"rb");
loop:printf("\n输入 '编号=0' 意味着结束.\n");
    printf("编号:");
    scanf("%ld",&TempS.Number);
	a[j]=TempS.Number;
	for(i=0;i<j;i++)
		if(a[i]==TempS.Number)
		{
			printf("编号已存在!请重新输入:\n");
		    goto loop;
		}
		
	getchar();
	if(TempS.Number==0)
    {
     break;
    }
    printf("姓名:");
    scanf("%s",TempS.Name);
	getchar();
    TempS.Name[19]='\0';
    printf("简介:");
    scanf("%s",TempS.intro);
	getchar();
    TempS.votenum=0;
    /* 如遇无法写入文件的异常,则加以提示 */
    if(fwrite(&TempS,sizeof(candidate),1,fp)!=1)
    {
     printf("\n写入文件 %s 失败! 按任意键结束\n",DataFile);
     perror("写入失败");
     getch();
     exit(1);
    }
	j++;	
	count++;
	if(count==10)
		break;
	fclose(fp1);
  }
  
  fclose(fp);
  /* 在屏幕上显示文件内容 */
  printf("创建信息在 %s 成功.\n",DataFile);
  printf("内容如下:\n");
  fp=fopen(DataFile,"rb");
  if(fp==NULL)
  {
   printf("\n打开文件 %s 失败! 按任意键结束 \n",DataFile);
   perror("打开失败!");
   getch();
   exit(1);
  }
  printf("\n编号\t\t姓名\t\t简介\t\t\t\t票数\n");
  while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
  {
   printf("\n%ld\t\t%s\t\t%-8s\t\t\t\t%d\n",Show.Number,Show.Name,Show.intro,Show.votenum);
  }
  fclose(fp);
  printf("按任意键继续...");
  getch();
}
  
  /*创建用户信息*/
  void CreatUser()
  {
   FILE *fp=NULL;
   user Show;
   user TempS;
   char DataFile[40];/* 存储投票人信息的文件名 */
   int a[100];
   int count=1,flag,i,j=0;
   printf("请输入要创建的用户文件名:\n");
   scanf("%s",DataFile);
   getchar();
   fp=fopen(DataFile,"ab");
   system("cls");
   /* 如果当前文件不存在,提示打开文件失败 */
   if(fp==NULL)
   {
   printf("\n打开文件 %s 失败!按任意键结束.\n",DataFile);
   perror("Open file fail");
   getch();
   exit(1);
  }
  /* 如果成功打开文件,则提示输入序号、用户名、密码、权限等相关信息 */
  printf("输入序号,姓名 和 密码.序号0意味着结束.\n");
  printf("序号不要超过10位,姓名不要超过20字节,权限:0~1");
  /* 循环从键盘上读取投票人输入的投票人相关信息 */
  while(1)
  {
loop: printf("\n输入 '序号=0' 意味着结束.\n");
    printf("序号:");
    scanf("%ld",&TempS.Number);
	a[j]=TempS.Number;
	for(i=0;i<j;i++)
		if(a[i]==TempS.Number)			
		{
			printf("编号已存在!请重新输入!按任意键继续!\n");
		    getch();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -