1. 學(xué)生管理系統(tǒng)功能介紹
前面文章里介紹了結(jié)構(gòu)體類型,知道結(jié)構(gòu)體類型里可以存放不同的數(shù)據(jù)類型,屬于一個(gè)有序的集合。
這篇文章就使用結(jié)構(gòu)體知識(shí)點(diǎn)完成一個(gè)小練習(xí),使用結(jié)構(gòu)體+數(shù)組設(shè)計(jì)一個(gè)簡(jiǎn)單的學(xué)生管理系統(tǒng),作為結(jié)構(gòu)體知識(shí)點(diǎn)的鞏固練習(xí)。
功能如下:
(1). 歡迎界面提示
(2). 輸入密碼登錄
(3). 功能: 錄入學(xué)生信息、按照學(xué)號(hào)排序、按照成績(jī)排序、輸出所有學(xué)生信息、輸出指定學(xué)生信息(學(xué)號(hào)、姓名、成績(jī))、計(jì)算成績(jī)平均值值輸出打印、刪除指定學(xué)生信息、增加新的學(xué)生信息。
(4). 功能模塊采用菜單方式選擇
2. 框架設(shè)計(jì)
#include
#include
void Display_info(void);
char buff_user[50];
char buff_password[50];
int main()
{
int a,i;
printf("------歡迎使用xxxx學(xué)生管理系統(tǒng)------\n");
for(i=1;i<=3;i++)
{
printf("請(qǐng)輸入用戶名:");
scanf("%s",buff_user);
printf("請(qǐng)輸入密碼:");
system("stty -echo"); //系統(tǒng)函數(shù)---調(diào)用系統(tǒng)的命令 關(guān)閉回顯
scanf("%s",buff_password);
printf("\n");
system("stty echo"); //系統(tǒng)函數(shù)---調(diào)用系統(tǒng)的命令 開(kāi)回顯
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("密碼或者用戶錯(cuò)誤.請(qǐng)重新輸入,剩余次數(shù):%d\n",3-i);
}
else break;
}
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("系統(tǒng)安全退出.\n");
return 0; //exit(); //終止進(jìn)程
}
/*
#include
void exit(int status); 比如: exit(0);
*/
while(1)
{
Display_info();
scanf("%d",&a);
switch (a)
{
case 1:
printf("選擇錄取學(xué)生信息\n");
break;
case 2:
printf("輸出學(xué)生信息\n");
break;
//............
default:
break;
}
}
return 0;
}
//顯示提示信息
void Display_info(void)
{
printf("------歡迎使用xxxx學(xué)生管理系統(tǒng)------\n");
printf("1. 錄取學(xué)生信息\n");
printf("2. 輸出學(xué)生信息\n");
printf("3. 打印成績(jī)平均值\n");
printf("4. 增加學(xué)生信息\n");
printf("5. 按照成績(jī)排序輸出學(xué)生信息.\n");
printf("6. 刪除指定學(xué)生信息\n");
printf("請(qǐng)選擇功能:\n");
}
3. 完整代碼
#include
#include
struct STU
{
char name[100]; //姓名
int age; //年齡
char number[100]; //學(xué)號(hào)
float grade;//成績(jī)
};
//全局變量定義區(qū)域
char buff_user[50];
char buff_password[50];
struct STU stu_info[100];
int stu_cnt=0; //存放學(xué)生總?cè)藬?shù)
//函數(shù)聲明區(qū)域
void Display_info(void);
int SystemLogin(void);
void add_info(struct STU *stu,int flag);
void grade_sort(struct STU *stu);
void del_info(struct STU *stu);
void print_info(struct STU *stu);
int main()
{
int number;
//1. 登錄系統(tǒng)
if(SystemLogin())
{
printf("系統(tǒng)安全退出.\n");
exit(0);
}
//2.執(zhí)行功能模塊
while(1)
{
Display_info();
scanf("%d",&number);
switch (number)
{
case 1: //錄入學(xué)生信息
add_info(stu_info,1);
break;
case 2: //輸出學(xué)生信息
print_info(stu_info);
break;
case 3: //打印成績(jī)平均值
break;
case 4: //增加學(xué)生信息
add_info(stu_info,0);
break;
case 5: //按照成績(jī)排序輸出學(xué)生信息
grade_sort(stu_info);
break;
case 6: //刪除指定學(xué)生信息
del_info(stu_info);
break;
case 7: //退出系統(tǒng)
printf("-----系統(tǒng)安全退出------\n");
exit(0); //退出當(dāng)前進(jìn)程
default:
break;
}
}
return 0;
}
//顯示提示信息
void Display_info(void)
{
printf("\n\n");
printf("------歡迎使用xxxx學(xué)生管理系統(tǒng)------\n");
printf("1. 錄入學(xué)生信息(按照要求錄入信息)\n");
printf("2. 輸出學(xué)生信息\n");
printf("3. 打印成績(jī)平均值\n");
printf("4. 增加學(xué)生信息\n");
printf("5. 按照成績(jī)排序輸出學(xué)生信息.\n");
printf("6. 刪除指定學(xué)生信息\n");
printf("7. 退出系統(tǒng)\n");
printf("請(qǐng)選擇功能:");
}
/*
函數(shù)功能: 系統(tǒng)登錄
返回值: 0表示成功 1表示失敗
*/
int SystemLogin(void)
{
printf("------歡迎使用xxxx學(xué)生管理系統(tǒng)------\n");
int i;
for(i=1;i<=3;i++)
{
printf("請(qǐng)輸入用戶名:");
scanf("%s",buff_user);
printf("請(qǐng)輸入密碼:");
system("stty -echo"); //系統(tǒng)函數(shù)---調(diào)用系統(tǒng)的命令 關(guān)閉回顯
scanf("%s",buff_password);
printf("\n");
system("stty echo"); //系統(tǒng)函數(shù)---調(diào)用系統(tǒng)的命令 開(kāi)回顯
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("密碼或者用戶錯(cuò)誤.請(qǐng)重新輸入,剩余次數(shù):%d\n",3-i);
}
else break;
}
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
return 1;
}
return 0;
}
/*
函數(shù)功能: 錄入學(xué)生信息
int flag :1表示連續(xù)增加學(xué)生信息 0表示增加單個(gè)學(xué)生信息
*/
void add_info(struct STU *stu,int flag)
{
int i;
int tmp;
int addr=stu_cnt; //學(xué)生總?cè)藬?shù)
if(flag)
{
for(i=addr;i(stu_info)>
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137720 -
數(shù)組
+關(guān)注
關(guān)注
1文章
417瀏覽量
26028 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
130瀏覽量
10872
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
源碼|學(xué)生信息管理系統(tǒng)(C語(yǔ)言單鏈表實(shí)現(xiàn))
C語(yǔ)言中數(shù)組和結(jié)構(gòu)體的內(nèi)存表示和布局
嵌入式中C語(yǔ)言結(jié)構(gòu)體基本實(shí)現(xiàn)
![嵌入式中<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>基本<b class='flag-5'>實(shí)現(xiàn)</b>](https://file1.elecfans.com//web2/M00/E4/42/wKgZomY_FOKAdlRXAADOabNodfI522.jpg)
C語(yǔ)言教程之使用數(shù)組統(tǒng)計(jì)學(xué)生成績(jī)
為什么C語(yǔ)言函數(shù)不能返回數(shù)組?
Keil使用結(jié)構(gòu)體數(shù)組的奇怪問(wèn)題
![Keil使用<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b><b class='flag-5'>數(shù)組</b>的奇怪問(wèn)題](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語(yǔ)言_結(jié)構(gòu)體總結(jié)
C程序設(shè)計(jì)基礎(chǔ)-數(shù)組與結(jié)構(gòu)體
![<b class='flag-5'>C</b>程序設(shè)計(jì)基礎(chǔ)-<b class='flag-5'>數(shù)組</b>與<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>](https://file1.elecfans.com/web2/M00/81/BB/wKgZomQABVGAf9kaAABQpH4-f_0167.jpg)
C程序設(shè)計(jì)入門筆記之數(shù)組與結(jié)構(gòu)體
![<b class='flag-5'>C</b>程序設(shè)計(jì)入門筆記之<b class='flag-5'>數(shù)組</b>與<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>](https://file1.elecfans.com/web2/M00/81/BB/wKgZomQABVGAf9kaAABQpH4-f_0167.jpg)
C語(yǔ)言使用結(jié)構(gòu)體數(shù)組注意事項(xiàng)
C語(yǔ)言入門之結(jié)構(gòu)體指針
C語(yǔ)言程序設(shè)計(jì)--通訊錄系統(tǒng)
C語(yǔ)言如何創(chuàng)建數(shù)組
嵌入式系統(tǒng)中C語(yǔ)言結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用
![嵌入式<b class='flag-5'>系統(tǒng)</b>中<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>的基礎(chǔ)<b class='flag-5'>實(shí)現(xiàn)</b>與應(yīng)用](https://file1.elecfans.com/web2/M00/C4/E6/wKgaomXv9r6Aaj6DAAAYJ3PfWAU110.jpg)
評(píng)論