基於鍊錶的學生管理系統(有選單介面 可增刪查改)

2021-10-24 15:30:08 字數 4716 閱讀 4650

環境:c語言,vs2017

#pragma once

#include

#include

#define null 0

#define len sizeof(struct student)

struct student //定義學生結構體

;void

in_num

(int

*num)

//輸入學號並判斷格式是否正確

elseif(

*num >

999999

||*num <

100000)}

voidin(

struct student *stu)

//輸入剩餘資訊

void

out(

struct student *stu)

//輸出資訊

struct student *

creat

(struct student *phead,

int*n)

//建立鍊錶

p2->next =

null

;free

(p1)

;return phead;

}struct student *

add(

struct student *phead,

int*n)

//新增學生資訊

else

p->next = stu;

stu->next =

null;}

return phead;

}struct student *

del(

struct student *phead,

int*n)

//刪除學生資訊

else

free

(p);

(*n)--;

break;}

else

//還沒找到,時刻保持prep節點的更新,繼續尋找

else

p = p->next;}}

if(!flag)

return phead;

}void

search

(struct student *phead,

int*n)

//查詢學生(學號或者姓名)資訊

void

sort_num

(struct student *phead,

int*n)

//按學號排序

else}}

}void

sort_score

(struct student *phead,

int*n)

//按分數排序

void

print

(struct student *phead,

int*n)

//選擇按學號或者分數排序,列印鍊錶

}

輸入六位學號,int型資料如果不小心輸入字元會卡bug,所以要把學號(num)從int型換成char陣列。陣列定義時要多一位,否則會溢位。

修改為char型別後,建立鍊錶函式裡的相應條件也需要修改,其他函式相同。且要判斷輸入的學號有沒有重複,是不是六位。

還有一些問題及修改過程沒來得及全部記錄。 最後完善修改好的標頭檔案**在下面啦。

#pragma once

#include

#include

#include

#define null 0

#define len sizeof(struct student)

struct student //定義學生結構體

;void

in_num

(char num[7]

)//輸入學號並判斷格式是否正確

else}}

}int

test_num

(struct student *phead,

char num[7]

,int n)

//檢驗新輸入的學號是否有相同的

while

(j//還沒有形成完整的鍊錶,所以不能用p!=null的條件

if(num0 == num1)

else p = p->next;

}return flag;

}voidin(

struct student *stu)

//輸入剩餘資訊

void

out(

struct student *stu)

//輸出資訊

struct student *

creat

(struct student *phead,

int*n)

//建立鍊錶

} p2->next =

null

;free

(p1)

;return phead;

}struct student *

add(

struct student *phead,

int*n)

//新增學生資訊

else

p->next = stu;

stu->next =

null;}

return phead;

}struct student *

del(

struct student *phead,

int*n)

//刪除學生資訊

p = phead;

printf

("please input the num:\n");

in_num

(num)

;while

(p !=

null

)else

free

(p);

(*n)--;

printf

("succed!");

break;}

else

//還沒找到,時刻保持prep節點的更新,繼續尋找

else

p = p->next;}}

if(!flag)

return phead;

}void

search

(struct student *phead,

int*n)

//查詢學生學號資訊

else p = p->next;}if

(!flag)

}struct student *

edit

(struct student *phead,

int*n)

//修改學生(學號或者姓名)資訊

}return phead;

}struct student *

sort_num

(struct student *phead,

int*n)

//按學號排序

else

} prep = p;

p = p->next;}}

return phead;

}struct student *

sort_score

(struct student *phead,

int*n)

//按分數排序

else

} prep = p;

p = p->next;}}

return phead;

}struct student *

print

(struct student *phead,

int*n)

//選擇按學號或者分數排序,列印鍊錶

if(choice ==

1) p=phead=

sort_num

(phead, n)

;else p=phead=

sort_score

(phead, n)

;printf

("\n(after)there are %d student(s):\n"

,*n)

;printf

("num name *** age major score\n");

while

(p !=

null

)return phead;

}

#include

#include

#include

#include

"student.h"

struct student *head;

//全域性變數:煉表頭

int n;

//全域性變數:數目

char

mainmenu()

//主選單頁面設計

else

system

("cls");

printf

("(operation) %s:\n"

, item);}

return c;

}void

back()

//返回選單

char

choose

(char choice)

//主選單選擇

return choice;

}int

main()

鍊錶實現學生管理系統

include include include define maxlen 100 struct data 定義鍊錶的元素個體 typedef data elemtype struct sqlist 建立鍊錶 sqlist createlist sqlist l r next null printf...

學生資訊管理系統 鍊錶

實驗內容 定義乙個包含學生資訊 學號,姓名,成績 的鍊錶,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生的學號和成績 4 根據指定的位置可返回相應的學生資訊 學號,姓名,成績 5 給定乙個學生資訊,插入到表中指定的位...

基於C C 的學生管理系統

一 需求分析 1 某學校有本科生和研究生兩類學生。a.本科生資訊 學號 姓名 性別 專業 年級 班級 高數 成績 英語成績 c語言 總成績 班級排名 年級排名 其中 學號 姓名 性別 專業 年級 班級 高數 成績 英語成績 c語言成績 為輸入項,總成績是計算項,班級排名是總成績在班內名次,年級排名是...