游戏注册系统

//定义函数头文件 

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

//定义全局变量 

int n=0,h,k;

//建立game文件 

FILE *fp;

//定义结构体数组 

struct game

{

char gamename[20];//昵称 

char realname[20];//真实姓名 

char qq[12];//游戏账号就是qq账号 

char qqemail[20];//qq邮箱 

char sex[8];//性别 

char mm[20];//密码(mm是密码的缩写) 

char amm[20];//确认密码(a是affirm的缩写) 

char nation[20];//国籍 

char id[20];//ID 

char phone[12]; //手机 

}user[1000000];//最多可以注册100万个玩家 

 

//按0进入帮助界面 

void help()

{

system("cls");

system("color g");

system("cls");

system("color 1c");

char a;

printf("\n\t\t欢迎使用辉志鹏游戏注册系统帮助;");

    printf("\n\t\t按照菜单提示键输入数字代号;");

    printf("\n\t\t增加学生信息后,切记保存按4;");

    printf("\n\t\t修改时请先读入文件;");

    printf("\n\t\t谢谢您的使用!");

    printf("按任意键返回主菜单:");

    system("pause");

    scanf("%c",&a);

    return;

}

 

//按1注册 

void regist()              //每次只能注册一次 

{                          //当再次注册时qq账号一样就不能保存成功 

system("cls");

system("color 2b");

int i=n,q=0,j,l=0,m,p; //l用与判断,m,j用于选择 

char a,man[4]={'m','a','n','\0'},woman[7]={'w','o','m','a','n','\0'};

loop1:                 //i,k,p用来记录玩家数目  

printf("\n\n");

if(q==0)

{

sex0:

printf("请输入性别(man或woman):");

scanf("%s",user[i].sex);

if(strcmp(user[i].sex,man)!=0&&strcmp(user[i].sex,woman)!=0)

{

printf("输入有误请再次输入:\n");

goto sex0;

}

gamename0:

       printf("请输入玩家姓名:");

           scanf("%s",user[i].gamename);

           if(strlen(user[i].gamename)>20)

            {

            printf("输入有误请再次输入:\n");

            goto gamename0;

            }

            for(p=0;p<=i-1;p++)

            {

            if(strcmp(user[i].gamename,user[p].gamename)==0)

            {

            printf("该昵称已经存在,请再次输入:\n");

            goto gamename0;

            }

            }

            realname0:

        printf("请输入真实姓名:");

       scanf("%s",user[i].realname);

       if(strlen(user[i].realname)>20)

       {

       printf("输入有误请再次输入:\n");

       goto realname0;

       }

       for(p=0;p<=i-1;p++)

       {

       if(strcmp(user[i].realname,user[p].realname)==0)

       {

       printf("该姓名已经存在,请再次输入:\n");

       goto realname0;

       }

       }

       qq0:

           printf("请输入账号:");

           scanf("%s",user[i].qq);

           if(strlen(user[i].qq)>12||strlen(user[i].qq)<6)

           {

           printf("输入有误请再次输入:\n");

           goto qq0;

           }

           for(j=0;j<strlen(user[i].qq);j++)

           {

           if(user[i].qq[j]-'0'<=9&&user[i].qq[j]-'0'>=0)

               l=0;

           else

           {

           l++;break;

           }

           }

           if(l!=0)

           {

           l=0;

           printf("输入有误请再次输入:\n");

           goto qq0;

           }

           for(p=0;p<=i-1;p++)

           {

           if(strcmp(user[i].qq,user[p].qq)==0)

           {

           printf("该账号已被注册,请再次输入:\n");

           goto qq0;

           }

           }

           mm0:

       printf("请输入密码:");

       scanf("%s",user[i].mm);

       if(strlen(user[i].mm)>20)

       {

       printf("输入有误请再次输入:\n");

       goto mm0;

       }

   amm0:

       printf("确认密码:");

        scanf("%s",user[i].amm);

        if(strlen(user[i].amm)>20)

        {

        printf("输入有误请再次输入:\n");

        goto amm0;

        }

        if(strcmp(user[i].amm,user[i].mm)!=0)

        {

        printf("两次输入的密码不一致,请再次输入:\n");

        goto amm0;

        }

        qqemail0:

char mail[12];

       printf("请输入qq邮箱:");

       scanf("%s",user[i].qqemail);//757395100  2636706907  1007849784  

       int z=strlen(user[i].qqemail);

if(z<=20||z>=13)

       {

       for(j=0;j<z-7;j++)

       {

       if((user[i].qqemail[j]-'0')<=9&&(user[i].qqemail-'0')>=0)

           l=0;

       else

       {

       l++;break;

       }

       mail[j]=user[i].qqemail[j];

       }

       j=z-7;

       if(user[i].qqemail[j++]!='@')

           l++;

       if(user[i].qqemail[j++]!='q')

           l++;

       if(user[i].qqemail[j++]!='q')

           l++;

       if(user[i].qqemail[j++]!='.')

           l++;

       if(user[i].qqemail[j++]!='c')

           l++;

       if(user[i].qqemail[j++]!='o')

           l++;

       if(user[i].qqemail[j]!='m')

           l++;

       }

       if(strcmp(mail,user[i].qq)!=0)

       l++;

       if(l!=0)

       {

       printf("输入有误请再次输入:\n");

       goto qqemail0;

       }

       for(p=0;p<=i-1;p++)

       {

       if(strcmp(user[i].qqemail,user[p].qqemail)==0)

       {

       printf("该邮箱已被注册,请再次输入:\n");

       goto qqemail0;

       }

       }

       phone0:

       printf("请输入您的手机号码:");

       scanf("%s",user[i].phone);

if(strlen(user[i].phone)!=11)

{

printf("输入有误请再次输入:\n");

goto phone0;

}

for(j=0;j<strlen(user[i].phone);j++)

{

if(user[i].phone[j]-'0'>=0&&user[i].phone[j]-'0'<=9)

l=0;

else

{

l++;break;

}

}

if(l!=0)

{

l=0;

printf("输入有误请再次输入:\n");

goto phone0;

}

id0:

       printf("请输入ID:");

       scanf("%s",user[i].id);

       if(strlen(user[i].id)!=18)

       {

       printf("输入有误请再次输入:\n");

       goto id0;

       }

int v=strlen(user[i].id)-1;

       for(j=0;j<v;j++)

       {

       if((user[i].id[j]-'0')>=0&&(user[i].id[j]-'0')<=9)

       l=0;

       else

       {

       l++;break;

       }

       }

       if(l!=0)

       {

       l=0;

       printf("输入有误请再次输入:\n");

       goto id0;

       }

       for(p=0;p<=i-1;p++)

       {

       if(strcmp(user[i].id,user[p].id)==0)

       {

       printf("该ID已经存在,请再次输入:\n");

       goto id0;

       }

       }

       nation0:

       printf("请输入国籍:");

       scanf("%s",user[i].nation);

       if(strlen(user[i].nation)>20)

       {

       printf("输入有误请再次输入:\n");

       goto nation0;

       }

   i++;    //每注册一次就加一次 

}

    n=i;           //注册一次就记录总数一次 

    if(n+1>1000000)

    {

    q=1;

printf("人数已达上限!以后不能再注册!");

    }

else

{

q=0;

   printf("注册成功!\n");

}

select0:

printf("是否继续注册?1-是;2-否\n");

printf("请输入你的选择:"); 

scanf("%d",&m);

if(m==1)

   goto loop1;

else if(m==2)

{

printf("\n\t\t按任意键返回主菜单.");

scanf("%c",&a);

return;   //结束函数返回主菜单 

}  

else

{

printf("输入有误请再次输入:\n");

goto select0;

}

}

 

