?? menu2.cpp
字號:
#include "menu.h"
/*包含IsDate、Force、Input、delete_sys四個函數(shù)*/
/*-----------------------------------------------------------------*
*函數(shù): IsDate() *
*參數(shù): 字符串,整型 flag為1時判斷顯示日期的完整模式(1990-01-01) *
*作用: 判斷日期格式是否標準 *
*返回: 整型 *
*-----------------------------------------------------------------*/
int IsDate(char temp[15],int flag)
{
int i;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char year[10]="";
char month[10]="";
char day[10]="";
for(i=0;i<10;i++)
{
if(i<4)
year[i]=temp[i];
if(4<i&&i<7)
month[i-5]=temp[i];
if(7<i&&i<10)
day[i-8]=temp[i];
}
year[5]='\0';
month[3]='\0';
day[3]='\0';
if('-'==temp[4]!=1)
{
return 0;
}
//年月的判斷
if(1900>atoi(year)||atoi(year)>2007||atoi(month)<1||atoi(month)>12)
{
return 0;
}
//flag控制天的判斷
if(flag==1&&('-'==temp[7]!=1||atoi(day)<1))
{
return 0;
}
if(flag==1)
{
//閏年天數(shù)的判斷
if((atoi(year)%400==0||(atoi(year)%4==0&&atoi(year)%100!=0))&&atoi(day)>29)
{
return 0;
}
//非閏年天數(shù)的判斷
if(!(atoi(year)%400==0||(atoi(year)%4==0&&atoi(year)%100!=0))&&atoi(day)>days[atoi(month)])
{
return 0;
}
}
return 1;
}
/*-----------------------------------------------------------------*
*函數(shù): Force() *
*參數(shù): 無 *
*作用: 通過isdigit(),atoi()函數(shù)強制用戶輸入整型數(shù) *
*返回: 整型 *
*-----------------------------------------------------------------*/
int Force(void)
{
unsigned int i=1;
int num;
char ch[11];
while(1)
{
scanf("%s",ch);
if(ch[0]=='-'||isdigit(ch[0])!=0)
{
for(;i<strlen(ch);i++)
if(isdigit(ch[i])==0) /*判斷是否為數(shù)字0-9 頭文件ctype.h*/
break;
if(i+1>strlen(ch)&&!(ch[0]=='-'&&i==1))
{
num=atoi(ch);/*atoi()函數(shù)將字符轉(zhuǎn)化為整型*/
return num;
}
else
printf("\n\n請輸入數(shù)字:");
}
else
printf("\n\n請輸入數(shù)字:");
}
}
/*------------------------------------------------------------------*
*函數(shù): Input() *
*參數(shù): 整型,n[1]為表名的下標,i為表中列名號,表結(jié)構(gòu)指針 *
*作用: 對輸入進行判斷和處理 *
*返回: 無 *
*------------------------------------------------------------------*/
sys Input(int n[3],int i,sys *all)
{
int flag=0,table=n[1];//flag提示錯誤
int grade,Find[3]={0,table,0};
char temp[3][31];//最多有兩個屬性作為主鍵輸入
sys tmp;
extern char row_txt[15][13][15];
//學生表
if(table==1)
{
//限制學號
if(i==1)
{
do
{
printf("請輸入%s(10位):",row_txt[table][i]);
scanf("%s",temp[1]);
if(n[2]==1&&find(Find,temp[1],temp[1],all).studenthead!=NULL)
{
printf("\n該學號已存在,請重新輸入!\n\n");
continue;
}
if(n[2]==2&&find(Find,temp[1],temp[1],all).studenthead==NULL)
{
printf("\n該學號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=10)
{
printf("\n學號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
//姓名
if(i==2)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//限制性別
if(i==3)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(男/女):",row_txt[table][i]);
scanf("%s",temp[1]);
flag=1;
}while(strlen(temp[1])!=2 || (strcmp("男",temp[1])!=0&&strcmp("女",temp[1])!=0));
}
//限制出生日期
if(i==4)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(例如:1990-01-01):",row_txt[table][i]);
scanf("%s",temp[1]);
flag=1;
}while(strlen(temp[1])!=10 || !(IsDate(temp[1],1)));
}
//限制入校日期
if(i==5)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(例如:1990-01):",row_txt[table][i]);
scanf("%s",temp[1]);
flag=1;
}while(strlen(temp[1])!=7 || !(IsDate(temp[1],0)));
}
//畢業(yè)中學
if(i==6)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//限制分數(shù)
if(i==7)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(0-750):",row_txt[table][i]);
grade=Force();
flag=1;
}while(grade<0 ||grade>750);
//將整型轉(zhuǎn)換為字符型
itoa(grade,temp[1],10);
}
//聯(lián)系方式
if(i==8)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//住址
if(i==9)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//專業(yè)編號限制
if(i==10)
{
do
{
printf("請輸入%s(2位):",row_txt[table][i]);
scanf("%s",temp[1]);
Find[1]=4;
if(find(Find,temp[1],temp[1],all).specialityhead==NULL)
{
printf("\n該專業(yè)號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=2)
{
printf("\n專業(yè)號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
//班號限制
if(i==11)
{
do
{
printf("請輸入%s(10位):",row_txt[table][i]);
scanf("%s",temp[1]);
Find[1]=6;
if(find(Find,temp[1],temp[1],all).classhead==NULL)
{
printf("\n該班號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=10)
{
printf("\n班號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
//寢室號限制
if(i==12)
{
do
{
printf("請輸入%s(5位):",row_txt[table][i]);
scanf("%s",temp[1]);
Find[1]=14;
if(find(Find,temp[1],temp[1],all).chamberhead==NULL)
{
printf("\n該寢室號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=5)
{
printf("\n寢室號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
}
//插入教師表
if(table==2)
{
//限制教師號
if(i==1)
{
do
{
printf("請輸入%s(10位):",row_txt[table][i]);
scanf("%s",temp[1]);
if(n[2]==1&&find(Find,temp[1],temp[1],all).teacherhead!=NULL)
{
printf("\n該教師號已存在,請重新輸入!\n\n");
continue;
}
if(n[2]==2&&find(Find,temp[1],temp[1],all).teacherhead==NULL)
{
printf("\n該教師號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=10)
{
printf("\n教師號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
//姓名
if(i==2)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//限制性別
if(i==3)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(男/女):",row_txt[table][i]);
scanf("%s",temp[1]);
flag=1;
}while(strlen(temp[1])!=2 || (strcmp("男",temp[1])!=0&&strcmp("女",temp[1])!=0));
}
//職稱
if(i==4)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//限制出生日期
if(i==5)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s例如:1990-01-01):",row_txt[table][i]);
scanf("%s",temp[1]);
flag=1;
}while(strlen(temp[1])!=10 || !(IsDate(temp[1],1)));
}
//限制工作日期
if(i==6)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(例如:1990-01):",row_txt[table][i]);
scanf("%s",temp[1]);
flag=1;
}while(strlen(temp[1])!=7 || !(IsDate(temp[1],0)));
}
//限制基本工資
if(i==7)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(0-30000):",row_txt[table][i]);
grade=Force();
flag=1;
}while(grade<0 ||grade>30000);
//將整型轉(zhuǎn)換為字符型
itoa(grade,temp[1],10);
}
//院系號限制
if(i==8)
{
do
{
printf("請輸入%s(2位):",row_txt[table][i]);
scanf("%s",temp[1]);
Find[1]=5;
if(find(Find,temp[1],temp[1],all).departmenthead==NULL)
{
printf("\n該院系號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=2)
{
printf("\n院系號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
}
//插入課程表
if(table==3)
{
//限制課程號
if(i==1)
{
do
{
printf("請輸入%s(10位):",row_txt[table][i]);
scanf("%s",temp[1]);
if(n[2]==1&&find(Find,temp[1],temp[1],all).coursehead!=NULL)
{
printf("\n該課程號已存在,請重新輸入!\n\n");
continue;
}
if(n[2]==2&&find(Find,temp[1],temp[1],all).coursehead==NULL)
{
printf("\n該課程號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=10)
{
printf("\n課程號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
//課程名
if(i==2)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//限制講課學時或?qū)嶒瀸W時
if(i==3)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(0-120):",row_txt[table][i]);
grade=Force();
flag=1;
}while(grade<0 ||grade>120);
//將整型轉(zhuǎn)換為字符型
itoa(grade,temp[1],10);
}
//限制實驗學時
if(i==4)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(0-120):",row_txt[table][i]);
grade=Force();
flag=1;
}while(grade<0 ||grade>120);
//將整型轉(zhuǎn)換為字符型
itoa(grade,temp[1],10);
}
//限制學分
if(i==5)
{
do
{
if(flag==1)
{
printf("\n輸入錯誤,請重新輸入!\n\n");
}
printf("請輸入%s(0-10):",row_txt[table][i]);
grade=Force();
flag=1;
}while(grade<0 ||grade>10);
//將整型轉(zhuǎn)換為字符型
itoa(grade,temp[1],10);
}
//選用教材
if(i==6)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//院系號限制
if(i==7)
{
do
{
printf("請輸入%s(2位):",row_txt[table][i]);
scanf("%s",temp[1]);
Find[1]=5;
if(find(Find,temp[1],temp[1],all).departmenthead==NULL)
{
printf("\n該院系號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=2)
{
printf("\n院系號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
}
//插入專業(yè)表
if(table==4)
{
//限制專業(yè)編號
if(i==1)
{
do
{
printf("請輸入%s(2位):",row_txt[table][i]);
scanf("%s",temp[1]);
if(n[2]==1&&find(Find,temp[1],temp[1],all).specialityhead!=NULL)
{
printf("\n該專業(yè)號已存在,請重新輸入!\n\n");
continue;
}
if(n[2]==2&&find(Find,temp[1],temp[1],all).specialityhead==NULL)
{
printf("\n該專業(yè)號不存在,請重新輸入!\n\n");
continue;
}
if(strlen(temp[1])!=2)
{
printf("\n專業(yè)號位數(shù)錯誤,請重新輸入!\n\n");
continue;
}
break;
}while(1);
}
//專業(yè)名
if(i==2)
{
printf("請輸入%s:",row_txt[table][i]);
scanf("%s",temp[1]);
}
//限制創(chuàng)辦年份
if(i==3)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -