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

📄 student.c

📁 学生通讯录管理系统
💻 C
📖 第 1 页 / 共 2 页
字号:
#include<string.h>
#include<stdio.h>
void denglu();void save();void zhuce0();int cherk(char shuzi[]);  //函数声明
int cherk1(char zimu[]);int cherk2(char zimushuzi[]);
int cherk3(char youxiang[]);void save1();void guanli();void jiemian();
void daying();void chaxun();void printall();void tongji();void xiugaipw();
void xiugai();void shanchu();

struct zhuce
{
 char name[16];
 char password[16];}zhuce,zhuce1[30],jiancha;
struct xinxi
{
	char number[13],name[21],banji[21],dormphone[9],
	quhao[5],familyphone[9],mobilephone[12],
	email[31],address[51],youbian[7];
}xinxi,jiancha0,xinxi0[30];

main()
{
 int xuhao;
 printf("\n\n**********************@^_^@欢迎使用学生通讯录管理系统@^_^@**********************\n");
 printf("\n\n\n\n");
 printf("\n                             1:登      陆\n\n");
 printf("\n                             2:注册新用户\n\n");
 printf("\n\n\n\n");
 printf("\n**********************@@@@@欢迎使用学生通讯录管理系统@@@@@**********************\n");
 printf("请选择你需要服务的序号:");
 scanf("%d",&xuhao);
 getchar();
 while(xuhao>2)
 {
	printf("\n你输入有误 请重新输入:");
    scanf("%d",&xuhao);
    getchar();
 }
switch(xuhao)
{
 case 1:denglu();break;
 case 2:zhuce0();break;
}
}
void save() //保存数据
 {
    FILE*fp;
    if((fp=fopen("stu_list","ab"))==NULL)
	{
       printf("不能打开这个文件\n");
       return;
     }
       if(fwrite(&zhuce,sizeof(struct zhuce),1,fp)!=1)
         printf("文件写入错误\n");
     fclose(fp);
  }

void zhuce0()   //注册函数
{
  char password[16];
  int leap=0,leap1=0,i,str=0,str1=0;
  do
  {
  printf("请输入一个用户名('a-z,0-9'16个字符内):\n");
  gets(zhuce.name);
  while((strlen(zhuce.name))>17)
  {	  
   printf("\n你输入的字符超过限制,请重新输入:\n\n");
   gets(zhuce.name);
  }
  str=0;
  str=strlen(zhuce.name);
  for(i=0,str1=0;i<=str;i++)
  {
	  if((zhuce.name[i]>='a'&&zhuce.name[i]<='z')||(zhuce.name[i]>='0'&&zhuce.name[i]<='9')) 
		  str1++;
  }
   if(str1!=str||str1==0) 
	  {printf("你输入的用户名为空或含有非法字符,请重新输入\n\n");leap=1;}
   else leap=0;
  }
  while(leap==1);
  do
  {
   printf("\n请输入一个密码('a-z,0-9')16个字符内:\n");
   gets(zhuce.password);
   printf("\n请再输入一次:\n");
   gets(password);
   if(strcmp(zhuce.password,password)==0) 
   {system("cls");printf("注册成功\n");
   printf("你的用户名为:%s\n\n你的密码为:%s\n\n请牢记你的用户名及密码\n\n登陆:\n",
	   zhuce.name,zhuce.password);save();denglu(); break;}
   else {printf("\n很抱歉 两次输入的密码不同 请重新输入\n");leap1=1;}
  }while(leap1==1);
}

void denglu()  //登陆函数
{
  int i=0,j;
  FILE*fp;
  do
  {
    printf("\n请输入用户名:\n");
	gets(zhuce.name);
	printf("\n请输入密码:\n");
    gets(zhuce.password);
    fp=fopen("stu_list","rb");
	rewind(fp);
    do
    {
	  fread(&jiancha,sizeof(struct zhuce),1,fp);
      if(strcmp(zhuce.name,jiancha.name)==0&&
	  strcmp(zhuce.password,jiancha.password)==0) 
	  {i=0;system("cls");jiemian();break;}  
	  else i=1;
   }while(!feof(fp));
   if(i==1) {printf("\n你输入的用户名或密码有误\n");
   printf("\n1:重新输入?  2:注册新用户?\n");
   do
   {
	   scanf("%d",&j);getchar();
       if(j==1) i=1;
	   else if(j==2) zhuce0();
	        else printf("\n你选择有误 请重新输入:\n");
   }while(j>2);
   }
}while(i==1);
fclose(fp);
}

int cherk(char shuzi[])//管理
{
	int leap,str,str1=0,i;
    for(i=0;i<(str=strlen(shuzi));i++)
	{
		if((shuzi[i]>='0')&&(shuzi[i]<='9')) str1++;
	}
	if(str!=str1)
	{   
		printf("\n对不起,你仅能输入数字\n");
		leap=1;
		return(leap);
	}
	else {leap=0;return(leap);}
}
int cherk1(char zimu[])
{
	int leap,str,str1=0,i;
    for(i=0;i<(str=strlen(zimu));i++)
	{
		if((zimu[i]>='a')&&(zimu[i]<='z')) str1++;
	}
	if(str!=str1)
	{   
		printf("\n对不起,你仅能输入字母\n");
		leap=1;
		return(leap);
	}
	else {leap=0;return(leap);}
}
int cherk2(char zimushuzi[])
{
	int leap,str,str1=0,i;
    for(i=0;i<(str=strlen(zimushuzi));i++)
	{
		if(((zimushuzi[i]>='a')&&(zimushuzi[i]<='z'))||
			((zimushuzi[i]>='0')&&(zimushuzi[i]<='9'))||zimushuzi[i]==' ') str1++;
	}
	if(str!=str1)
	{   
		printf("\n对不起,你仅能输入字母或数字\n");
		leap=1;
		return(leap);
	}
	else {leap=0;return(leap);}
}
int cherk3(char youxiang[])
{
	int leap,str,str1=0,i;
    for(i=0;i<(str=strlen(youxiang));i++)
	{
		if(((youxiang[i]>='a')&&(youxiang[i]<='z'))||
			((youxiang[i]>='0')&&(youxiang[i]<='9'))||
			youxiang[i]=='.'||youxiang[i]=='@') str1++;
	}
	if(str!=str1)
	{   
		printf("\n对不起,你仅能输入字母,数字,'.','@'\n");
		leap=1;
		return(leap);
	}
	else {leap=0;return(leap);}
}
void save1()
 {
    FILE*fp;
    if((fp=fopen("stu_xinxi","ab"))==NULL)
        {
           printf("不能打开文件\n");
           return;
           }
         if(fwrite(&xinxi,sizeof(struct xinxi),1,fp)!=1)
            printf("文件写入错误\n");
          fclose(fp);
          }
		
void guanli() //建立 增加学生通讯录函数
{
	int leap,xuhao;
	do
	{
        printf("\n请输入学号(12位):\n");
        gets(xinxi.number);
		while(strlen(xinxi.number)!=12)
		{
			printf("\n你输入的学号位数不符合12位的要求,请重新输入:\n");
            gets(xinxi.number);
		}
	leap=cherk(xinxi.number);
	}
	while(leap==1);
    do
	{
        printf("\n请输入姓名(20个字符内,a~z):\n");
	    gets(xinxi.name);
        while(strlen(xinxi.name)>20)
		{
			printf("\n你输入的姓名长度超过限制,请重新输入:\n");
            gets(xinxi.name);
		}
        leap=cherk1(xinxi.name);
	}
	while(leap==1);
	do
	{
        printf("\n请输入所在班级:\n");
	    gets(xinxi.banji);
        while(strlen(xinxi.banji)>20)
		{
			printf("\n你输入的长度超过限制,请重新输入:\n");
            gets(xinxi.banji);
		}
    leap=cherk2(xinxi.banji);
    }while(leap==1);
	do
	{
        printf("\n请输入宿舍电话(8位以内):\n");
	    gets(xinxi.dormphone);
        while(strlen(xinxi.dormphone)>8)
		{
			printf("\n你输入的号码长度超过限制,请重新输入:\n");
            gets(xinxi.dormphone);
		}
    leap=cherk(xinxi.dormphone);
	}while(leap==1);
	do
	{
       printf("\n请输入家庭所在地的电话区号(4位以内):\n");
	   gets(xinxi.quhao);
       while(strlen(xinxi.quhao)>4)
		{
			printf("\n你输入的电话区号长度超过限制,请重新输入:\n");
            gets(xinxi.quhao);
		}
    leap=cherk(xinxi.quhao);
	}while(leap==1);
    do
	{
	    printf("\n请输入家庭电话号码(8位以内):\n");
	    gets(xinxi.familyphone);
        while(strlen(xinxi.familyphone)>8)
		{
			printf("\n你输入的电话号码长度超过限制,请重新输入:\n");
            gets(xinxi.familyphone);
		}
    leap=cherk(xinxi.familyphone);
	}while(leap==1);
    do
	{
       printf("\n请输入手机号码(11位):\n");
	   gets(xinxi.mobilephone);
       while(strlen(xinxi.mobilephone)>11)
		{
			printf("\n你输入的手机号码长度超过限制,请重新输入:\n");
            gets(xinxi.mobilephone);
		}
    leap=cherk(xinxi.mobilephone);
	}while(leap==1);
	do
	{
        printf("\n请输入电子邮箱(30个字符以内,a~z,0~9,'.','@'):\n");
	    gets(xinxi.email);
        while(strlen(xinxi.email)>30)
		{
			printf("\n你输入的邮箱长度超过限制,请重新输入:\n");
            gets(xinxi.email);
		}
    leap=cherk3(xinxi.email);
	}while(leap==1);
    do
	{
        printf("\n请输入家庭地址:\n");
	    gets(xinxi.address);
        while(strlen(xinxi.address)>50)
		{
			printf("\n你输入的地址长度超过限制,请重新输入:\n");
            gets(xinxi.address);
		}
    leap=cherk2(xinxi.address);
    }while(leap==1);
    do
	{
	   printf("\n请输入家庭所在地的邮政编码(6位):\n");
	   gets(xinxi.youbian);
       while(strlen(xinxi.youbian)!=6)
		{
			printf("\n你输入的邮政编码不符合要求(6位),请重新输入:\n");
            gets(xinxi.youbian);
		}
    leap=cherk(xinxi.youbian);
	}while(leap==1);
daying();   
save1();
system("cls");
printf("\n请选择你需要服务的序号:1:继续录入   2:返回管理界面\n");
scanf("%d",&xuhao);
getchar();
 while(xuhao>2)
 {
	printf("\n你输入有误 请重新输入:");
    scanf("%d",&xuhao);
    getchar();
 }
switch(xuhao)
{
case 1:system("cls");guanli();break;
case 2:system("cls");jiemian();break;
}
}

void jiemian() //管理界面
{
   int xuhao;
   printf("\n**********************@^_^@学生通讯录管理系统管理页面@^_^@**********************\n");
   printf("\n\n");
   printf("\n                          1:录入通讯信息\n");
   printf("\n                          2:查询通讯信息\n");
   printf("\n                          3:显示所有通讯信息\n");
   printf("\n                          4:学生地区分布统计\n");
   printf("\n                          5:修改密码\n");
   printf("\n\n\n");
   printf("\n**********************@@@@@欢迎使用学生通讯录管理系统@@@@@**********************\n");
   printf("请选择你需要服务的序号:");
   scanf("%d",&xuhao);
   getchar();
   while(xuhao>5)
   {
	printf("\n你输入有误 请重新输入:");
    scanf("%d",&xuhao);
    getchar();
   }
   switch(xuhao)
   {
      case 1:system("cls");guanli();break;
      case 2:system("cls");chaxun();break;
      case 3:system("cls");printall();break;
      case 4:system("cls");tongji();break;
      case 5:system("cls");xiugaipw();break;
   }
}

void daying()  //输出信息
{

⌨️ 快捷键说明

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