大一c語言程序設(shè)計大作業(yè)——學(xué)生成績管理系統(tǒng)

給朋友講東西的時候偶然想起了自己的程序設(shè)計作業(yè)县习,當時分數(shù)還可以作谚,決定把代碼放上來可以給學(xué)弟學(xué)妹一個參考。

以下為實驗報告內(nèi)容段审,代碼準備放到github上面,當時寫的不一定好可能會有bug闹蒜,僅供參考寺枉。

地址:https://github.com/x-Arte/Homework/tree/master/year1%20Foundations%20of%20Program%20Design

終于補上了... 我給忘了

一. 功能描述

Part1 新建

在程序開始時自動創(chuàng)建表格,可一次性輸入多個學(xué)科及其名稱绷落,和多個學(xué)生成績姥闪。

Part2 輸入數(shù)據(jù)

本部分包括三個功能,插入學(xué)生數(shù)據(jù)砌烁,刪除學(xué)生數(shù)據(jù)筐喳,添加科目。

插入學(xué)生數(shù)據(jù)

輸入新增的學(xué)生數(shù)目函喉,和想插入的學(xué)生隊列的前一位學(xué)生的序號避归,并輸入新學(xué)生的全部成績。

刪除一位學(xué)生數(shù)據(jù)

支持輸入學(xué)生隊列序號的刪除和輸入姓名的刪除管呵,但在有重名情況時僅會刪除在隊列中第一位擁有此姓名的學(xué)生梳毙。

添加科目

支持一次性添加多個科目,但科目數(shù)量不會超過上限捐下。輸入添加的科目基本信息后账锹,會自動循環(huán)每位已有的學(xué)生,進行新添加的科目成績輸入坷襟。

Part3 計算數(shù)據(jù)

本部分包括兩個功能奸柬,計算學(xué)生平均分和計算科目平均分

計算學(xué)生平均分

根據(jù)學(xué)生參加考試的考試科目數(shù)量進行平均分計算,沒有參加考試的科目不會參與計算婴程。若學(xué)生沒有參加考試廓奕,則會輸出沒有參加考試。

支持根據(jù)學(xué)生在學(xué)生隊列中的序號或者學(xué)生姓名進行計算排抬,在根據(jù)姓名計算時所有的重名學(xué)生按照在隊列中的排序順序進行平均分輸出懂从。

計算科目平均分

輸入科目名稱并計算參加考試的學(xué)生平均分授段,不會包含沒有參加考試的學(xué)生的成績蹲蒲。若沒有學(xué)生參加考試,則會輸出沒有學(xué)生參加考試

Part4 搜索數(shù)據(jù)

可以根據(jù)學(xué)生在學(xué)生隊列中的序號或者學(xué)生姓名進行查找并輸出該學(xué)生的成績侵贵,在根據(jù)姓名搜索時所有的重名學(xué)生按照在隊列中的排序順序進行輸出届搁。

Part5 輸出全部數(shù)據(jù)

以表格形式輸出全部數(shù)據(jù),學(xué)生沒有參與考試用“x”代替,同時會輸出所有學(xué)生的平均分和所有科目的平均分卡睦,平均分計算規(guī)則與Part2相同宴胧。

備注:

1. 具有合理報錯和循環(huán)輸入的功能,但仍有部分錯誤不支持識別表锻,在輸入數(shù)據(jù)時盡量按照提示輸入恕齐。

2. 支持任意人數(shù)儲存,但限制科目的數(shù)量瞬逊,限制的科目數(shù)量可以在程序預(yù)處理部分更改显歧。

3. 學(xué)生姓名和科目名稱均有長度限制,最大長度可以在程序預(yù)處理部分更改确镊。

4. 學(xué)生成績輸入不支持輸入字母士骤,也沒有分辨字母功能,盡量輸入正確蕾域。(報錯隨緣

5. 學(xué)生成績輸入負數(shù)代表沒有參加本學(xué)科考試拷肌。

6. 支持新建及后期操作時增加任意數(shù)目學(xué)生數(shù)據(jù)。

7. 插入學(xué)生數(shù)據(jù)時支持插入學(xué)生隊列的任意位置旨巷。

8. 不支持更改已輸入的數(shù)據(jù)巨缘。

9. 僅支持同時刪除一位學(xué)生,支持按照所排位置和學(xué)生姓名進行刪除采呐。

10. 支持學(xué)生重名带猴,在選擇輸出時會一次性輸出所有相同姓名學(xué)生信息。

11. 輸出學(xué)生一功能可能出現(xiàn)任意成績?yōu)槿我庳摂?shù)懈万,均代表學(xué)生未參加此考試拴清。

函數(shù)介紹

本程序共使用了21自定義個函數(shù)+main函數(shù),自定義函數(shù)列表如下会通。

1. void welcome();

功能:輸出歡迎詞口予。

2. void setting(int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:新建并初始化鏈表。

3. void add_sub(int* sub_n, char* sub_name[]);

功能:一次性添加多個科目涕侈。

4. student_data* add_stu(int flag, int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:一次性添加多個學(xué)生沪停。

5. student_data* search_stu(int flag, student_data* p0);//number

功能:根據(jù)學(xué)生在隊列中的序號查找儲存學(xué)生信息的節(jié)點,并返回指向這個節(jié)點的指針裳涛,沒有找到則返回NULL木张。

6. student_data* search_stu_name(int* stu_n,char this_name[], student_data* p0);//name

功能:根據(jù)學(xué)生姓名查找儲存學(xué)生信息的節(jié)點,并返回指向這個節(jié)點的指針端三,沒有找到則返回NULL舷礼。

7. int search_sub_name(char this_name[], char* sub_name[], int* sub_n);

功能:根據(jù)學(xué)科姓名查找學(xué)科在學(xué)科隊列中的序號,并返回序號郊闯,沒有找到則? ? ? 返回-1妻献。

8. void new_student(int* sub_n, char* sub_name[], student_data* p);

功能:在已給的指針指向的節(jié)點中填入當前一個新學(xué)生的數(shù)據(jù)蛛株。

9. void enter_stu_name(char this_name[]);

功能:填入當前學(xué)生的姓名。

10. void enter_sub_name(char sun_name[]);

功能:填入當前學(xué)生的姓名育拨。

注:與上一個函數(shù)的區(qū)別為提示不同谨履。

11. void print_main_menu();

功能:輸出主菜單

12. void input_data(int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:輸出“輸入數(shù)據(jù)”的次菜單,并根據(jù)選擇進行不同函數(shù)的調(diào)用并輸出結(jié)果熬丧。

13. void insert_stu(int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:在已有的學(xué)生隊列中插入新的不限數(shù)量的學(xué)生數(shù)據(jù)笋粟。

14. void delete_stu(int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:根據(jù)用戶的選擇進行輸入學(xué)生隊列序號的刪除或輸入姓名的刪除。

15. void deleting(student_data* p);//delete next

功能:刪除所給指針的下一個數(shù)據(jù)析蝴。

16. void more_subject(int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:在已有的科目后添加新的不超過限制的多個學(xué)科矗钟,并輸入學(xué)生在這些科目中的成績。

17. void calculate(int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:輸出“計算數(shù)據(jù)”的次菜單嫌变,并根據(jù)選擇進行不同函數(shù)的調(diào)用并輸出結(jié)果吨艇。

18. double calculate_average_stu(int* sub_n, student_data* p);

功能:計算所給指針的指向的學(xué)生的平均成績,不包含學(xué)生未參加考試腾啥。

19. double calculate_average_sub(int* stu_n, int n, student_data* p0);

功能:計算所給序號的科目的平均成績东涡,不包含學(xué)生未參加考試。

20. void print_stu_data(int* sub_n, char* sub_name[], student_data* p);

功能:輸出所給指針的指向的學(xué)生的成績倘待。

21. void print_all_data(int* stu_n, int* sub_n, char* sub_name[], student_data* p0);

功能:以表格形式輸出所有學(xué)生的成績及各個科目的平均分疮跑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市凸舵,隨后出現(xiàn)的幾起案子祖娘,更是在濱河造成了極大的恐慌,老刑警劉巖啊奄,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渐苏,死亡現(xiàn)場離奇詭異,居然都是意外死亡菇夸,警方通過查閱死者的電腦和手機琼富,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庄新,“玉大人鞠眉,你說我怎么就攤上這事≡裾” “怎么了械蹋?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長羞芍。 經(jīng)常有香客問我哗戈,道長,這世上最難降的妖魔是什么涩金? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任谱醇,我火速辦了婚禮暇仲,結(jié)果婚禮上步做,老公的妹妹穿的比我還像新娘副渴。我一直安慰自己,他們只是感情好全度,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布煮剧。 她就那樣靜靜地躺著,像睡著了一般将鸵。 火紅的嫁衣襯著肌膚如雪勉盅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天顶掉,我揣著相機與錄音草娜,去河邊找鬼。 笑死痒筒,一個胖子當著我的面吹牛宰闰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播簿透,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼移袍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了老充?” 一聲冷哼從身側(cè)響起葡盗,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啡浊,沒想到半個月后觅够,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡巷嚣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年蔚约,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涂籽。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡苹祟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出评雌,到底是詐尸還是另有隱情树枫,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布景东,位于F島的核電站砂轻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏斤吐。R本人自食惡果不足惜搔涝,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一厨喂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧庄呈,春花似錦蜕煌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至文兑,卻和暖如春盒刚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绿贞。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工因块, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人籍铁。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓涡上,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寨辩。 傳聞我的和親對象是個殘疾皇子吓懈,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容