




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計題目名稱:學(xué)生成績管理系統(tǒng) 計算機科學(xué)與技術(shù)學(xué)院 數(shù)據(jù)結(jié)構(gòu)綜合實驗設(shè)計學(xué)生成績管理系統(tǒng)1. 需求分析系統(tǒng)主要管理學(xué)生信息及成績信息排序等事項。根據(jù)需要可以查詢學(xué)生的信息。主要功能包括如下。(1) 使用中文菜單,界面升級和用戶輸入要人性化。(2) 將學(xué)生信息保存到文本文檔中,具體對學(xué)生信息進行插入刪除查詢操作時,將保存在文本文檔中的學(xué)生信息提取出來,保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后在對該數(shù)據(jù)結(jié)構(gòu)進行操作,所有操作完成,或者在相應(yīng)的命令后,再將學(xué)生信息保存到文本文檔中。(3) 具有數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中。(4) 具有數(shù)據(jù)刪除功能,能最終從文件中刪除。(5) 排序
2、功能,根據(jù)自己設(shè)計的數(shù)據(jù)結(jié)構(gòu),升級排序算法。(6) 具有多種查詢及輸出功能。(7) 其他功能。(8) 學(xué)生信息的修改。本程序要求設(shè)計一個學(xué)生信息管理程序,即用計算機來管理一個學(xué)校的各個班級成員的各種信息,實現(xiàn)學(xué)生信息管理。 (9) 數(shù)據(jù)的輸入形式和輸入值得范圍:首先輸入的是菜單的序號,選擇你想要進行 的操作,其次根據(jù)提示輸入相關(guān)的班級或?qū)W生信息。 (10) 結(jié)果的輸出形式:輸出的是班級信息或?qū)W生信息。2. 設(shè)計概要 輸入學(xué)生成績 輸出學(xué)生成績 查詢學(xué)生成績 插入學(xué)生成績 按總分排名 刪除學(xué)生信息 退出系統(tǒng)3函數(shù)Struct Student/結(jié)構(gòu)體Int term;/學(xué)期Int num;/學(xué)號C
3、har name12;姓名Float mrak1;成績Float mark2;Float mark3;Float sum;/總分Float average;/平均分;void input(list *head) 輸入函數(shù)void output(list *h) 輸出函數(shù)void sortsum(list *head) 總成績排名void sortnum(list *head)按學(xué)號排名void find (list *h)查找主函數(shù)list *del (list *h)刪除函數(shù)list *insert(list *h)插入函數(shù)全部的功能函數(shù) 可以實現(xiàn)所有的功能4詳細設(shè)計:程序代碼:#inclu
4、de <stdio.h>#include <stdlib.h>#include <malloc.h>#define MAXLEN 100#define Null 0/*/int count = 0;/*/typedef struct node int num; / 學(xué)號 char nameMAXLEN; / 姓名 /*/char sex2; /性別/char sex;/*/float sum; /總分float ave; /平均分int computer; /計算機成績int english; /英語成績int math; /數(shù)學(xué)成績int chinese;
5、 /語文分數(shù)struct node *next; / 指針域list;/*/void input(list *head) /輸入函數(shù)/*/list *p,*r;int i,n; / n 為學(xué)生人數(shù) /*p=(list *)malloc(sizeof(list);p->next=Null;*/r=head; printf("請輸入學(xué)生人數(shù).n"); scanf("%d",&n);for(i=1;i<=n;i+) p=(list *)malloc(sizeof(list);printf("請輸入學(xué)生學(xué)號:n"); sc
6、anf("%d",&p->num); printf("請輸入學(xué)生性別:n"); scanf("%s",&p->sex);printf("請輸入學(xué)生姓名:n"); scanf("%s",&p->name); printf("請輸入語文成績:n"); scanf("%d",&p->chinese); printf("請輸入英語成績:n"); scanf("%d",&
7、amp;p->english); printf("請輸入數(shù)學(xué)成績:n"); scanf("%d",&p->math); printf("請輸入計算機成績:n"); scanf("%d",&p->computer); (p->sum)=(p->chinese)+(p->computer)+(p->math)+(p->english);(p->ave)=(p->sum)/4;p->next=Null; r->next=p; r=r-
8、>next;/*/count +;/*/ void output(list *h) /輸出函數(shù) /*/if (h = NULL)printf("記錄為空!");/*/list *p; printf("學(xué)號t姓名t性別t語文成績t數(shù)學(xué)成績t英語成績t計算機成績t平均分t總成績tn"); p=h->next; while (p!=NULL) printf("%dnt%st%st%dt%dt%dt%dt%5.1ft%5.1fn",p->num,p->name,p->sex,p->chinese,p->
9、;math,p->english,p->computer,p->ave,p->sum);p=p->next;輸出函數(shù)void sortsum(list *head) /總成績排序/ struct node temp;/ const int n=20;/ int i,j,k;/ printf("按照總成績排序:t");/ for(i=0;i<n;i+)/ / k=i;/ for(j=i+1;j<n;j+)/ if(listj.sum<listk.sum)/ k=j;/ temp=listk;listk=listi;listi=t
10、emp;/ output(p);/ int i=count, j, k;printf("按照總成績排序:n");if (count=0 | count=1)return;list *p, *temp;while(i > 0)p=head;for(j=0; j<i-1; j+)if(p->next->sum > p->next->next->sum) temp = p->next ;p->next = p->next->next;temp->next = p->next->next;p-
11、>next->next = temp;p = p->next; i-; /*/利用了冒泡排序的方法把成績排序:void sortnum(list *head)int i=count, j, k;printf("按照學(xué)號排序:n");if (count=0 | count=1)return;list *p, *temp;while(i > 0)p=head;for(j=0; j<i-1; j+)if(p->next->num > p->next->next->num) temp = p->next ;p-
12、>next = p->next->next;temp->next = p->next->next;p->next->next = temp;p = p->next; i-; /*/*利用了冒泡排序的方法把學(xué)號排序:int sortnum(node *list) /學(xué)號排序struct node temp;const int n=20;int i,j,k;printf("按照總成績排序:t");for(i=0;i<n;i+)k=i;for(j=i+1;j<n;j+)if(listj.num<listk.n
13、um)k=j;temp=listk;listk=listi;listi=temp;return 0;*/void find (list *h) /查找函數(shù) int k; / 要找的學(xué)生學(xué)號 list *p; p=h->next; printf("請輸入要查找的學(xué)生學(xué)號:n"); scanf("%d",&k); while (p && p->num!=k) p=p->next; if(p) printf("學(xué)號t姓名t性別t語文成績t數(shù)學(xué)成績t英語成績t計算機成績t平均成績t總成績n"); pr
14、intf("%dt%st%st%dt%dt%dt%d%5.1ft%5.1fn",p->num,p->name,p->sex,p->chinese,p->math,p->english,p->computer,p->ave,p->sum); else printf("目標(biāo)沒找到n");利用遍歷按要求查找相應(yīng)的學(xué)生:list *del (list *h) /刪除函數(shù) int k; / 要刪除的學(xué)生學(xué)號 list *p,*q; q=h; p=h->next; printf("請輸入待刪除的學(xué)
15、生學(xué)號:n"); scanf("%d",&k); while (p && p->num!=k) q=p; p=p->next; if(p) q->next=p->next; free(p); count -; else printf("沒有此學(xué)生的記錄,無法刪除!n"); return (h);list *insert(list *h) /插入函數(shù) list *p,*q,*r,*head; head=h; r=h; p=h->next; / 下面構(gòu)造一個學(xué)生的信息 q=(list *)mal
16、loc(sizeof(list); printf("請輸入待插入學(xué)生的學(xué)號:n"); scanf("%d",&q->num); printf("請輸入待插入學(xué)生性別:n"); scanf("%s",&q->sex);printf("請輸入待插入學(xué)生的姓名:n"); scanf("%s",&q->name); printf("請輸入待插入的語文成績:n"); scanf("%d",&q-&
17、gt;chinese); printf("請輸入待插入的英語成績:n"); scanf("%d",&q->english); printf("請輸入待插入的數(shù)學(xué)成績:n"); scanf("%d",&q->math); printf("請輸入待插入的計算機成績:n"); scanf("%d",&q->computer); (q->sum)=(q->chinese)+(q->computer)+(q->math)
18、+(q->english);(q->ave)=(q->sum)/4;q->next=Null; / 找到鏈表的結(jié)尾結(jié)點 count -;while(p!=Null) r=p; p=p->next; / 將新結(jié)點插入表尾r->next=q; r=r->next; return (head);void main() /主函數(shù) list *p; /*/p=(list *)malloc(sizeof(list);p->next=Null;/*/int k; / 控制循環(huán)的標(biāo)志 while (1) printf(" -n"); prin
19、tf(" | 學(xué)生成績管理系統(tǒng) |n"); printf(" -n"); printf(" | 1. 登記成績 |n"); printf(" | 2. 查詢成績 |n"); printf(" | 3. 插入成績 |n"); printf(" | 4. 刪除成績 |n"); printf(" | 5. 按學(xué)號排序 |n");printf(" | 6. 按總成績排序 |n");printf(" | 7. 輸出所有學(xué)生成績 |n&q
20、uot;); printf(" | 8. 退出系統(tǒng) |n"); printf(" -n"); printf("請輸入你的選擇n"); scanf("%d",&k); switch(k) case 1:/ p=input();/*/input(p);/*/break; case 2:find(p);break; case 3:p=insert(p);break; case 4:p=del(p);break; case 5:sortnum(p);output(p);break; case 6:sortsum(p
21、); output(p);break; case 7:output(p);break; case 8:exit(0); default:printf("選擇錯誤,重新開始n"); 4調(diào)試分析 (1) :調(diào)試過程中在選擇功能也就是簡易界面出遇到了問題后才去switch case的方法也決問題,在設(shè)計函數(shù)時第一次只進行了成績排序,這樣使得程序不夠完整沒有滿足要求,之后加上了學(xué)號排序這樣方便了查找,也方便了閱讀。(2) 本次試驗還要求利用文件的方式進行 操作,后經(jīng)過百度才找到方法,找到了文件操作。(3) 題目中沒有什么復(fù)雜的算法,唯一一個就是利用了冒泡排序,對學(xué)生成績和學(xué)生學(xué)號進
22、行了排序,這次實驗主要是通過各種小函數(shù)來進行,其中遍歷操作用的次數(shù)最多。(4) 由于本課題中的許多知識點都沒有學(xué)過都要靠自己到課外的資料中去查找。在用的時候難免出現(xiàn)這樣那樣的錯誤。如開始設(shè)計出來的菜單不是預(yù)想的那樣,而是總個窗中出現(xiàn)混亂。解決的這個問題的辦法是調(diào)整。一個系統(tǒng)的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設(shè)計的這個系統(tǒng)。在設(shè)計的調(diào)試過程中也無法順利的完成調(diào)試工作。有了一個清晰簡單的菜單和一些提示信息這后,調(diào)試過程完成的非常順利。 回顧起此次課程設(shè)計,我感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)
23、過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識熟悉了,本次課程設(shè)計結(jié)束了,我們通過這次實踐學(xué)到了許多知識。學(xué)到了設(shè)計一個簡單的系統(tǒng)。要注意哪些方面。也使我們知道自己哪些方面做得還不
24、夠。這不僅是程序設(shè)計,更是鍛煉我們處理問題的能力,同時也使我們了解到團隊合作的可貴.編寫程序是件細心活,稍不留神就會出錯,這就必須要求我們對待事情要認真!在編寫程序的過程中。錯誤不斷出現(xiàn),不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數(shù)等等)層出不窮,這考驗我們待事細心,耐心,能不能堅持到底,不能半途而廢。 但我們總結(jié)出了一點點的經(jīng)驗如下: 1、 要對系統(tǒng)的功能和要求做出詳細的分析,并合理分解任務(wù)。2、 把分解出來的子任務(wù),做給一個相對獨立的模塊。 3、 在設(shè)計一個模塊之前,要簡單構(gòu)想一下總界面的顯視情況。 4、針對構(gòu)想出來的界面進行程序的編寫。5.測試結(jié)果:上面是一個簡易的界面有8中功能:選則功能1,可以登錄學(xué)生的成績,可以輸入多個人但是必須一個一個輸入。選擇功能2可以查看學(xué)生的成績前提是有1操作登錄的出成績才可以。功能3插入一個學(xué)生的的成績方式同1操作相同,注意相同的學(xué)號會直接覆蓋操作4刪除學(xué)生的成績這是會有兩種情況(1) :輸入的學(xué)好號里存在學(xué)生,這是會直接刪除該學(xué)生。(2) :輸入的學(xué)號不存在學(xué)生,這是會顯示不存在該學(xué)生。操作5按學(xué)號排序:利用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZNZ 264.1-2024 重金屬中度污染農(nóng)田土壤修復(fù)和安全利用技術(shù)規(guī)范 第1部分:超積累東南景天與油葵輪作
- 二零二五年度車輛轉(zhuǎn)讓與二手車交易及金融服務(wù)協(xié)議
- 2025年度蛋糕店與體育賽事合作贊助協(xié)議
- 2025年度道路橋梁維修施工安全協(xié)議書
- 2025年度網(wǎng)絡(luò)安全產(chǎn)品銷售提成與技術(shù)服務(wù)合同
- 二零二五年度企業(yè)員工宿舍三方租賃協(xié)議
- 二零二五年度臨時廚房工作人員聘用合同
- 二零二五年度個體商戶勞動合同(體育賽事組織與運營)
- 中學(xué)生環(huán)保行動策劃案解讀
- 監(jiān)控項目合作合同監(jiān)控施工合同
- 2025年湖南鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫1套
- 學(xué)生創(chuàng)新能力培養(yǎng)方案計劃
- 《西門子PLC應(yīng)用》一體化教案1-20周全篇
- 新蘇教版一年級科學(xué)下冊第一單元第1課《撿石頭》課件
- 2.2學(xué)會管理情緒 課件 -2024-2025學(xué)年統(tǒng)編版道德與法治七年級下冊
- 2025年湖北省技能高考(建筑技術(shù)類)《建筑材料與檢測》模擬練習(xí)試題庫(含答案)
- 2024-2025學(xué)年第二學(xué)期教學(xué)教研工作安排表 第二版
- 人行道道鋪設(shè)施工方案
- 2025年度模特代言合同隱私條款規(guī)范樣本4篇
- 【歷史】元朝的建立與統(tǒng)一課件 2024-2025學(xué)年統(tǒng)編版七年級歷史下冊
- 2025年度游戲工作室游戲客服中心用工合同
評論
0/150
提交評論