環境: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語言成績 為輸入項,總成績是計算項,班級排名是總成績在班內名次,年級排名是...