📄 ccc.txt
字号:
goto loop;
}
if(TempS.Number==0)
{
break;
}
printf("姓名:");
scanf("%s",TempS.Name);
TempS.Name[19]='\0';
printf("密码:");
scanf("%s",TempS.ps);
TempS.ps[7]='\0';
printf("权限=");
scanf("%d",&TempS.power);
if(TempS.power!=1)
{
TempS.power=0;
}
j++;
/* 如遇无法写入文件的异常,则加以提示 */
if(fwrite(&TempS,sizeof(user),1,fp)!=1)
{
printf("\n写入文件 %s失败!按任意键结束\n",DataFile);
perror("写入文件失败");
getch();
exit(1);
}
flag++;
if(flag>=99)
{
printf("超出范围\n");
break;
}
}
/* 如果输入的数据量超过最大允许的范围,则提示数据不能录入 */
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();
}
/*删除用户信息*/
void DelUser()
{
FILE *fp=NULL;
user Show;
user a[100];
char name[40];
int count=0,i;
int m,flag=0;
char n;
printf("请输入文件名:\n");
scanf("%s",name);
again:
fp=fopen(name,"r+");
system("cls");
/* 如果当前文件不存在,提示打开文件失败 */
if(fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束!.\n",name);
perror("Open file fail");
getch();
exit(1);
}
printf("\n序号\t\t姓名\t\t密码\t\t权限\n");
i=0;
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);
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++;
}
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(user),1,fp)!=1))
{printf("删除错误:\n");break;}
if(a[i].Number==m)
flag--;
}
fclose(fp);
fp=fopen(name,"rb");
if(flag==count)
{
printf("编号不存在!按任意键继续\n");
getch();
}
i=0;
printf("文件内容如下:\n");
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);
i++;
}
printf("是否继续 (Y/N):");
n=getchar();
if(n=='y'||n=='Y')
goto again;
else if(n=='n'||n=='N')
return;
printf("按任意键继续...");
getch();
}
void Guest(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("|6.修改密码 0.结束程序 |\n");
printf("+----------------------+-------------------+\n");
printf("输入选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
BrowseIntro();
break;
case 2:
QueryIntro();
break;
case 3:
Vote();
break;
case 4:
SortByVote();
break;
case 6:
ModifyMyPassword(m_user);
break;
case 0:
exit(0);
default:
printf("选择错误 \n按任意键继续....\n");
fflush(stdin);/*清空输入缓冲区*/
getch();
break;
}
}
}
/*修改密码*/
void ModifyMyPassword(m_user)
{
FILE *fp=NULL;
user Show;
user a[100];
char name[40]="yonghu";
int count=0,i,j=0,k,count1=0;
int m;
char ps[8],ps1[8],ps2[8],ps3[8];
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++;
}
count=i;
fclose(fp);
again:fp=fopen(name,"wb");
count=i;
printf("请输入你的编号:\n");
scanf("%d",&m);
getchar();
memset(ps,0,8);//清空数组
printf("请输入你的原密码:\n");
scanf("%s",ps);
getchar();
for(i=0;i<count;i++)
{
if(a[i].Number==m)
{ strcpy(ps3,a[i].ps);
if(strcmp(a[i].ps,ps)==0)
{
printf("请输入你的新密码:\n");
scanf("%s",ps1);
getchar();
printf("请确认密码:\n");
scanf("%s",ps2);
if(strcmp(ps1,ps2)!=0)
{
printf("密码不匹配!\n");
goto loop;
}
if(strcmp(ps1,ps2)==0)
{
strcpy(a[i].ps,ps1);
j=1;
k=i;
}
}
}
loop: if((fwrite(&a[i],sizeof(user),1,fp)!=1))
{continue;}
}
if(strcmp(ps,ps3)!=0)
{
printf("密码错误\n");
count1=count1+1;
if(count1==3)
{
printf("三次错误!");
return;
}
goto again;
}
if(j==1)
{ printf("修改成功!\n");
printf("\n序号\t\t姓名\t\t密码\t\t权限\n");
printf("\n%ld\t\t%s\t\t%-8s\t\t%d\n",a[k].Number,a[k].Name,a[k].ps,a[k].power);
}
fclose(fp);
printf("按任意键继续...\n");
getch();
}
/*修改用户编号*/
void ModifyUserNumber()
{
FILE *fp=NULL,*fp1=NULL;
user Show;
user a[100];
char name[40];
char mname[20],mps[8];
int count=0,i,k;
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(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);
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++;
}
count=i;
fclose(fp);
count=i;
printf("请输入要修改编号:\n");
scanf("%d",&m);
if(m==0)
return;
getchar();
fp=fopen(name,"wb");
for(i=0;i<count;i++)
{
if(a[i].Number==m)
{ flag=1;
printf("姓名:");
scanf("%s",mname);
mname[19]='\0';
strcpy(a[i].Name,mname,20);
printf("密码:");
scanf("%s",mps);
mps[7]='\0';
strcpy(a[i].ps,mps,8);
printf("权限=");
scanf("%d",&k);
getchar();
a[i].power=k;
if(a[i].power!=1)
{
a[i].power=0;
}
}
if((fwrite(&a[i],sizeof(user),1,fp)!=1))
{printf("修改失败:\n");break;}
}
if(!flag)
{
printf("编号不存在!按任意键继续!\n");
getch();
goto again;
}
fclose(fp);
fp=fopen(name,"rb");
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);
}
printf("是否继续 (Y/N):");
n=getchar();
if(n=='y'||n=='Y')
goto again;
else if(n=='n'||n=='N')
return;
printf("按任意键继续...");
getch();
}
/*修改简介*/
void ModifyIntro()
{
FILE *fp=NULL,*fp1=NULL;
candidate Show;
candidate a[100];
char name[40]="houxuanren";
char intro[500];
int count=0,i;
int m,flag;
char n;
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%-8s\t\t\n",Show.Number,Show.Name,Show.intro);
printf("",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);
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)
{ printf("简介:");
scanf("%s",intro);
getchar();
intro[499]='\0';
strcpy(a[i].intro,intro,500);
flag=1;
}
if((fwrite(&a[i],sizeof(candidate),1,fp)!=1))
{printf("修改失败:\n");break;}
}
if(!flag)
{
printf("编号不存在!按任意键继续!");
getch();
goto again;
}
fclose(fp);
fp=fopen(name,"rb");
printf("\n编号\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\n",Show.Number,Show.Name,Show.intro);
}
printf("是否继续 (Y/N):");
n=getchar();
if(n=='y'||n=='Y')
goto again;
else if(n=='n'||n=='N')
return;
printf("按任意键继续...");
getch();
}
/*查询简介*/
void QueryIntro()
{
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);
again: fp=fopen(name,"r+");
printf("是否显示文件信息(0显示,1不显示)\n");
scanf("%d",&m);
system("cls");
/* 如果当前文件不存在,提示打开文件失败 */
if(fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束!.\n",name);
perror("打开文件失败");
getch();
exit(1);
}
if(m==0)printf("\n编号\t\t姓名\t\t简介\t\t\n");
i=0;
while(fread(&Show,sizeof(candidate),1,fp)!=(int)NULL)
{
if(m==0)
printf("\n%ld\t\t%s\t\t%-8s\t\t\n",Show.Number,Show.Name,Show.intro);
printf("",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;
printf("请输入要查找编号:\n");
scanf("%d",&m);
if(m==0)
return;
getchar();
fp=fopen(name,"rb");
for(i=0;i<count;i++)
{
if(a[i].Number==m)
{
printf("简介:%s\n",a[i].intro);
}
}
fclose(fp);
printf("是否继续 (Y/N):");
n=getchar();
getchar();
if(n=='y'||n=='Y')
goto again;
else if(n=='n'||n=='N')
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -