C程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)設(shè)計(jì)報(bào)告鏈表建立學(xué)生成績(jī)管理系統(tǒng).doc
《C程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)設(shè)計(jì)報(bào)告鏈表建立學(xué)生成績(jī)管理系統(tǒng).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《C程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)設(shè)計(jì)報(bào)告鏈表建立學(xué)生成績(jī)管理系統(tǒng).doc(52頁(yè)珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、設(shè)計(jì)題目: 班 級(jí):姓 名: 學(xué) 號(hào):完畢日期:目 錄目 錄11.課程設(shè)計(jì)目的和規(guī)定11.1課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)的題目規(guī)定12.課程設(shè)計(jì)任務(wù)內(nèi)容22.1學(xué)生成績(jī)管理系統(tǒng)重要功能實(shí)現(xiàn)方式22.1.1鏈表解決數(shù)據(jù)22.1.2文獻(xiàn)讀寫(xiě)存儲(chǔ)學(xué)生信息22.2創(chuàng)建數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)23.具體設(shè)計(jì)說(shuō)明33.1題目設(shè)計(jì)分析33.1.1需求分析33.1.2解題思緒分析33.2設(shè)計(jì)過(guò)程33.2.1鏈表(結(jié)構(gòu)體)定義33.2.2函數(shù)編寫(xiě)33.2.3編譯與調(diào)試54.軟件使用說(shuō)明64.1主界面介紹64.2創(chuàng)建學(xué)生信息數(shù)據(jù)表64.3增長(zhǎng)數(shù)據(jù)信息64.4刪除數(shù)據(jù)信息64.5修改信息64.6查找信息64.7記錄功
2、能75.課程設(shè)計(jì)心得與體會(huì)75.1概述75.2心得與體會(huì)75.2.1數(shù)據(jù)庫(kù)管理系統(tǒng)鏈表+文獻(xiàn)讀寫(xiě)75.2.2指針與內(nèi)存86.參考文獻(xiàn)87.附錄:部分程序清單81. 課程設(shè)計(jì)目的和規(guī)定1.1課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)的題目規(guī)定學(xué)生包含以下信息項(xiàng):學(xué)號(hào)、姓名、學(xué)院、班級(jí)、高數(shù)成績(jī)、英語(yǔ)成績(jī)、C語(yǔ)言成績(jī)、總分、平均分。系統(tǒng)的重要功能涉及:1. 創(chuàng)建學(xué)生成績(jī)信息文獻(xiàn),根據(jù)提醒輸入學(xué)生的各項(xiàng)信息,計(jì)算出總分和平均分,然后按學(xué)號(hào)對(duì)學(xué)生信息進(jìn)行排序,并將排序后的學(xué)生成績(jī)信息存儲(chǔ)到一個(gè)二進(jìn)制文獻(xiàn)中。2. 增長(zhǎng)學(xué)生信息,在原有學(xué)生信息文獻(xiàn)的基礎(chǔ)上增長(zhǎng)新的學(xué)生成績(jī)信息,規(guī)定:增長(zhǎng)后的學(xué)生信息仍按學(xué)號(hào)排序,并繼續(xù)保存
3、至原文獻(xiàn)。3. 刪除學(xué)生信息,提醒用戶(hù)輸入要進(jìn)行刪除操作的學(xué)號(hào),假如在文獻(xiàn)中有該信息存在,則將該學(xué)號(hào)所相應(yīng)的學(xué)生信息刪除,否則輸出提醒信息,并提醒用戶(hù)選擇是否繼續(xù)進(jìn)行刪除操作。4. 修改學(xué)生信息,提醒用戶(hù)輸入要進(jìn)行修改操作的學(xué)號(hào),假如在文獻(xiàn)中有該息存在,則將提醒用戶(hù)輸入該學(xué)號(hào)相應(yīng)的要修改的選項(xiàng),結(jié)果保存至原文獻(xiàn),并提醒用戶(hù)選擇是否繼續(xù)進(jìn)行修改操作。5. 按不同條件對(duì)學(xué)生信息進(jìn)行查詢(xún)操作,輸出滿(mǎn)足條件的學(xué)生信息。(1) 按學(xué)號(hào)查詢(xún),輸入一個(gè)學(xué)號(hào),輸出相應(yīng)的學(xué)生信息。(2) 按姓名查詢(xún),涉及精確查詢(xún)(輸入全名),模糊查詢(xún)(輸入姓)。(3) 按學(xué)院查詢(xún),輸入學(xué)院名稱(chēng),輸出該學(xué)院的所有學(xué)生的信息。(4
4、) 按班級(jí)查詢(xún),輸入班級(jí)名稱(chēng),輸出該班級(jí)的所有學(xué)生的信息。6. 按不同條件對(duì)學(xué)生成績(jī)進(jìn)行記錄工作。(兩個(gè)表)(1) 按總分對(duì)學(xué)生信息進(jìn)行排序(由高到低),輸出排序后的信息,并將排序后的學(xué)生信息存放到一個(gè)新的二進(jìn)制文獻(xiàn)中。(2) 按平均分記錄各個(gè)分?jǐn)?shù)段的學(xué)生人數(shù)(n)(不及格,60-69,70-79,80-89,90-100)。(3) 分別找出3門(mén)課程成績(jī)最高的學(xué)生,并輸出他們的信息。(4) 分別記錄出3門(mén)課程的不及格率(n/N),并輸出。2. 課程設(shè)計(jì)任務(wù)內(nèi)容2.1學(xué)生成績(jī)管理系統(tǒng)重要功能實(shí)現(xiàn)方式2.1.1鏈表解決數(shù)據(jù)學(xué)生作為某一對(duì)象,其自身包含不同屬性,而每個(gè)屬性的類(lèi)型并不完全相同,因而,我
5、們必須通過(guò)創(chuàng)建結(jié)構(gòu)體類(lèi)型的變量來(lái)定義學(xué)生信息。而用戶(hù)在輸入學(xué)生信息時(shí),并不一定指定學(xué)生人數(shù),因此,需要系統(tǒng)動(dòng)態(tài)分派內(nèi)存給節(jié)點(diǎn),從而達(dá)成隨時(shí)增刪的目的。但,結(jié)構(gòu)體僅能記錄單個(gè)學(xué)生的信息,并不能是所有信息產(chǎn)生聯(lián)系,故,必須通過(guò)定義結(jié)構(gòu)體指針變量,來(lái)將所有的學(xué)生信息串連在一起。2.1.2文獻(xiàn)讀寫(xiě)存儲(chǔ)學(xué)生信息在學(xué)生成績(jī)管理系統(tǒng)中輸入的學(xué)生信息只暫時(shí)存儲(chǔ)于內(nèi)存中,當(dāng)學(xué)生成績(jī)管理系統(tǒng)關(guān)閉時(shí),內(nèi)存會(huì)自動(dòng)清除已輸入的信息,從而使學(xué)生信息丟失。所以,必須將學(xué)生信息存入指定文獻(xiàn)中才干實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。2.2創(chuàng)建數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)學(xué)生成績(jī)管理系統(tǒng)的實(shí)質(zhì)即簡(jiǎn)易的數(shù)據(jù)庫(kù)管理系統(tǒng),通過(guò)對(duì)數(shù)據(jù)的增刪改查,而創(chuàng)建出特定
6、的數(shù)據(jù)解決倉(cāng)庫(kù)。數(shù)據(jù)庫(kù)管理系統(tǒng)(DBSM)可以對(duì)存入的數(shù)據(jù)進(jìn)行統(tǒng)一的管理和控制,具有數(shù)據(jù)的完整性,數(shù)據(jù)的安全性,并發(fā)控制,和數(shù)據(jù)庫(kù)的恢復(fù)等功能。運(yùn)用關(guān)系模型和關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),使數(shù)據(jù)以二維表的形式表達(dá),數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)樸清楚,易學(xué)易用。3. 具體設(shè)計(jì)說(shuō)明3.1題目設(shè)計(jì)分析3.1.1需求分析學(xué)生成績(jī)管理系統(tǒng)是應(yīng)用于學(xué)生考試成績(jī)存儲(chǔ)的簡(jiǎn)易系統(tǒng)。通過(guò)該系統(tǒng)可以創(chuàng)建、增長(zhǎng)、刪除、查詢(xún)學(xué)生的個(gè)人信息,記錄學(xué)生考試情況,并可以存儲(chǔ)到指定目錄的文獻(xiàn)中,以達(dá)成創(chuàng)建數(shù)據(jù)庫(kù)管理系統(tǒng)的目的。3.1.2解題思緒分析一方面,分析學(xué)生成績(jī)管理系統(tǒng)的重要功能模塊。該系統(tǒng)組要分為兩大模塊:一是,對(duì)數(shù)據(jù)信息的增刪改查;二是,對(duì)已有信息
7、的記錄。另一方面,分析該系統(tǒng)的實(shí)現(xiàn)方式。該系統(tǒng)為鏈表的具體應(yīng)用,需要純熟掌握鏈表及文獻(xiàn)讀寫(xiě)的相關(guān)知識(shí)。此外,需要將每個(gè)具體功能編寫(xiě)為單一的被調(diào)函數(shù),主函數(shù)實(shí)現(xiàn)輸入輸出功能,以達(dá)成優(yōu)化程序的目的。最后,運(yùn)營(yíng)并調(diào)試程序,更改程序錯(cuò)誤,優(yōu)化程序功能。3.2設(shè)計(jì)過(guò)程3.2.1鏈表(結(jié)構(gòu)體)定義struct nodeint num;char namN;char colN;char claN;float math;float eng;float clan;float sum;float ave;struct node *next;3.2.2函數(shù)編寫(xiě)l 主函數(shù)void main()主函數(shù)void main(
8、)實(shí)現(xiàn)各功能的選擇,分為創(chuàng)建、增長(zhǎng)、刪除、修改、查詢(xún),以及記錄等功能,而各功能分別編寫(xiě)為被調(diào)函數(shù)。運(yùn)用while循環(huán)實(shí)現(xiàn)用戶(hù)的人性化操作,以達(dá)成結(jié)束程序或繼續(xù)運(yùn)營(yíng)程序的目的。創(chuàng)建、增長(zhǎng)、刪除、修改、查詢(xún)、記錄等被調(diào)函數(shù),都須寫(xiě)于主函數(shù)之上;運(yùn)用switch()函數(shù)實(shí)現(xiàn)各功能的選擇。對(duì)數(shù)據(jù)的增、刪、改操作,必須返回結(jié)構(gòu)退指針,而查找功能只需要輸出即可。l 創(chuàng)建鏈表struct node *creat(void)創(chuàng)建新鏈表函數(shù),返回鏈表頭指針。定義結(jié)構(gòu)體指針變量“struct node *h=NULL, *p,*q,*r;”。h為頭指針,及數(shù)據(jù)表的表頭;動(dòng)態(tài)分派內(nèi)存給p,令其始終指向新節(jié)點(diǎn);而q,
9、r而中間輔助指針,是鏈表按規(guī)定鏈接。在創(chuàng)建鏈表的過(guò)程中,動(dòng)態(tài)分派內(nèi)存給指針p,分別輸入學(xué)生信息,并進(jìn)行數(shù)據(jù)計(jì)算與賦值。在節(jié)點(diǎn)連接的過(guò)程中,通過(guò)對(duì)輸入學(xué)號(hào)大小的比較while(p-numq-num)&(q-next!=NULL),按學(xué)號(hào)排序連接節(jié)點(diǎn),使學(xué)號(hào)以升序排列。在輸入玩一個(gè)信息之后,會(huì)有提醒信息詢(xún)問(wèn)是否繼續(xù)。l 增長(zhǎng)新節(jié)點(diǎn)struct node *insert(struct node *h)增長(zhǎng)過(guò)程與創(chuàng)建過(guò)程大體相同,唯一不同的是,增長(zhǎng)過(guò)程需要得到形參繼續(xù)增長(zhǎng)學(xué)生信息。l 刪除節(jié)點(diǎn)struct node *del(struct node *h,int n)刪除節(jié)點(diǎn)實(shí)質(zhì)就是,將鏈表指針?biāo)赶?/p>
10、的地址在內(nèi)存中擦除。重要分為兩種情況:刪除頭指針?biāo)赶虻墓?jié)點(diǎn)地址和刪除中間或結(jié)尾的節(jié)點(diǎn)地址。一方面,需要判斷所刪除節(jié)點(diǎn)的地址“while(p-num!=n)&(p!=NULL)”,然后,進(jìn)行邏輯判斷,是否存在該學(xué)號(hào)的節(jié)點(diǎn),以及判斷是否為頭指針,并將p的內(nèi)存空間釋放掉:“if(p=h)h=p-next;elseq-next=p-next;free(p);M-;printf(M:%dn,M);puts(Delete!);” 。l 修改節(jié)點(diǎn)struct node *modify(struct node *h)即刪除和增長(zhǎng)過(guò)成功地結(jié)合。進(jìn)行l(wèi) 查找節(jié)點(diǎn)查找節(jié)點(diǎn),即根據(jù)所查詢(xún)的信息查找記錄,需要定義結(jié)構(gòu)
11、體指針變量p,進(jìn)行邏輯判斷即可。while(strcmp(p-nam,nam)!=0)&(p-next!=NULL)p=p-next;if(strcmp(p-nam,nam)=0)l 記錄平均分分?jǐn)?shù)段需要根據(jù)創(chuàng)建(或增長(zhǎng))時(shí)計(jì)算出的平均分各分?jǐn)?shù)段的個(gè)數(shù),來(lái)記錄。分為A,B,C,D,E五個(gè)分?jǐn)?shù)段,若鏈表中的平均分滿(mǎn)足判斷條件,如if(p-ave=90)&(p-avesum=max),這樣即使是相同分?jǐn)?shù)的學(xué)生也可以同時(shí)輸出到屏幕上。l 記錄不及格率需要定義全局變量M,然后根據(jù)各科不及格的人數(shù)n計(jì)算出不及格率:“printf(The RATE of %c-Failer:%.2f%cn,c,(a2/(
12、float)M)*100,37);”l 按最高分排序按最高分排序需要建立新的鏈表。然后根據(jù)總提成績(jī)進(jìn)行排序。struct node *h1=NULL,*p,*a=NULL,*b,*c=NULL; struct node *sta_sor(struct node *h) struct node *h1=NULL,*p,*a=NULL,*b,*c=NULL;if(h=NULL)return NULL;/creat new link point/h1 : a,b,c;/b is the latest copied informationp=h;/start to copy&compare thein
13、formation constantlywhile(p != NULL)b = copyasta(p);if(c=NULL)h1 = b;/if h1 is null,insert b/printf(insert %d before h1n,b-num);elseif(a = NULL & b-sum = c-sum)b-next = c;h1 = b;/printf(2在最前面插入%dn,b-num);c = h1;a=NULL; p=p-next;continue;a=h1;c=a-next; doif(c=NULL)a-next=b; break; /compareif(b-sum =
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
12 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序設(shè)計(jì) 基礎(chǔ) 課程設(shè)計(jì) 設(shè)計(jì) 報(bào)告 建立 學(xué)生 成績(jī)管理系統(tǒng)
鏈接地址:http://zhizhaikeji.com/p-43558908.html