這是我們主要的數據結構形式
/*
剛開始的時候,先不要求要有太高級的操作,所以簡化操作。
現在是主幹是兩條帶有兩個尾指針的鏈表,一條是學生信息鏈,一條是課程信息鏈。
有一些功能在初次代碼中將不會去實現,之後有時間就去完善。
1:在這裏,簡化了老師這一人物,將它看成了課程,如果要加上老師這一人物,將會變爲帶有三個尾節點的鏈表。
2:在這裏,我沒有用數組二分查找加快查找過程。
3:在這裏,我沒有用模糊查詢。
4:以後可以考慮加密保等方式加強安全性。
*/
//成績
typedef struct GPA{
double uaual_score; //平時成績
double test_score; //期末成績
double rate; //期末成績佔比0到1
double overall_score //綜合成績
} GPA,*Ptr_GPA;
//主幹學生節點,這個學生節點是作爲主幹來的
typedef struct STU1{
long long id; //學號:統一12位,考慮到現實情況學號沒有過長的。
char code[30]; //密碼用字符型方便隱私。
char clname[100]; //班級:全稱。
char name[30]; //姓名:漢字,一個漢字佔兩個字節 。
int sex; //性別:1表示男性,2表示女性,0表示不詳。
int age; //年齡:
long long dorid; //宿舍號:一般不會太長。
long long pnum; //電話號碼:電話號碼統一11位。
Ptr_STU1 next; //學生指針,指向下一個節點。
Ptr_CLA2 cla; //課程節點指向課程 。
//還有各種各樣的功能,如平均成績已經等等待補充的
} STU1,*Ptr_STU1;
//分支學生節點,這個學生節點是作爲分支來的。
typedef struct STU2{
long long id; //學號:統一12位,考慮到現實情況學號沒有過長的。
char name[30]; //姓名:漢字,一個漢字佔兩個字節
char clname[100]; //班級:全稱。
GPA gpa; //最新分數:包含3種分數
int rebuild; //重修次數:0表示沒有,非0表示次數
long long pnum; //電話號碼:電話號碼統一11位
Ptr_STU2 next; //學生指針,指向下一個節點學生節點
} STU2,*Ptr_STU2;
//主幹課程節點,這個課程節點是作爲主幹來的
typedef struct CLASS1{
long long id; //課程編號:統一15位
char name[100]; //課程名稱
char code[30]; //本科目管理員密碼
int test_aver_score; //考試平均成績
GPA avergpa; //最新分數:包含3種平均分數
int credit; //學分
int rebuild; //重修人數,重修人名以後寫,是一個函數
Ptr_STU2 stu; //選課學生,可以做很多事通過這個
Ptr_CLA1 next; //課程指針,指向其他課程
} CLASS1,*Ptr_CLA1;
//分支課程節點,這個課程節點是作爲分支來的
typedef struct CLASS2{
long long id; //課程編號:統一15位
char name[100]; //課程名稱
GPA gpa; //最新分數:包含3種分數
int credit; //學分
int rebuild; //重修次數:0表示沒有,非0表示次數
Ptr_CLA2 next; //課程指針,指向其他課程
} CLASS2,*Ptr_CLA2;