📄 ccc.txt
字号:
printf("按任意键继续...");
getch();
}
/*按编号排序*/
void SortByUserNum()
{
FILE *fp=NULL;
user Show;
user a[100];
user temp;
char name[40]="yonghu";
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("Open file fail");
getch();
exit(1);
}
i=0;
while(fread(&Show,sizeof(user),1,fp)!=(int)NULL)
{
printf("",Show.Number,Show.Name,Show.ps,Show.power);
a[i].Number=Show.Number;a[i].power=Show.power;
strcpy(a[i].Name,Show.Name,20);
strcpy(a[i].ps,Show.ps,7);
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=i;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=i;j<count;j++)
if(a[i].Number<a[j].Number)
{ temp=a[i];
a[i]=a[j];
a[j]=temp;
}break;
default:printf("选择错误,请重新选择!\n");
goto loop1;
}
fp=fopen(name,"wb");
for(i=0;i<count;i++)
if((fwrite(&a[i],sizeof(user),1,fp)!=1))
{printf("出现错误:\n");break;}
fclose(fp);
fp=fopen(name,"r");
printf("\n序号\t\t姓名\t\t密码\t\t权限\n");
while(fread(&Show,sizeof(user),1,fp)!=(int)NULL)
printf("\n%ld\t\t%s\t\t%-8s\t\t%d\n",Show.Number,Show.Name,Show.ps,Show.power);
fclose(fp);
printf("按任意键继续....\n");
getch();
}
/*投票*/
void Vote()
{
FILE *fp=NULL,*fp1=NULL;
candidate Show;
candidate a[100];
char name[40]="houxuanren";
int count=0,i;
int m;
char n;
// printf("请输入文件名:\n");
//scanf("%s",name);
again2: fp=fopen(name,"r+");
system("cls");
/* 如果当前文件不存在,提示打开文件失败 */
if(fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束!.\n",name);
perror("打开文件失败");
getch();
exit(1);
}
printf("\n编号\t\t姓名\t\t票数\n");
i=0;
while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
{
printf("\n%ld\t\t%s\t\t%d\n",Show.Number,Show.Name,Show.votenum);
printf("",Show.intro);
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++;
}
count=i;
fclose(fp);
count=i;
printf("请输入要投票的候选人(0意味着结束):\n");
scanf("%d",&m);
if(m==0)
return;
getchar();
fp=fopen(name,"wb");
for(i=0;i<count;i++)
{
if(a[i].Number==m)
{
a[i].votenum=a[i].votenum+1;
}
if((fwrite(&a[i],sizeof(candidate),1,fp)!=1))
{printf("修改失败:\n");}
}
fclose(fp);
fp=fopen(name,"rb");
printf("\n编号\t\t姓名\t\t票数\n");
while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
{
printf("\n%ld\t\t%s\t\t%d\n",Show.Number,Show.Name,Show.votenum);
}
printf("是否继续 (Y/N):");
n=getchar();
if(n=='y'||n=='Y')
goto again2;
else if(n=='n'||n=='N')
return;
printf("按任意键继续...");
getch();
}
/*清空投票*/
void ClearVote()
{
FILE *fp=NULL,*fp1=NULL;
candidate Show;
candidate a[100];
char name[40]="houxuanren";
int count=0,i;
//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.votenum);
printf("",Show.intro);
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++;
}
count=i;
fclose(fp);
count=i;
fp=fopen(name,"wb");
for(i=0;i<count;i++)
{
a[i].votenum=0;
if((fwrite(&a[i],sizeof(candidate),1,fp)!=1))
{printf("修改失败:\n");}
}
fclose(fp);
fp=fopen(name,"rb");
printf("\n编号\t\t姓名\t\t票数\n");
while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
{
printf("\n%ld\t\t%s\t\t%d\n",Show.Number,Show.Name,Show.votenum);
}
printf("按任意键继续...");
getch();
}
/*按票数排序*/
void SortByVote()
{
FILE *fp=NULL;
candidate Show;
candidate a[100];
candidate temp;
char name[40]="houxuanren";
int count=0,i,j,m;
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=i;j<count;j++)
if(a[i].votenum>a[j].votenum)
{ temp=a[i];
a[i]=a[j];
a[j]=temp;
}break;
case 2:for(i=0;i<count;i++)
for(j=i;j<count;j++)
if(a[i].votenum<a[j].votenum)
{ temp=a[i];
a[i]=a[j];
a[j]=temp;
}break;
default:printf("选择错误,请重新选择!\n");
goto loop1;
}
fp=fopen(name,"wb");
for(i=0;i<count;i++)
if((fwrite(&a[i],sizeof(candidate),1,fp)!=1))
{printf("出现错误:\n");}
fclose(fp);
fp=fopen(name,"r");
printf("\n编号\t\t姓名\t\t票数\n");
while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
printf("\n%ld\t\t%s\t\t%d\n",Show.Number,Show.Name,Show.votenum);
fclose(fp);
printf("按任意键继续.....\n");
getch();
}
/*删除候选人信息*/
void Delcandidate()
{
FILE *fp=NULL;
candidate Show;
candidate a[100];
char name[40];
int count=0,i;
int m,flag;
char n;
printf("请输入文件名:\n");
scanf("%s",name);
again:
flag=0;
fp=fopen(name,"r+");
system("cls");
/* 如果当前文件不存在,提示打开文件失败 */
if(fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束!.\n",name);
perror("打开文件失败");
getch();
exit(1);
}
printf("\n编号\t\t姓名\t\t简介\t\t票数\n");
i=0;
while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
{
printf("\n%ld\t\t%s\t\t%s\t\t%d\n",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++;
}
count=i;
fclose(fp);
fp=fopen(name,"wb");
count=i;
printf("请输入要删除的编号:\n");
scanf("%d",&m);
getchar();
for(i=0;i<count;i++)
{
flag++;
if(a[i].Number!=m)
if((fwrite(&a[i],sizeof(candidate),1,fp)!=1))
{printf("删除错误:\n");continue;}
if(a[i].Number==m)
--flag;
}
if(flag==count)
{
printf("查无此人!按任意键继续!\n");
getch();
}
fclose(fp);
fp=fopen(name,"rb");
i=0;
while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
{
printf("\n%ld\t\t%s\t\t%s\t\t%d\n",Show.Number,Show.Name,Show.intro,Show.votenum);
i++;
}
printf("是否继续 (Y/N):");
n=getchar();
if(n=='y'||n=='Y')
goto again;
else if(n=='n'||n=='N')
return;
printf("按任意键继续...");
getch();
}
void Addcandidate()
{
FILE *fp=NULL,*fp1=NULL;
candidate Show[100],Show1;
candidate TempS[100];
int i=0,j;
char DataFile[40]="houxuanren";/* 存储投票人信息的文件名 */
char m;
int count=0;
again: fp=fopen(DataFile,"ab");
fp1=fopen(DataFile,"r");
system("cls");
/* 如果当前文件不存在,提示打开文件失败 */
if(fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束\n",DataFile);
perror("打开文件失败");
getch();
exit(1);
}
/* 如果成功打开文件,则提示输入序号、用户名、密码、权限等相关信息 */
printf("输入 编号,姓名 和 简介.编号为0意味着结束.\n");
printf("序号不要超过10位,姓名不要超过20个字节,简介不要超过500位\n");
printf("文件内容如下:\n");
printf("\n编号\t\t姓名\t\t简介\t\t票数\n");
while(fread(&Show1,sizeof(candidate),1,fp1)!=(int)NULL)
{
count++;
printf("\n%ld\t\t%s\t\t%s\t\t%d\n",Show1.Number,Show1.Name,Show1.intro,Show1.votenum);
}
/* 循环从键盘上读取投票人输入的投票人相关信息 */
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(candidate),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].intro);
getchar();
TempS[i].intro[499]='\0';
TempS[i].votenum=0;
/* 如遇无法写入文件的异常,则加以提示 */
if(fwrite(&TempS[i],sizeof(candidate),1,fp)!=1)
{
printf("\n写入 %s 失败! 按任意键结束\n",DataFile);
perror("写入失败");
getch();
exit(1);
}
i++;
count++;
if(count>=99)
{
printf("超出范围\n");
break;
}
/* 如果输入的数据量超过最大允许的范围,则提示数据不能录入 */
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(candidate),1,fp)!=(int)NULL)
{
printf("\n%ld\t\t%s\t\t%s\t\t%d\n",Show[i].Number,Show[i].Name,Show[i].intro,Show[i].votenum);
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 Creatmaster()
{
FILE *fp=NULL;
user Show;
user TempS;
char DataFile[40]="yonghu";/* 存储投票人信息的文件名 */
int count=1;
fp=fopen(DataFile,"ab");
/* 如果成功打开文件,则提示输入序号、用户名、密码、权限等相关信息 */
//printf("输入序号,姓名 和 密码.序号0意味着结束.\n");
/* 循环从键盘上读取投票人输入的投票人相关信息 */
// printf("\n输入 '序号=0' 意味着结束.\n");
// printf("序号:");
// scanf("%ld",&TempS.Number);
// if(TempS.Number==0)
//// {
// return;
// }
printf("姓名:");
scanf("%s",TempS.Name);
TempS.Name[19]='\0';
printf("密码:");
scanf("%s",TempS.ps);
TempS.ps[7]='\0';
TempS.power=1;
TempS.Number=1;
if(fwrite(&TempS,sizeof(user),1,fp)!=1)
{
printf("\n写入文件 %s失败!按任意键结束\n",DataFile);
perror("写入文件失败");
getch();
exit(1);
}
fclose(fp);
/* 在屏幕上显示文件内容 */
printf("信息写入文件 %s 成功.\n",DataFile);
printf("内容如下:\n");
fp=fopen(DataFile,"rb");
if(fp==NULL)
{
printf("\n打开文件 %s 失败! 按任意键结束 \n",DataFile);
perror("Open file fail");
getch();
exit(1);
}
printf("\n序号\t\t姓名\t\t密码\t\t权限\n");
while(fread(&Show,sizeof(user),1,fp)!=(int)NULL)
{
printf("\n%ld\t\t%s\t\t%-8s\t\t%d\n",Show.Number,Show.Name,Show.ps,Show.power);
}
fclose(fp);
printf("按任意键继续...");
getch();
system("cls");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -