# include & ltstring.h & gt
# include & ltstdlib.h & gt
# include & ltconio.h & gt
void init(struct student * STD);
void insert(struct student * STD);
void del(struct student * STD);
void排序(struct student * STD);
void show(struct student * STD);
無效交易(int choose,struct student * STD);
#define MAX 10 //學生數據的最大數量,因為要插入數據,所以輸入壹般小於10。
靜態int n = 0;//全局變量,記錄學生總數。
結構學生
{
字符名稱[10];//學生姓名
浮動分數;//學生成績
};
Void init(struct student * std) //數據初始化
{
char k;
結構學生溫度;//暫時接受讀取的數據。
做
{
Printf("請輸入學生信息:\ n ");
printf(" name:");
fflush(stdin);
scanf("%s ",& amptemp . name);
Printf("成就:");
scanf("%f ",& amptemp . score);//(年級的閱讀類型不對。)
Printf("是否繼續:Y是,N否\ N ");
fflush(stdin);
scanf("%c ",& ampk);
if(temp . score & gt;=0) //如果輸入分數不小於0,則認為是正常數據並記錄。
{
strcpy(標準[n])。name,temp . name);
標準;標準。score = temp.score
n++;
}
} while(k = = ' Y ' | | k = = ' Y ');
}
void Insert(struct student * STD)//在末尾插入壹個學生數據。
{
int i,j,num = n;
char k;
結構學生溫度;//臨時,接受讀取的數據。
做{
Printf("要插在哪裏:");
printf(" \ n請輸入壹個小於%d:",num+1的數字);
scanf("%d ",& ampI);//記錄要插入的位數。
如果(i & gtnum+1)
{//如果輸入的數字超過最後壹位,則將該數字放在最後壹位。
I = num+1;
}
printf(" \ n輸入要插入的學生姓名:");
fflush(stdin);
scanf("%s ",& amptemp . name);
Printf("成就:");
scanf("%f ",& amptemp . score);
if(temp . score & gt;=0) //如上,判斷數據是否有效。
{
for(j = num;j & gt= I;j-)//數據依次向前移動
{
strcpy(標準[j].名稱,標準[j-1]。姓名);
std[j]。分數=std[j-1]。分數;
}
strcpy(標準[識別號1])。name,temp . name);//復制名稱
標準[識別號1]。score = temp.score//復制結果
num++;
}
Printf("是否繼續:Y是,N否\ N ");
fflush(stdin);
scanf("%c ",& ampk);
} while(k = = ' Y ' | | k = = ' Y ');
n = num
顯示(標準);
}
void del(結構學生*標準)
{
int i,j;
char del _ name[10];
Printf("輸入要刪除的學生姓名\ n ");
scanf("%s ",& ampdel _ name);//讀入要刪除的學生姓名。
for(I = 0;我& ltn;i++)
{
如果(!(strcmp (STD [I])。name,del _ name))//逐個比較是否有要刪除的學生。當strcmp函數滿足條件時,它返回0,因此添加了壹個非符號。
{
for(j = I;j & ltn;J++) //下面的數據逐壹前移,覆蓋要刪除的數據。
{
strcpy(標準[j].名稱,標準[j+1]。姓名);
std[j]。分數=std[j+1]。分數;
}
-n;//學生總數減少壹名
Printf("%s已被刪除!\n ",del _ name);
}
}
顯示(標準);
}
void排序(結構學生*標準)
{
int i,j;
結構學生溫度;
for(I = 0;我& ltn;i++)
{//學生成績按降序排列。
for(j = 0;j & ltn-1;j++)
{
if(std[j].得分& ltstd[j+1]。分數)
{
strcpy(臨時名稱,標準[j])。姓名);臨時分數=標準[j]。分數;
strcpy(標準[j].名稱,標準[j+1]。姓名);std[j]。分數=std[j+1]。分數;
strcpy(std[j+1])。name,temp . name);std[j+1]。score = temp.score
}
}
}
}
Void show(struct student * std) //輸出所有學生。
{
int I;
char k;
做
{
printf(" name | grade \ n ");
for(I = 0;我& ltn;i++)
{
printf(" % 10s \ t % 10.2 f \ n ",std[i]。名稱,std[i]。分數);
}
//(壹般來說,如果同壹結果沒有同時顯示兩次,建議將while()改為system(" pause ");
Printf("是否繼續:Y是,N否\ N ");
fflush(stdin);
scanf("%c ",& ampk);
} while(k = = ' Y ' | | k = = ' Y ');
}
Void deal (int choose,struct student * STD)//判斷,輸入選項。
{
切換(選擇)
{
案例1:
初始化(標準);
打破;
案例二:
插入(標準);
打破;
案例三:
del(STD);
打破;
案例4:
排序(標準);
打破;
案例5:
顯示(標準);
打破;
案例6:
打破;
默認值:
printf("請輸入正確的數字\ n ");//如果不滿足條件,則輸出提示信息。
}
}
int main()
{
結構學生標準[最大值];
int choose
int I;
字符編碼[10];
char usename[20];
printf("-\ n ");
printf("---\ n ");
Printf(" -歡迎使用本系統-\ n ");
printf("---\ n ");
Printf(" -用戶名或密碼輸入錯誤3次,系統將自動退出-\ n ");
printf("---\ n ");
printf("-\ n ");
for(I = 0;我& lt3;i++)
{
Printf("請輸入您的用戶名:\ n ");
scanf("%s ",usename);
Printf("請輸入您的密碼:\ n ");
scanf("%s ",代碼);
if(strcmp(usename," 123 ")= = 0 & amp;& ampstrcmp(代碼,“123”)= = 0)
{
Printf("恭喜,成功登錄!\ n ");
打破;
}
其他
{
Printf("您的用戶名或密碼錯誤,請檢查!\ n ");
}
}
如果(i==3)
{
printf(" \ n \ t抱歉,錯誤輸入已達3次,程序將退出!\ n ");
}
其他
{
做{
系統(“cls”);//清屏(最好在顯示菜單前清屏)
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("*歡迎使用本系統* \ n ");
printf(" * 1 input * \ n ");
printf(" * 2 insert * \ n ");
printf(" * 3 delete * \ n ");
printf(" * 4 sort * \ n ");
Printf("* 5顯示* \ n ");
Printf("* 6退出程序* \ n ");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("請輸入您的選擇:\ n ");
scanf("%d ",& amp選擇);
交易(選擇,標準);
}while(選擇!=6);
返回0;
系統(“cls”);//清屏(程序已經運行完,但是這句話沒有運行,可以刪除)
}
}