1. 學生管理系統功能介紹
前面文章里介紹了結構體類型,知道結構體類型里可以存放不同的數據類型,屬于一個有序的集合。
這篇文章就使用結構體知識點完成一個小練習,使用結構體+數組設計一個簡單的學生管理系統,作為結構體知識點的鞏固練習。
功能如下:
(1). 歡迎界面提示
(2). 輸入密碼登錄
(3). 功能: 錄入學生信息、按照學號排序、按照成績排序、輸出所有學生信息、輸出指定學生信息(學號、姓名、成績)、計算成績平均值值輸出打印、刪除指定學生信息、增加新的學生信息。
(4). 功能模塊采用菜單方式選擇
2. 框架設計
#include
#include
void Display_info(void);
char buff_user[50];
char buff_password[50];
int main()
{
int a,i;
printf("------歡迎使用xxxx學生管理系統------\n");
for(i=1;i<=3;i++)
{
printf("請輸入用戶名:");
scanf("%s",buff_user);
printf("請輸入密碼:");
system("stty -echo"); //系統函數---調用系統的命令 關閉回顯
scanf("%s",buff_password);
printf("\n");
system("stty echo"); //系統函數---調用系統的命令 開回顯
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("密碼或者用戶錯誤.請重新輸入,剩余次數:%d\n",3-i);
}
else break;
}
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("系統安全退出.\n");
return 0; //exit(); //終止進程
}
/*
#include
void exit(int status); 比如: exit(0);
*/
while(1)
{
Display_info();
scanf("%d",&a);
switch (a)
{
case 1:
printf("選擇錄取學生信息\n");
break;
case 2:
printf("輸出學生信息\n");
break;
//............
default:
break;
}
}
return 0;
}
//顯示提示信息
void Display_info(void)
{
printf("------歡迎使用xxxx學生管理系統------\n");
printf("1. 錄取學生信息\n");
printf("2. 輸出學生信息\n");
printf("3. 打印成績平均值\n");
printf("4. 增加學生信息\n");
printf("5. 按照成績排序輸出學生信息.\n");
printf("6. 刪除指定學生信息\n");
printf("請選擇功能:\n");
}
3. 完整代碼
#include
#include
struct STU
{
char name[100]; //姓名
int age; //年齡
char number[100]; //學號
float grade;//成績
};
//全局變量定義區域
char buff_user[50];
char buff_password[50];
struct STU stu_info[100];
int stu_cnt=0; //存放學生總人數
//函數聲明區域
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. 登錄系統
if(SystemLogin())
{
printf("系統安全退出.\n");
exit(0);
}
//2.執行功能模塊
while(1)
{
Display_info();
scanf("%d",&number);
switch (number)
{
case 1: //錄入學生信息
add_info(stu_info,1);
break;
case 2: //輸出學生信息
print_info(stu_info);
break;
case 3: //打印成績平均值
break;
case 4: //增加學生信息
add_info(stu_info,0);
break;
case 5: //按照成績排序輸出學生信息
grade_sort(stu_info);
break;
case 6: //刪除指定學生信息
del_info(stu_info);
break;
case 7: //退出系統
printf("-----系統安全退出------\n");
exit(0); //退出當前進程
default:
break;
}
}
return 0;
}
//顯示提示信息
void Display_info(void)
{
printf("\n\n");
printf("------歡迎使用xxxx學生管理系統------\n");
printf("1. 錄入學生信息(按照要求錄入信息)\n");
printf("2. 輸出學生信息\n");
printf("3. 打印成績平均值\n");
printf("4. 增加學生信息\n");
printf("5. 按照成績排序輸出學生信息.\n");
printf("6. 刪除指定學生信息\n");
printf("7. 退出系統\n");
printf("請選擇功能:");
}
/*
函數功能: 系統登錄
返回值: 0表示成功 1表示失敗
*/
int SystemLogin(void)
{
printf("------歡迎使用xxxx學生管理系統------\n");
int i;
for(i=1;i<=3;i++)
{
printf("請輸入用戶名:");
scanf("%s",buff_user);
printf("請輸入密碼:");
system("stty -echo"); //系統函數---調用系統的命令 關閉回顯
scanf("%s",buff_password);
printf("\n");
system("stty echo"); //系統函數---調用系統的命令 開回顯
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("密碼或者用戶錯誤.請重新輸入,剩余次數:%d\n",3-i);
}
else break;
}
//比較密碼是否正確
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
return 1;
}
return 0;
}
/*
函數功能: 錄入學生信息
int flag :1表示連續增加學生信息 0表示增加單個學生信息
*/
void add_info(struct STU *stu,int flag)
{
int i;
int tmp;
int addr=stu_cnt; //學生總人數
if(flag)
{
for(i=addr;i(stu_info)>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7631瀏覽量
141384 -
數組
+關注
關注
1文章
420瀏覽量
26505 -
結構體
+關注
關注
1文章
130瀏覽量
11096
發布評論請先 登錄
相關推薦
熱點推薦
Keil使用結構體數組的奇怪問題
今天用keil的時候發現一個很奇怪的點,是關于結構體數組的。首先說明我的keil版本是:V5.28.0.0問題是這樣的:我在a.h文件定義了一個結構
發表于 11-21 16:36
?3次下載

C語言使用結構體數組注意事項
一個結構體變量中可以存放一組有關聯的數據,如一個學生的學號、姓名、成績等數據,如果有10個學生的數據需要參加運算,顯然應該用數組,這就是
C語言如何創建數組
用法和注意事項。 要創建一個數組,首先需要確定數組的數據類型和大小。C語言中的數據類型包括基本數據類型(如整數、浮點數、字符等)以及派生數據類型(如
評論