//按2修改密码 

void revicemm()

{

system("cls");

system("color 3c");

printf("\n\n");

int i,k,l=0;

char mm[20],qq[12],a;

qq1:

printf("请输入你的账号:");

scanf("%s",qq);

for(i=0;i<n;i++)

{

if(strcmp(qq,user[i].qq)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该账号不存在,请再次输入:\n");

goto qq1;

}

mm1:

printf("请输入原密码:");

scanf("%s",mm);

if(strcmp(mm,user[h].mm)!=0)

{

printf("密码不正确,请再次输入:\n");

goto mm1;

}

mm2:

printf("请输入新密码:");

scanf("%s",user[h].mm);

if(strcmp(user[h].mm,mm)==0)

{

printf("新密码不能与旧密码相同!\n");

goto mm2;

}

else 

{

strcpy(user[h].amm,user[h].mm);

printf("\n\t\t修改密码成功!");

}

select1:

printf("是否继续修改密码?1-是;2否\n");

printf("请输入你的选择:");

scanf("%d",&k);

if(k==1)

goto qq1;

else if(k==2)

{

printf("\n\t\t按任意键返回主菜单.");

scanf("%c",&a);

system("pause");

system("cls");

return;

}

else

{

printf("输入有误请再次输入:\n");

goto select1;

}

}

 

//封号次级调用函数 

void remove()

{

int j;    //后面往前面覆盖 

for(j=h;j<n-1;j++)

user[j]=user[j+1];

n--;//是删除一次减一次总数 

}

 

//按3键封号 

void deleteone()

{

system("cls");

system("color 4b");

printf("\n\n");

int i,j,k,l=0;

char a,realname[20],gamename[20],id[20],qq[12];

select1:

printf("1-按姓名删除\n");

printf("2-按游戏昵称删除\n");

printf("3-按ID删除\n");

printf("4-按QQ号删除\n");

printf("5-退出本菜单\n");

printf("请输入你的选择:");

scanf("%d",&j);

switch(j)

{

case 1:

realname1:

printf("请输入姓名:");

scanf("%s",realname);

for(i=0;i<n;i++)

{

if(strcmp(realname,user[i].realname)==0)

{

h=i;l++;break;

}

else

   l=0;

}

if(l==0)

{

printf("该姓名不存在,请再次输入:\n");

goto realname1;

}

else

   remove();

break;

case 2:

gamename1:

printf("请输入昵称:");

scanf("%s",gamename);

for(i=0;i<n;i++)

{

if(strcmp(gamename,user[i].gamename)==0)

{

h=i;l++;break;

}

else

l++;

}

if(l==0)

{

printf("改昵称不存在,请再次输入:\n");

goto gamename1;

}

else

   remove();

break;

case 3:

   id1:

printf("请输入ID:");

scanf("%s",id);

for(i=0;i<n;i++)

{

if(strcmp(id,user[i].id)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该ID不存在,请再次输入:\n");

goto id1;

}

else

remove();

break;

case 4:

qq2:

printf("请输入QQ号:");

scanf("%s",qq);

for(i=0;i<n;i++)

{

if(strcmp(qq,user[i].qq)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该QQ号不存在,请再次输入:\n");

goto qq2; 

}

else

remove();

break;

case 5:

return;

default:

printf("选择有误请再次输入:\n");

goto select1;

}

printf("\n\t\t账号已封锁成功!");

select2:

printf("是否继续封锁个人信息?1-是;2-否\n");

printf("请输入你的选择:");

scanf("%d",&k);

if(k==1)

   goto select1;

else if(k==2)

{

printf("\n\t\t按任意键返回主菜单.");

scanf("%c",&a);

return;

}

else

{

printf("你的输入有误,请再次输入:\n");

goto select2;

}

}

 

//按4键保存 

void save()

{

system("cls");

system("color 5f");

    int i;

    FILE *fp;

    fp=fopen("game.txt","wb"); //写入

    for(i=0;i<n;i++)

{

        if(fwrite(&user[i],sizeof(struct game),1,fp)!=1)

        printf("\n\t\t写入文件错误!");

}

    fclose(fp);

    printf("\n\n\t\t\n保存成功!");

    system("pause");

    system("cls");

}

 

//修改次级函数 

void change()

{

system("cls");

system("color 6e");

int i,a;

printf("\n\t\t       该游戏玩家的信息如下         ");

printf("\n\t\t************************************");

printf("\n\t\t**     游戏昵称:%s",user[h].gamename);

printf("\n\t\t**     真实姓名:%s",user[h].realname);

printf("\n\t\t**     QQ号码:%s",user[h].qq);

printf("\n\t\t**     邮箱:%s",user[h].qqemail);

printf("\n\t\t**     性别:%s",user[h].sex);

printf("\n\t\t**     国籍:%s",user[h].nation);

printf("\n\t\t**     ID:%s",user[h].id);

printf("\n\t\t**     手机号:%s",user[h].phone);

printf("\n\t\t************************************");

printf("\n请输入新的信息:");

system("pause");

printf("\n\t\t1-修改昵称");

printf("\n\t\t2-修改姓名");

printf("\n\t\t3-修改性别");

printf("\n\t\t4-修改国籍");

printf("\n\t\t5-修改ID");

printf("\n\t\t6-修改电话");

printf("\n\t\t7-退出该菜单");

revice:

printf("\n\t\t请选择:");

scanf("%d",&a);

switch(a)

{

            case 1:

                printf("\n请输入新的昵称:");

                scanf("%s",user[h].gamename);

                break;

            case 2:

                printf("请输入新的姓名:");

                scanf("%d",&user[h].realname);

break;

            case 3:

                printf("请输入新的性别:");

                scanf("%s",user[h].sex);

break;

            case 4:

                printf("请输入新的国籍:");

                scanf("%s",user[h].nation);

                break;

            case 5:

                printf("请输入新的ID:");

                scanf("%s",user[h].id);

                break;

            case 6:

                printf("请输入新的电话号码:");

                scanf("%s",user[h].phone);

                break;

            case 7:return;

            default:

printf("请在1-7之间选择\n");

goto revice;

}

printf("个人信息修改成功!\n");

}

 

//按5键修改个人信息 

void revice()

{

system("cls");

system("color 8c");

printf("\n\n");

int i,j,k,l=0;

char a,realname[20],gamename[20],id[20],qq[12],phone[11];

select3:

printf("1-按姓名修改\n");

printf("2-按昵称修改\n");

printf("3-按ID修改\n");

printf("4-按QQ修改\n");

printf("5-按电话修改\n");

printf("6-退出本菜单\n");

printf("请输入你的选择:");

scanf("%d",&j);

switch(j)

{

case 1:

realname2:

printf("请输入姓名:");

scanf("%s",realname);

for(i=0;i<n;i++)

{

if(strcmp(realname,user[i].realname)==0)

{

l++;h=i;break;

}

else

l=0;   

}

if(l==0)

{

printf("该姓名不存在,请再次输入:\n");

goto realname2;

}

else

   change();

   break;

case 2:

gamename2:

printf("请输入游戏昵称:");

scanf("%s",gamename);

for(i=0;i<n;i++)

{

if(strcmp(gamename,user[i].gamename)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("改昵称不存在,请再次输入:\n");

goto gamename2;

}

else

   change();

break;

case 3:

   id2:

printf("请输入ID:");

scanf("%s",id);

for(i=0;i<n;i++)

{

if(strcmp(id,user[i].id)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该ID不存在,请再次输入:\n");

goto id2;

}

else

   change();

break;

case 4:

qq3:

printf("请输入QQ号:");

scanf("%s",qq);

for(i=0;i<n;i++)

{

if(strcmp(qq,user[i].qq)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该QQ号不存在,请再次输入:\n");

goto qq3; 

}

else

change();

break;

case 5:

phone1:

printf("请输入手机号:");

scanf("%s",phone);

for(i=0;i<n;i++)

{

if(strcmp(phone,user[i].phone)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该手机号不存在,请再次输入:\n");

goto phone1;

}

else

   change();

break;

case 6:

return;

default:

printf("选择有误请再次输入:\n");

goto select3;

}

select4:

printf("是否继续修改?1-是;2-否\n");

printf("请输入你的选择:");

scanf("%d",&k);

if(k==1)

   goto select3;

else if(k==2)

   {

   printf("\n\t\t按任意键返回主菜单.");

scanf("%c",&a);

return;

   }

else

{

printf("你的输入有误,请再次输入:\n");

goto select4;

}

}

 

//显示某一个 

void showone()

{

system("cls");

system("color 2b");

printf("\n\t\t       该游戏玩家的信息如下         ");

printf("\n\t\t************************************");

printf("\n\t\t**     游戏昵称:%s",user[h].gamename);

printf("\n\t\t**     真实姓名:%s",user[h].realname);

printf("\n\t\t**     QQ号码:%s",user[h].qq);

printf("\n\t\t**     邮箱:%s",user[h].qqemail);

printf("\n\t\t**     性别:%s",user[h].sex);

printf("\n\t\t**     国籍:%s",user[h].nation);

printf("\n\t\t**     ID:%s",user[h].id);

printf("\n\t\t**     手机号:%s",user[h].phone);

printf("\n\t\t************************************");

printf("\n\n");

system("pause");

}

 

//按6键找回密码

void findmm()

{

system("cls");

system("color 5b");

int i,l=0;

char phone[12];

findmm0:

printf("\n\t\t请输入你的手机号:");

scanf("%s",phone);

for(i=0;i<n;i++)

{

if(strcmp(phone,user[i].phone)==0)

{

h=i;l++;break;

}

}

printf("\n\t\t您的密码如下,请勿泄露密码给他人:\n");

printf("%s",user[h].mm);

findmm1:

int a;

printf("\n\t\t是否继续找回?1-是;2-否");

printf("\n\t\t请输入你的选择:");

scanf("%d",&a);

switch(a)

{

case 1:

goto findmm0;break;

case 2:

system("cls");return;

case 3:

printf("\n\t\t请在1和2之间选择:");

goto findmm1;

break;

}

 

//按7键找回信息 

void find()

{

system("cls");

system("color 9c");

printf("\n\n");

int i,j,l=0,k;

char a,realname[20],gamename[20],id[20],qq[12],phone[11];

select5:

printf("1-按姓名找回\n");

printf("2-按游戏昵称找回\n");

printf("3-按ID找回\n");

printf("4-按QQ号找回\n");

printf("5-按手机号找回\n");

printf("6-退出本菜单\n");

printf("请输入你的选择:");

scanf("%d",&j);

switch(j)

{

case 1:

realname3:

printf("请输入姓名:");

scanf("%s",realname);

for(i=0;i<n;i++)

{

if(strcmp(realname,user[i].realname)==0)

{

l++;h=i;break;

}

else

l=0;   

}

if(l==0)

{

printf("该姓名不存在,请再次输入:\n");

goto realname3;

}

else

   showone();

break;

case 2:

gamename4:

printf("请输入游戏昵称:");

scanf("%s",gamename);

for(i=0;i<n;i++)

{

if(strcmp(gamename,user[i].gamename)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("改昵称不存在,请再次输入:\n");

goto gamename4;

}

else

   showone();

break;

case 3:

   id3:

printf("请输入ID:");

scanf("%s",id);

for(i=0;i<n;i++)

{

if(strcmp(id,user[i].id)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该ID不存在,请再次输入:\n");

goto id3;

}

else

   showone();

break;

case 4:

qq4:

printf("请输入QQ号:");

scanf("%s",qq);

for(i=0;i<n;i++)

{

if(strcmp(qq,user[i].qq)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该QQ号不存在,请再次输入:\n");

goto qq4; 

}

else

showone();

break;

case 5:

phone1:

printf("请输入手机号:");

scanf("%s",phone);

for(i=0;i<n;i++)

{

if(strcmp(phone,user[i].phone)==0)

{

l++;h=i;break;

}

else

   l=0;

}

if(l==0)

{

printf("该手机号不存在,请再次输入:\n");

goto phone1;

}

else

   showone();

break;

case 6:

return;

default:

printf("选择有误请再次输入:\n");

goto select5;

}

select6:

printf("是否继续找回个人信息?1-是;2-否\n");

printf("请输入你的选择:");

scanf("%d",&k);

if(k==1)

   goto select5;

else if(k==2)

{

printf("\n\t\t按任意键返回主菜单.");

scanf("%c",&a);

return;

}

else

{

printf("你的输入有误,请再次输入:\n");

goto select6;

}

}

 

//读入 

void read()

{

system("cls");

system("color 3c");

char j,i;

if((fp=fopen("game.txt","rb"))==NULL)

{

printf("\n\t\t******************************");

printf("\n\t\t                              ");

printf("\n\t\t           文件不存在!       ");

printf("\n\t\t                              ");

printf("\n\t\t******************************");

exit(0);

}

fseek(fp,0,2);//文件位置移动到指针末尾 

if(ftell(fp)>0)//文件不能为空 

{

rewind(fp);//文件指针移动到文件的开始位置 

for(n=0;!feof(fp)&&fread(&user[n],sizeof(struct game),1,fp);n++);

printf("\n\t\t*************************");

printf("\n\t\t*                       *");

printf("\n\t\t*                       *");

printf("\n\t\t*     文件导入成功      *");

printf("\n\t\t*                       *");

printf("\n\t\t*                       *");

printf("\n\t\t*************************");

printf("\n\t\t     按任意键返回主菜单!");

printf("\n\t\t       请选择:     ");

scanf("%c",&j);

system("pause");

return;

}

else

{

printf("\n\t\t************************");

printf("\n\t\t*                      *");

printf("\n\t\t*                      *");

printf("\n\t\t*    文件导入成功!    *");

printf("\n\t\t*  通讯录中无任何数据!*");

printf("\n\t\t*                      *");

printf("\n\t\t*                      *");

printf("\n\t\t************************");

printf("\n\t\t 按任意键返回主菜单:");

scanf("%c",&i);

system("pause");

return;

}

}

 

//先进入主菜单 

void menu()

{

system("cls");

system("color 4b");

int a;

loop0:

printf("\n\t\t*****************************");

printf("\n\t\t0.帮助");

printf("\n\t\t1.注册");

printf("\n\t\t2.修改密码");

printf("\n\t\t3.封锁某个账号");

printf("\n\t\t4.保存");

printf("\n\t\t5.修改个人信息");

printf("\n\t\t6-找回密码");

printf("\n\t\t7.找回个人信息");

printf("\n\t\t8.读入文件");

printf("\n\t\t9.退出系统");

printf("\n\t\t*****************************");

printf("请选择:");

scanf("%d",&a);

switch(a)

{

case 0:

help();break;

case 1:

regist();break;

case 2:

revicemm();break;

case 3:

deleteone();break;

case 4:

save();break;

case 5:

revice();break;

case 6:

findmm();break;

case 7:

find();break;

case 8:

read();break;

case 9:

int j;

char a;

select7:

printf("是否退出?1-是;2-否\n");

printf("请输入你的选择:");

scanf("%d",&j);

if(j==1)

k=0;

else if(j==2)

{

goto loop0;

system("cls");

}

else

{

printf("输入有误请再次输入:\n");

goto select7;

}

break;

default:

printf("输入有误,请再次输入:\n");

goto loop0;

}

}

 

//主函数 

main()

{

begin:

int a;

printf("按一键进入主菜单:");

scanf("%d",&a);

if(a==1)

k=1;

else

{

printf("输入有误请再次输入:\n");

goto begin;

}

while(k)

menu();

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值