?? student.c
字號(hào):
#include<string.h>
#include<stdio.h>
void denglu();void save();void zhuce0();int cherk(char shuzi[]); //函數(shù)聲明
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**********************@^_^@歡迎使用學(xué)生通訊錄管理系統(tǒng)@^_^@**********************\n");
printf("\n\n\n\n");
printf("\n 1:登 陸\n\n");
printf("\n 2:注冊(cè)新用戶(hù)\n\n");
printf("\n\n\n\n");
printf("\n**********************@@@@@歡迎使用學(xué)生通訊錄管理系統(tǒng)@@@@@**********************\n");
printf("請(qǐng)選擇你需要服務(wù)的序號(hào):");
scanf("%d",&xuhao);
getchar();
while(xuhao>2)
{
printf("\n你輸入有誤 請(qǐng)重新輸入:");
scanf("%d",&xuhao);
getchar();
}
switch(xuhao)
{
case 1:denglu();break;
case 2:zhuce0();break;
}
}
void save() //保存數(shù)據(jù)
{
FILE*fp;
if((fp=fopen("stu_list","ab"))==NULL)
{
printf("不能打開(kāi)這個(gè)文件\n");
return;
}
if(fwrite(&zhuce,sizeof(struct zhuce),1,fp)!=1)
printf("文件寫(xiě)入錯(cuò)誤\n");
fclose(fp);
}
void zhuce0() //注冊(cè)函數(shù)
{
char password[16];
int leap=0,leap1=0,i,str=0,str1=0;
do
{
printf("請(qǐng)輸入一個(gè)用戶(hù)名('a-z,0-9'16個(gè)字符內(nèi)):\n");
gets(zhuce.name);
while((strlen(zhuce.name))>17)
{
printf("\n你輸入的字符超過(guò)限制,請(qǐng)重新輸入:\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("你輸入的用戶(hù)名為空或含有非法字符,請(qǐng)重新輸入\n\n");leap=1;}
else leap=0;
}
while(leap==1);
do
{
printf("\n請(qǐng)輸入一個(gè)密碼('a-z,0-9')16個(gè)字符內(nèi):\n");
gets(zhuce.password);
printf("\n請(qǐng)?jiān)佥斎胍淮?\n");
gets(password);
if(strcmp(zhuce.password,password)==0)
{system("cls");printf("注冊(cè)成功\n");
printf("你的用戶(hù)名為:%s\n\n你的密碼為:%s\n\n請(qǐng)牢記你的用戶(hù)名及密碼\n\n登陸:\n",
zhuce.name,zhuce.password);save();denglu(); break;}
else {printf("\n很抱歉 兩次輸入的密碼不同 請(qǐng)重新輸入\n");leap1=1;}
}while(leap1==1);
}
void denglu() //登陸函數(shù)
{
int i=0,j;
FILE*fp;
do
{
printf("\n請(qǐng)輸入用戶(hù)名:\n");
gets(zhuce.name);
printf("\n請(qǐng)輸入密碼:\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你輸入的用戶(hù)名或密碼有誤\n");
printf("\n1:重新輸入? 2:注冊(cè)新用戶(hù)?\n");
do
{
scanf("%d",&j);getchar();
if(j==1) i=1;
else if(j==2) zhuce0();
else printf("\n你選擇有誤 請(qǐng)重新輸入:\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)
{
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對(duì)不起,你僅能輸入字母\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對(duì)不起,你僅能輸入字母或數(shù)字\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對(duì)不起,你僅能輸入字母,數(shù)字,'.','@'\n");
leap=1;
return(leap);
}
else {leap=0;return(leap);}
}
void save1()
{
FILE*fp;
if((fp=fopen("stu_xinxi","ab"))==NULL)
{
printf("不能打開(kāi)文件\n");
return;
}
if(fwrite(&xinxi,sizeof(struct xinxi),1,fp)!=1)
printf("文件寫(xiě)入錯(cuò)誤\n");
fclose(fp);
}
void guanli() //建立 增加學(xué)生通訊錄函數(shù)
{
int leap,xuhao;
do
{
printf("\n請(qǐng)輸入學(xué)號(hào)(12位):\n");
gets(xinxi.number);
while(strlen(xinxi.number)!=12)
{
printf("\n你輸入的學(xué)號(hào)位數(shù)不符合12位的要求,請(qǐng)重新輸入:\n");
gets(xinxi.number);
}
leap=cherk(xinxi.number);
}
while(leap==1);
do
{
printf("\n請(qǐng)輸入姓名(20個(gè)字符內(nèi),a~z):\n");
gets(xinxi.name);
while(strlen(xinxi.name)>20)
{
printf("\n你輸入的姓名長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.name);
}
leap=cherk1(xinxi.name);
}
while(leap==1);
do
{
printf("\n請(qǐng)輸入所在班級(jí):\n");
gets(xinxi.banji);
while(strlen(xinxi.banji)>20)
{
printf("\n你輸入的長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.banji);
}
leap=cherk2(xinxi.banji);
}while(leap==1);
do
{
printf("\n請(qǐng)輸入宿舍電話(huà)(8位以?xún)?nèi)):\n");
gets(xinxi.dormphone);
while(strlen(xinxi.dormphone)>8)
{
printf("\n你輸入的號(hào)碼長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.dormphone);
}
leap=cherk(xinxi.dormphone);
}while(leap==1);
do
{
printf("\n請(qǐng)輸入家庭所在地的電話(huà)區(qū)號(hào)(4位以?xún)?nèi)):\n");
gets(xinxi.quhao);
while(strlen(xinxi.quhao)>4)
{
printf("\n你輸入的電話(huà)區(qū)號(hào)長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.quhao);
}
leap=cherk(xinxi.quhao);
}while(leap==1);
do
{
printf("\n請(qǐng)輸入家庭電話(huà)號(hào)碼(8位以?xún)?nèi)):\n");
gets(xinxi.familyphone);
while(strlen(xinxi.familyphone)>8)
{
printf("\n你輸入的電話(huà)號(hào)碼長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.familyphone);
}
leap=cherk(xinxi.familyphone);
}while(leap==1);
do
{
printf("\n請(qǐng)輸入手機(jī)號(hào)碼(11位):\n");
gets(xinxi.mobilephone);
while(strlen(xinxi.mobilephone)>11)
{
printf("\n你輸入的手機(jī)號(hào)碼長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.mobilephone);
}
leap=cherk(xinxi.mobilephone);
}while(leap==1);
do
{
printf("\n請(qǐng)輸入電子郵箱(30個(gè)字符以?xún)?nèi),a~z,0~9,'.','@'):\n");
gets(xinxi.email);
while(strlen(xinxi.email)>30)
{
printf("\n你輸入的郵箱長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.email);
}
leap=cherk3(xinxi.email);
}while(leap==1);
do
{
printf("\n請(qǐng)輸入家庭地址:\n");
gets(xinxi.address);
while(strlen(xinxi.address)>50)
{
printf("\n你輸入的地址長(zhǎng)度超過(guò)限制,請(qǐng)重新輸入:\n");
gets(xinxi.address);
}
leap=cherk2(xinxi.address);
}while(leap==1);
do
{
printf("\n請(qǐng)輸入家庭所在地的郵政編碼(6位):\n");
gets(xinxi.youbian);
while(strlen(xinxi.youbian)!=6)
{
printf("\n你輸入的郵政編碼不符合要求(6位),請(qǐng)重新輸入:\n");
gets(xinxi.youbian);
}
leap=cherk(xinxi.youbian);
}while(leap==1);
daying();
save1();
system("cls");
printf("\n請(qǐng)選擇你需要服務(wù)的序號(hào):1:繼續(xù)錄入 2:返回管理界面\n");
scanf("%d",&xuhao);
getchar();
while(xuhao>2)
{
printf("\n你輸入有誤 請(qǐng)重新輸入:");
scanf("%d",&xuhao);
getchar();
}
switch(xuhao)
{
case 1:system("cls");guanli();break;
case 2:system("cls");jiemian();break;
}
}
void jiemian() //管理界面
{
int xuhao;
printf("\n**********************@^_^@學(xué)生通訊錄管理系統(tǒng)管理頁(yè)面@^_^@**********************\n");
printf("\n\n");
printf("\n 1:錄入通訊信息\n");
printf("\n 2:查詢(xún)通訊信息\n");
printf("\n 3:顯示所有通訊信息\n");
printf("\n 4:學(xué)生地區(qū)分布統(tǒng)計(jì)\n");
printf("\n 5:修改密碼\n");
printf("\n\n\n");
printf("\n**********************@@@@@歡迎使用學(xué)生通訊錄管理系統(tǒng)@@@@@**********************\n");
printf("請(qǐng)選擇你需要服務(wù)的序號(hào):");
scanf("%d",&xuhao);
getchar();
while(xuhao>5)
{
printf("\n你輸入有誤 請(qǐng)重新輸入:");
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() //輸出信息
{
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -