#include<stdio.h>
#define SIZE 20
struct athlete_type
{
char name[10];
int num;
long votes;
}ath[SIZE];
void back_sel()//返回首页
{ void select();
int a;
printf("输入数字0返回首页\n");
scanf("%d",&a);
if(a==0)
{
system("cls");
select();
}
else
{
printf("囧囧囧无效指令囧囧囧!\n");
back_sel();
}
}
void display1()//首页
{
printf(" ●●●●●●●●●●●●●●●●\n");
printf(" ● 十佳运动员投票系统 ●\n");
printf(" ● ●\n");
printf(" ●●●●●●●●●●●●●●●●\n");
printf("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n\n");
printf(" 1.查看十佳运动员候选者名单\n\n");
printf(" 2.进入投票界面,为候选者投票\n\n");
printf(" 3.查看十佳运动员投票结果\n\n");
printf(" 4.超级管理员登录\n\n");
printf(" 5.退出(请通过本项正确退出系统,强制退出会造成文件内容丢失)\n\n");
printf("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf(" Copyright09.5.12\n");
printf("\n");
printf("请选择以上五项之一,输入后按回车进入下一步:");
}
void f_read()//读文件,查看原始候选人名单
{
FILE *fl;
int i;
if((fl=fopen("ath_list","rb"))==NULL)
{
printf("不能打开文件,请检查是否存在\n");
return;
}
printf("姓名 编号 票数\n");
for(i=0;i<SIZE;i++)
{
fread(&ath[i],sizeof(struct athlete_type),1,fl);
printf("%-10s %4d %8d\n",ath[i].name,ath[i].num,ath[i].votes);
}
fclose(fl);
}
void admirin_save()//管理员输入数据并将数据存盘
{
FILE *fl;
int i;
if((fl=fopen("ath_list","wb"))==NULL)
{
printf("不能打开文件,请检查磁盘空间\n");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&ath[i],sizeof(struct athlete_type),1,fl)!=1)
printf("文件写入失败\n");
fclose(fl);
}
void admirin()//管理员录入数据界面
{
int i;
printf("请依次输入候选运动员名称:\n");
for(i=0;i<SIZE;i++)
scanf("%s%d%d",ath[i].name,&ath[i].num);
}//管理员加入admirin_save()完成录入,为保护数据暂时不用
void admir()//管理员界面登录++++
{
int a,b;
printf("管理员名称:");
scanf("%d",&a);
while(a!=888)
{
printf("\n!!查无此管理员!!\n请重新输入管理员名称:");
scanf("%d",&a);
}
printf("\n****欢迎管理员VIP登入****\n请键入密码:");
scanf("%d",&b);
while(b!=888)
{
printf("\n!!您键入的密码有误!!\n请重新输入:");
scanf("%d",&b);
}
system("cls");//清屏
printf("\n****恭喜您登入成功!****\n");
printf("\n****为保护数据安全,暂时无法录入数据,请修改源代码解除写保护状态再录入******\n");
back_sel();
admirin();
}
void paixv()//查看十佳候选人排名,票数由高到低
{
FILE *fl;
int i,j,t;
struct athlete_type k;
if((fl=fopen("ath_list","rb"))==NULL)
{
printf("不能打开文件,请检查是否存在\n");
return;
}
printf("姓名 编号 票数\n");
for(t=0;t<SIZE;t++)
{
fread(&ath[t],sizeof(struct athlete_type),1,fl);
}
for(j=0;j<(SIZE-1);j++)
for(i=0;i<(SIZE-j-1);i++)
if((ath[i].votes)<(ath[i+1].votes))
{
k=ath[i];
ath[i]=ath[i+1];
ath[i+1]=k;
}
for(i=0;i<SIZE;i++)
printf("%-10s %4d %8d\n",ath[i].name,ath[i].num,ath[i].votes);
fclose(fl);
back_sel();
}
void f2_write()
{
FILE *f2;//f2用来写文件
int k;
if((f2=fopen("ath_list","wb"))==NULL)
{
printf("不能打开文件,请检查是否存在\n");
return;
}
for(k=0;k<SIZE;k++)
{
fwrite(&ath[k],sizeof(struct athlete_type),1,f2);
}
fclose(f2);
}
void voting()//投票界面
{
FILE *fl;//fl用来读文件
int i,j,t;
if((fl=fopen("ath_list","rb"))==NULL)
{
printf("不能打开文件,请检查是否存在\n");
return;
}
for(i=0;i<SIZE;i++)
{
fread(&ath[i],sizeof(struct athlete_type),1,fl);
}
fclose(fl);
for(j=0;j<3;j++)
{
scanf("%d",&t);
if(t<=SIZE&&t>0)
{
ath[t-1].votes++;
printf("您为候选运动员%s投了一票,感谢支持!\n",ath[t-1].name);
f2_write();
}
else
{
printf("为防止恶意刷票行为,请返回首页重新进入投票系统\n");
back_sel();
}
}
printf("\n*****您的3次投票机会已用完,谢谢对本次活动的支持!****\n");
back_sel();
}
void select()//首页界面选择
{
int a;
display1();
scanf("%d",&a);
switch(a)
{
case 1:
system("cls");
printf("******以下排名不分先后******\n");
f_read();
back_sel();
f_read();break;
case 2:system("cls");
printf("********每次进入投票界面您只有3次投票机会,谢谢合作*******\n");
printf("\n");
printf("\n");
printf("请输入你将要投票候选人的编号(1-20的整数):");
voting();break;
case 3:system("cls");paixv();break;
case 4:system("cls");admir();break;
case 5:exit(0);
default:
system("cls");
printf(" \n\n 囧囧囧囧囧请看要求后输入1-5的整数囧囧囧囧囧\n\n");
select();
break;
}
}
void main()
{
select();
}
评论6
最新资源