




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目名稱:學(xué)生成績管理系統(tǒng) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 數(shù)據(jù)結(jié)構(gòu)綜合實(shí)驗(yàn)設(shè)計(jì)學(xué)生成績管理系統(tǒng)1. 需求分析系統(tǒng)主要管理學(xué)生信息及成績信息排序等事項(xiàng)。根據(jù)需要可以查詢學(xué)生的信息。主要功能包括如下。(1) 使用中文菜單,界面升級(jí)和用戶輸入要人性化。(2) 將學(xué)生信息保存到文本文檔中,具體對(duì)學(xué)生信息進(jìn)行插入刪除查詢操作時(shí),將保存在文本文檔中的學(xué)生信息提取出來,保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后在對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成,或者在相應(yīng)的命令后,再將學(xué)生信息保存到文本文檔中。(3) 具有數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中。(4) 具有數(shù)據(jù)刪除功能,能最終從文件中刪除。(5) 排序
2、功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),升級(jí)排序算法。(6) 具有多種查詢及輸出功能。(7) 其他功能。(8) 學(xué)生信息的修改。本程序要求設(shè)計(jì)一個(gè)學(xué)生信息管理程序,即用計(jì)算機(jī)來管理一個(gè)學(xué)校的各個(gè)班級(jí)成員的各種信息,實(shí)現(xiàn)學(xué)生信息管理。 (9) 數(shù)據(jù)的輸入形式和輸入值得范圍:首先輸入的是菜單的序號(hào),選擇你想要進(jìn)行 的操作,其次根據(jù)提示輸入相關(guān)的班級(jí)或?qū)W生信息。 (10) 結(jié)果的輸出形式:輸出的是班級(jí)信息或?qū)W生信息。2. 設(shè)計(jì)概要 輸入學(xué)生成績 輸出學(xué)生成績 查詢學(xué)生成績 插入學(xué)生成績 按總分排名 刪除學(xué)生信息 退出系統(tǒng)3函數(shù)Struct Student/結(jié)構(gòu)體Int term;/學(xué)期Int num;/學(xué)號(hào)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é)號(hào)排名void find (list *h)查找主函數(shù)list *del (list *h)刪除函數(shù)list *insert(list *h)插入函數(shù)全部的功能函數(shù) 可以實(shí)現(xiàn)所有的功能4詳細(xì)設(shè)計(jì):程序代碼:#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é)號(hào) char nameMAXLEN; / 姓名 /*/char sex2; /性別/char sex;/*/float sum; /總分float ave; /平均分int computer; /計(jì)算機(jī)成績int english; /英語成績int math; /數(shù)學(xué)成績int chinese;
5、 /語文分?jǐn)?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("請(qǐng)輸入學(xué)生人數(shù).n"); scanf("%d",&n);for(i=1;i<=n;i+) p=(list *)malloc(sizeof(list);printf("請(qǐng)輸入學(xué)生學(xué)號(hào):n"); sc
6、anf("%d",&p->num); printf("請(qǐng)輸入學(xué)生性別:n"); scanf("%s",&p->sex);printf("請(qǐng)輸入學(xué)生姓名:n"); scanf("%s",&p->name); printf("請(qǐng)輸入語文成績:n"); scanf("%d",&p->chinese); printf("請(qǐng)輸入英語成績:n"); scanf("%d",&
7、amp;p->english); printf("請(qǐng)輸入數(shù)學(xué)成績:n"); scanf("%d",&p->math); printf("請(qǐng)輸入計(jì)算機(jī)成績: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é)號(hào)t姓名t性別t語文成績t數(shù)學(xué)成績t英語成績t計(jì)算機(jī)成績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é)號(hào)排序: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é)號(hào)排序:int sortnum(node *list) /學(xué)號(hào)排序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é)號(hào) list *p; p=h->next; printf("請(qǐng)輸入要查找的學(xué)生學(xué)號(hào):n"); scanf("%d",&k); while (p && p->num!=k) p=p->next; if(p) printf("學(xué)號(hào)t姓名t性別t語文成績t數(shù)學(xué)成績t英語成績t計(jì)算機(jī)成績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; / 要?jiǎng)h除的學(xué)生學(xué)號(hào) list *p,*q; q=h; p=h->next; printf("請(qǐng)輸入待刪除的學(xué)
15、生學(xué)號(hào):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)造一個(gè)學(xué)生的信息 q=(list *)mal
16、loc(sizeof(list); printf("請(qǐng)輸入待插入學(xué)生的學(xué)號(hào):n"); scanf("%d",&q->num); printf("請(qǐng)輸入待插入學(xué)生性別:n"); scanf("%s",&q->sex);printf("請(qǐng)輸入待插入學(xué)生的姓名:n"); scanf("%s",&q->name); printf("請(qǐng)輸入待插入的語文成績:n"); scanf("%d",&q-&
17、gt;chinese); printf("請(qǐng)輸入待插入的英語成績:n"); scanf("%d",&q->english); printf("請(qǐng)輸入待插入的數(shù)學(xué)成績:n"); scanf("%d",&q->math); printf("請(qǐng)輸入待插入的計(jì)算機(jī)成績: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é)點(diǎn) count -;while(p!=Null) r=p; p=p->next; / 將新結(jié)點(diǎn)插入表尾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é)號(hào)排序 |n");printf(" | 6. 按總成績排序 |n");printf(" | 7. 輸出所有學(xué)生成績 |n&q
20、uot;); printf(" | 8. 退出系統(tǒng) |n"); printf(" -n"); printf("請(qǐng)輸入你的選擇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("選擇錯(cuò)誤,重新開始n"); 4調(diào)試分析 (1) :調(diào)試過程中在選擇功能也就是簡易界面出遇到了問題后才去switch case的方法也決問題,在設(shè)計(jì)函數(shù)時(shí)第一次只進(jìn)行了成績排序,這樣使得程序不夠完整沒有滿足要求,之后加上了學(xué)號(hào)排序這樣方便了查找,也方便了閱讀。(2) 本次試驗(yàn)還要求利用文件的方式進(jìn)行 操作,后經(jīng)過百度才找到方法,找到了文件操作。(3) 題目中沒有什么復(fù)雜的算法,唯一一個(gè)就是利用了冒泡排序,對(duì)學(xué)生成績和學(xué)生學(xué)號(hào)進(jìn)
22、行了排序,這次實(shí)驗(yàn)主要是通過各種小函數(shù)來進(jìn)行,其中遍歷操作用的次數(shù)最多。(4) 由于本課題中的許多知識(shí)點(diǎn)都沒有學(xué)過都要靠自己到課外的資料中去查找。在用的時(shí)候難免出現(xiàn)這樣那樣的錯(cuò)誤。如開始設(shè)計(jì)出來的菜單不是預(yù)想的那樣,而是總個(gè)窗中出現(xiàn)混亂。解決的這個(gè)問題的辦法是調(diào)整。一個(gè)系統(tǒng)的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設(shè)計(jì)的這個(gè)系統(tǒng)。在設(shè)計(jì)的調(diào)試過程中也無法順利的完成調(diào)試工作。有了一個(gè)清晰簡單的菜單和一些提示信息這后,調(diào)試過程完成的非常順利。 回顧起此次課程設(shè)計(jì),我感慨頗多,的確,從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)
23、過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)熟悉了,本次課程設(shè)計(jì)結(jié)束了,我們通過這次實(shí)踐學(xué)到了許多知識(shí)。學(xué)到了設(shè)計(jì)一個(gè)簡單的系統(tǒng)。要注意哪些方面。也使我們知道自己哪些方面做得還不
24、夠。這不僅是程序設(shè)計(jì),更是鍛煉我們處理問題的能力,同時(shí)也使我們了解到團(tuán)隊(duì)合作的可貴.編寫程序是件細(xì)心活,稍不留神就會(huì)出錯(cuò),這就必須要求我們對(duì)待事情要認(rèn)真!在編寫程序的過程中。錯(cuò)誤不斷出現(xiàn),不同的類型(如少寫了一個(gè)符號(hào),寫錯(cuò)了字母,用錯(cuò)了函數(shù)等等)層出不窮,這考驗(yàn)我們待事細(xì)心,耐心,能不能堅(jiān)持到底,不能半途而廢。 但我們總結(jié)出了一點(diǎn)點(diǎn)的經(jīng)驗(yàn)如下: 1、 要對(duì)系統(tǒng)的功能和要求做出詳細(xì)的分析,并合理分解任務(wù)。2、 把分解出來的子任務(wù),做給一個(gè)相對(duì)獨(dú)立的模塊。 3、 在設(shè)計(jì)一個(gè)模塊之前,要簡單構(gòu)想一下總界面的顯視情況。 4、針對(duì)構(gòu)想出來的界面進(jìn)行程序的編寫。5.測試結(jié)果:上面是一個(gè)簡易的界面有8中功能:選則功能1,可以登錄學(xué)生的成績,可以輸入多個(gè)人但是必須一個(gè)一個(gè)輸入。選擇功能2可以查看學(xué)生的成績前提是有1操作登錄的出成績才可以。功能3插入一個(gè)學(xué)生的的成績方式同1操作相同,注意相同的學(xué)號(hào)會(huì)直接覆蓋操作4刪除學(xué)生的成績這是會(huì)有兩種情況(1) :輸入的學(xué)好號(hào)里存在學(xué)生,這是會(huì)直接刪除該學(xué)生。(2) :輸入的學(xué)號(hào)不存在學(xué)生,這是會(huì)顯示不存在該學(xué)生。操作5按學(xué)號(hào)排序:利用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江國企招聘2025寧波余姚景隆置業(yè)有限公司招聘7人筆試參考題庫附帶答案詳解
- 重慶三峽學(xué)院《通信仿真實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 成都藝術(shù)職業(yè)大學(xué)《管理智慧》2023-2024學(xué)年第二學(xué)期期末試卷
- 三峽大學(xué)科技學(xué)院《多媒體課件設(shè)計(jì)與開發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 成都理工大學(xué)工程技術(shù)學(xué)院《數(shù)據(jù)采集與處理》2023-2024學(xué)年第二學(xué)期期末試卷
- 張家口學(xué)院《量子力學(xué)純英文》2023-2024學(xué)年第二學(xué)期期末試卷
- 安順學(xué)院《電機(jī)學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 濮陽科技職業(yè)學(xué)院《數(shù)學(xué)教學(xué)與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢晴川學(xué)院《軋制工藝學(xué)板帶材生產(chǎn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西旅游商貿(mào)職業(yè)學(xué)院《黑白圖式語言-造型》2023-2024學(xué)年第二學(xué)期期末試卷
- 幼兒繪本故事:什么都行的哈力船長
- 一二三級(jí)配電箱原理圖、施工臨電平面圖
- 潔凈車間生產(chǎn)管理制度
- DB23∕T 1019-2020 黑龍江省建筑工程資料管理標(biāo)準(zhǔn)
- 杭州市市區(qū)歷年公房租金調(diào)整一覽表
- 高考考前指導(dǎo)(班主任)心理方面、應(yīng)試復(fù)習(xí)方面等
- 熱力小室方案計(jì)劃全
- 麗聲北極星分級(jí)繪本第一級(jí)上My Noisy Schoolbag課件
- 網(wǎng)絡(luò)銷售授權(quán)合同范本
- 建筑裝飾專業(yè)中級(jí)職稱理論考試題庫-建設(shè)工程專業(yè)中級(jí)職稱理論考試題庫
- 小學(xué)六年級(jí)數(shù)學(xué)總復(fù)習(xí)講座(課堂PPT)
評(píng)論
0/150
提交評(píng)論