版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> C語(yǔ)言程序設(shè)計(jì)實(shí)踐</b></p><p><b> 實(shí)習(xí)報(bào)告</b></p><p> 題 目: 學(xué)生信息管理系統(tǒng) </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師:
2、 </p><p> 學(xué) 院: 信息科學(xué)與工程學(xué)院 </p><p> 專(zhuān)業(yè)班級(jí): </p><p> 完成時(shí)間: 2012年6月29日 </p><p><b> 目 錄</b></
3、p><p> 1、系統(tǒng)功能介紹 3</p><p> 2、功能模塊結(jié)構(gòu) 4</p><p> 3、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 6</p><p> 4、主要模塊算
4、法說(shuō)明 7</p><p> 5、運(yùn)行結(jié)果 14</p><p> 6、認(rèn)識(shí)實(shí)習(xí)心得體會(huì) 17</p><p> 7、附錄(程序源代碼)
5、 19</p><p> 8、參考文獻(xiàn) 30</p><p><b> 一、系統(tǒng)功能介紹</b></p><p> 1、錄入學(xué)生基本信息:學(xué)號(hào)、姓名、班級(jí)、性別、年齡、宿舍號(hào)碼、電話(huà)號(hào)碼等。并且錄入學(xué)生五門(mén)課程(數(shù)學(xué)、離散數(shù)學(xué)、C語(yǔ)言、物理、英語(yǔ))的基本信息:編號(hào)、學(xué)
6、分、考試成績(jī)、平時(shí)成績(jī)、綜合成績(jī)、是否重修等;</p><p> 2、計(jì)算每個(gè)學(xué)生各門(mén)功課的平均成績(jī),并按照平均成績(jī)從高到低的次序輸出學(xué)生信息;</p><p> 3、修改所指定姓名學(xué)生的學(xué)生信息和課程基本信息;</p><p> 4、刪除所指定姓名學(xué)生的學(xué)生信息和課程基本信息;</p><p> 5、插入某個(gè)學(xué)生的信息;</p
7、><p> 6、按學(xué)生姓名或按學(xué)生學(xué)好查詢(xún)?cè)搶W(xué)生各項(xiàng)的信息;</p><p> 7、列出不及格的學(xué)生清單;</p><p> 8、保存學(xué)生的信息;</p><p> 9、讀取學(xué)生的信息;</p><p> 10、安全退出系統(tǒng)。</p><p><b> 二、功能模塊結(jié)構(gòu)<
8、/b></p><p> 1、主要結(jié)構(gòu)模式圖如下:</p><p><b> 2、模塊總述:</b></p><p> 整個(gè)程序結(jié)構(gòu)比較清晰,由一個(gè)主函數(shù)和多個(gè)子函數(shù)組成。主函數(shù)main()利用switch函數(shù)多種情況把各個(gè)子函數(shù)穿插使用在其中,構(gòu)成了整個(gè)系統(tǒng)運(yùn)行的主控模塊。</p><p> 整個(gè)程序中包
9、含了信息錄入、信息輸出、信息修改、信息插入、信息查找、信息刪除、信息保存和安全退出8大模塊,分別蘊(yùn)含了數(shù)據(jù)的輸入、輸出、插入、修改、查找、刪除和保存功能,由各個(gè)子函數(shù)支撐其運(yùn)行。其中,信息的查找可以從姓名查找和學(xué)號(hào)查找兩個(gè)方向進(jìn)行。而輸出的信息也可分為處處全部學(xué)生信息和輸出不及格學(xué)生信息兩部分。整個(gè)程序大致上由以上幾大模塊構(gòu)成,下面就分別進(jìn)行細(xì)致具體的說(shuō)明。</p><p><b> 3,功能模塊描述
10、:</b></p><p><b> 主控模塊:</b></p><p> 這是整個(gè)程序的靈魂部分,支撐著程序所有功能的選擇和運(yùn)行。每個(gè)模塊都是通過(guò)主控模塊所指向的,系統(tǒng)通過(guò)主控模塊進(jìn)入其他模塊的運(yùn)行。也就是說(shuō)主控模塊是整個(gè)系統(tǒng)的入口,然后由主控模塊根據(jù)指令或特定條件通向相應(yīng)的模塊實(shí)現(xiàn)相應(yīng)功能。</p><p><b>
11、; 信息錄入模塊:</b></p><p> 錄入學(xué)生信息,把所輸入進(jìn)去的學(xué)生信息以鏈表的形式建立,是其他模塊的先決條件,否則其他模塊會(huì)出現(xiàn)“這是一個(gè)空表”的提示。</p><p><b> 信息輸出模塊:</b></p><p> 輸出所有學(xué)生的信息,并且是按平均成績(jī)的高低的順序輸出的。也可以選擇輸出所有不及格的學(xué)生信息。
12、</p><p><b> 信息插入模塊:</b></p><p> 在已輸入了學(xué)生信息基礎(chǔ)上插入其他學(xué)生的信息,即將數(shù)據(jù)插入到以建立的鏈表中。</p><p><b> 信息修改模塊:</b></p><p> 先找到要修改的學(xué)生的信息,然后構(gòu)造一個(gè)修改界面,有供選擇修改的各項(xiàng)信息。修改之
13、后退出該界面。</p><p><b> 信息查找模塊:</b></p><p> 可以根據(jù)學(xué)生姓名查找,也可以根據(jù)學(xué)生學(xué)號(hào)查找。若表中沒(méi)有該學(xué)生的信息會(huì)輸出“沒(méi)找到該生信息”提示說(shuō)明。若找到會(huì)輸出該生信息。</p><p><b> 信息刪除模塊:</b></p><p> 找到要?jiǎng)h除的學(xué)
14、生信息,并刪除該生的全部信息。刪除信息后會(huì)給予提示。</p><p><b> 信息保存模塊:</b></p><p> 將學(xué)生信息保存在指定的文件中。</p><p> ?。?) 安全退出系統(tǒng)</p><p><b> 三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p>
15、整個(gè)程序是建立一個(gè)鏈表,然后通過(guò)對(duì)鏈表的一系列操作,來(lái)完成整個(gè)程序的運(yùn)行。定義函數(shù)來(lái)建立鏈表、輸出鏈表,對(duì)鏈表進(jìn)行插入操作、刪除操作等等。</p><p> 本程序使用了結(jié)構(gòu)體類(lèi)型的數(shù)據(jù)結(jié)構(gòu),來(lái)包括學(xué)生的各種信息,既有層次感,又保證了能夠定義所有變量,清晰明朗,其中定義的變量為全局變量。其他模塊可直接使用已在此定義的變量。</p><p> struct student</p&g
16、t;<p><b> {</b></p><p> char num[10]; /* 學(xué)號(hào) 字符串變量 長(zhǎng)度為10 */</p><p> char name[15]; /* 姓名 字符串變量 長(zhǎng)度為15 */</p><p> char Class[5]; /* 班級(jí) 字符串變量 長(zhǎng)度為5
17、 */</p><p> char sex[5]; /* 性別 字符串變量 長(zhǎng)度為5 */</p><p> int age; /* 年齡 整型變量 */</p><p> char roomnum[3]; /* 宿舍號(hào)碼 字符串變量 長(zhǎng)度為3 */</p><p> char tel[12]
18、; /* 電話(huà) 字符串變量 長(zhǎng)度為12 */</p><p> char num_[5][10]; </p><p> /* 各科編號(hào) 字符串變量 長(zhǎng)度為10 */</p><p> (數(shù)學(xué)num_[0][10]、離散num_[1][10]、C語(yǔ)言num_[2][10]、物理num_[3][10]、英語(yǔ)num_[4][10])</p>
19、<p> float xuefen[5]; /* 各科學(xué)分 浮點(diǎn)型變量 長(zhǎng)度為5 */ </p><p> float score[5][3]; /* 各科成績(jī) 浮點(diǎn)型變量 */</p><p> (考試成績(jī)score[5][0],平時(shí)成績(jī)[5][1],綜合成績(jī)[5][2]) </p><p> char chongxiu[5][5];
20、 /* 重修信息 字符串變量 */</p><p> float average; /* 總平均分 浮點(diǎn)型變量 */</p><p> struct student*next; /* 定義一個(gè)指向結(jié)構(gòu)體的指針 */</p><p><b> };</b></p><p><b> 四、算
21、法說(shuō)明</b></p><p> 1、main()主函數(shù)算法說(shuō)明</p><p> 主函數(shù)主要由switch函數(shù)構(gòu)成。根據(jù)不同的選擇指令,調(diào)用不同的子函數(shù)。</p><p><b> 主控模塊:</b></p><p> 運(yùn)行后,首先出現(xiàn)一個(gè)學(xué)生信息管理系統(tǒng)主菜單,并輸出各個(gè)功能的編號(hào)。只要輸入相應(yīng)的
22、功能號(hào),就可以進(jìn)入錄入、輸出、插入、修改、刪除、保存、按姓名查找、按學(xué)號(hào)查找、列出不及格學(xué)生信息函數(shù)模塊并可以安全退出系統(tǒng)。進(jìn)入各模塊后,按提示操作也可以返回主菜單來(lái)。</p><p><b> 信息錄入模塊:</b></p><p> 調(diào)用函數(shù) struct student*create(),進(jìn)入錄入模塊。按照指示輸入學(xué)生的基本信息和課程信息,直到學(xué)號(hào)為!結(jié)束輸
23、入。此函數(shù)的目的是建立一個(gè)包含學(xué)生信息的鏈表,并把鏈表頭作為函數(shù)值返回。</p><p><b> 信息插入模塊:</b></p><p> 調(diào)用函數(shù) struct student *insert(struct student *head),進(jìn)入插入模塊。按照指示插入學(xué)生的基本信息和課程信息到指定結(jié)點(diǎn)位置,并返回頭結(jié)點(diǎn)地址。</p><p>
24、;<b> 信息刪除模塊:</b></p><p> 調(diào)用 struct student Delete(struct student *head)函數(shù),然后輸入要?jiǎng)h除的學(xué)生姓名,若存在這個(gè)姓名,則刪除。若不存在,則提示不存在姓名為此的學(xué)生。</p><p><b> 信息查找模塊:</b></p><p> 若想按
25、學(xué)號(hào)查找則調(diào)用search1(struct student *head)函數(shù),輸入要查找的學(xué)號(hào),即可獲得相應(yīng)學(xué)生信息。若想按姓名查找則調(diào)用search2(struct student *head)函數(shù),輸入要查找的學(xué)號(hào),即可獲得相應(yīng)學(xué)生信息。如果輸入的學(xué)號(hào)或姓名不存在,則系統(tǒng)會(huì)提示沒(méi)有找到。</p><p><b> 信息修改模塊:</b></p><p> 調(diào)用
26、 void motify(struct student *head)函數(shù)。輸入要修改的學(xué)生姓名之后,進(jìn)入修改菜單界面,按照所提示的功能號(hào)選擇要修改的信息,修改完畢后返回修改子菜單。若不存在此生姓名,則提示“沒(méi)有姓名為此的學(xué)生”。</p><p><b> 信息顯示模塊:</b></p><p> 若要按平均成績(jī)的高低輸出所有學(xué)生的信息,則需要調(diào)用void prin
27、t(struct student *head)函數(shù)。若要僅列出不及格學(xué)生的名單,則須調(diào)用viod list(struct student *head)函數(shù)。</p><p><b> 信息保存模塊:</b></p><p> 調(diào)用void save (struct student *head)函數(shù)。輸入一個(gè)要保存的文件名,即可保存到指定的文件名當(dāng)中去,系統(tǒng)會(huì)有保存
28、成功的提示。</p><p><b> 9)安全退出系統(tǒng):</b></p><p> 通過(guò)使用do{} while(c!=10)和switch(c)安全退出系統(tǒng)。</p><p> 2、各模塊子函數(shù)算法說(shuō)明</p><p> 每個(gè)模塊有各自的功能,通過(guò)自身定義的子函數(shù)還完成相應(yīng)的功能。也就是說(shuō)功能的實(shí)現(xiàn)是靠函數(shù)的
29、調(diào)用完成的。下面便具體的來(lái)介紹各個(gè)子函數(shù)的算法。</p><p> float ave(struct student *head)</p><p> 用來(lái)計(jì)算綜合成績(jī)和五科成績(jī)的平均成績(jī)的。綜合成績(jī)的算法是平時(shí)城績(jī)的30%+考試成績(jī)的70%。平均成績(jī)的算法是各科成績(jī)與各科學(xué)分的乘積總和再除以個(gè)課學(xué)分的總和。在函數(shù)中,利用循環(huán)for(i=0;i<5;i++)通過(guò)p->scor
30、e[i][2]=p->score[i][0]*0.7+p->score[i][1]*0.3;計(jì)算出綜合成績(jī)。并由定義的變量各科成績(jī)與各科學(xué)分的乘積總和s和學(xué)分總和m,用s/m求出。</p><p> struct student *creat()</p><p> 用來(lái)建立一個(gè)鏈表來(lái)包含學(xué)生基本信息和課程信息。</p><p> 設(shè)3個(gè)指針變量:*
31、head *p1 *p2,用malloc函數(shù)開(kāi)辟第一個(gè)節(jié)點(diǎn),并使p1p2都指向它。然后從鍵盤(pán)讀入的數(shù)據(jù)給p1所指向的第一個(gè)結(jié)點(diǎn),并調(diào)用float ave(struct student *head) 函數(shù)來(lái)求綜合成績(jī)和平均成績(jī)。先使head為空,建立第一個(gè)節(jié)點(diǎn)以后,head指向第一個(gè)結(jié)點(diǎn)。若學(xué)號(hào)輸入為!,則鏈表的建立過(guò)程完成。若p1->num不為!,則把p1賦值給head,即開(kāi)辟的新結(jié)點(diǎn)。</p><p>
32、 利用循環(huán)for(i=0;;i++)來(lái)輸入學(xué)生信息。當(dāng)學(xué)號(hào)為!時(shí),結(jié)束輸入。</p><p> 每次循環(huán)都會(huì)開(kāi)辟一個(gè)新的結(jié)點(diǎn),令p1指向它,并調(diào)用float ave(struct student *head)來(lái)求綜合成績(jī)和平均成績(jī)。若i=0,則指向表尾的p2=p1=head,所以形成一個(gè)空表。若i≠0,p2=p1->next,使p2指向最后一個(gè)結(jié)點(diǎn)。就這樣一直循環(huán)下去,直到循環(huán)結(jié)束。這樣就建立了一個(gè)鏈表。
33、</p><p> free(p1);釋放p1所占用的內(nèi)存。</p><p> return(head);返回頭作為函數(shù)值的頭指針。</p><p> struct student *insert(struct student *head)</p><p> 用來(lái)插入某個(gè)學(xué)生信息到指定位置</p><p>
34、用malloc函數(shù)開(kāi)辟一個(gè)新結(jié)點(diǎn),令p1指向它,輸入一個(gè)學(xué)生數(shù)據(jù)給p1所指向的結(jié)點(diǎn),調(diào)用float ave(struct student *head) 函數(shù)來(lái)求綜合成績(jī)和平均成績(jī)。</p><p> 按平均成績(jī)的高低的順序查找插入點(diǎn),用已定義的結(jié)構(gòu)體類(lèi)型變量p2指向頭指針,移動(dòng)指針,p3=p2;p2=p2->next,直到找到插入點(diǎn)</p><p> 令p3->next=p
35、1;p1->next=p2;將p1所指向的接點(diǎn)插入到相應(yīng)的位置中。</p><p> struct student Delete(struct student *head)</p><p> 用于找到指定姓名學(xué)生在鏈表中的位置,并刪除該學(xué)生的信息。</p><p> 所輸入的學(xué)生姓名要存放到數(shù)組name[15]中</p><p>
36、 用p1指向要?jiǎng)h除的結(jié)點(diǎn),p2指向前一個(gè)結(jié)點(diǎn),p1=head;p2=p1;p1=p1->next;利用循環(huán)while(strcmp(p->name,name)&&p->next!=NULL),直到找到要?jiǎng)h除的結(jié)點(diǎn)為止。</p><p> 若要?jiǎng)h除的是頭結(jié)點(diǎn),則head=p1->next;若不是,則p2->next=p1->next;</p>&
37、lt;p> return(head);返回刪除后鏈表表頭地址。</p><p> void search1(struct student*head)</p><p> 用來(lái)查找指定學(xué)號(hào)的學(xué)生信息并將其輸出。</p><p> 所輸入的學(xué)生學(xué)號(hào)要存放到數(shù)組num[10]中</p><p> 指針p1指向第一個(gè)結(jié)點(diǎn),然后逐個(gè)檢查移
38、動(dòng)指針,直至表尾。p1=p1->next。利用循環(huán)</p><p> while(strcmp(num,p1->num)&&p1!=NULL)控制查找。查找結(jié)束后,調(diào)用printf輸出學(xué)生信息。如果沒(méi)有,則輸出提示信息。</p><p> void search2struct student*head)</p><p> 用來(lái)查找制
39、定姓名的學(xué)生信息并將其輸出。</p><p> 算法如void search1(struct student*head)函數(shù)。</p><p> int count(struct student*head)</p><p> 用函數(shù)的遞歸調(diào)用方法計(jì)算鏈表中已錄入的學(xué)生數(shù)目,并將其作為函數(shù)值返回。</p><p> void print
40、(struct student*head) </p><p> 用來(lái)輸出量表中全部的學(xué)生信息。</p><p> 先按平均成績(jī)從高到低的順序?qū)㈡湵碇械母鹘Y(jié)點(diǎn)排序,并依次存放到數(shù)組當(dāng)中。</p><p> 調(diào)用int count(struct student*head)函數(shù)計(jì)算學(xué)生的數(shù)目m</p><p> 利用循環(huán)for(i=0;i&
41、lt;m-1;i++)控制學(xué)生信息按照平均成績(jī)的高低輸出。</p><p> void modify(struct student*head)</p><p> 用來(lái)修改指定姓名的學(xué)生的指定信息。</p><p> 所輸入的學(xué)生姓名要存放到數(shù)組name[15]中</p><p> 令p1=head;用循環(huán)語(yǔ)句</p>&
42、lt;p> while(strcmp(name,p1->name)&&p1->next!=NULL)</p><p> p1=p1->next;找到要修改的結(jié)點(diǎn)。</p><p> 用switch函數(shù)選擇要修改的信息選項(xiàng),用Do{} while(i!=13);實(shí)現(xiàn)多次修改。</p><p> void list(st
43、ruct student*head) </p><p> 用來(lái)列出不及格學(xué)生的名單。</p><p> 定義結(jié)構(gòu)體指針變量p=head;利用循環(huán)while(p!=NULL)循環(huán)語(yǔ)句實(shí)現(xiàn)對(duì)不及格學(xué)生的判斷和輸出功能。利用if語(yǔ)句判斷,令p=p->next移動(dòng)指針。</p><p> 定義整型變量i,來(lái)判斷是有存在不及格的學(xué)生。</p><
44、;p> void save(struct student*head)</p><p> 用來(lái)保存以建立的鏈表文件。</p><p> 定義一個(gè)文件指針fp,一個(gè)結(jié)構(gòu)體指針p,一個(gè)字符串?dāng)?shù)組outfile[15]用來(lái)存放文件名。調(diào)用fopen函數(shù),把地址賦給文件指針fp。若fp=NULL,則返回。</p><p> 若fp≠NULL,則將數(shù)據(jù)保存到指定文
45、件中,p=head。</p><p><b> 利用循環(huán)語(yǔ)句</b></p><p> while(p!=NULL)</p><p> {fwrite(p,sizeof(struct student),1,fp); </p><p> p=p->next; }多次調(diào)用fwrite()函數(shù),直至寫(xiě)入所有信息。
46、</p><p><b> 五、運(yùn)行結(jié)果</b></p><p><b> 1、主菜單界面:</b></p><p><b> 2、輸入數(shù)據(jù):</b></p><p> (在學(xué)號(hào)處輸入!安全退出輸出模塊)</p><p><b> 插
47、入信息:</b></p><p><b> 4、刪除數(shù)據(jù):</b></p><p><b> 5、顯示學(xué)生信息:</b></p><p><b> 6、修改學(xué)生信息:</b></p><p> 列出不及格學(xué)生信息:</p><p>&
48、lt;b> 8、保存界面顯示:</b></p><p> 9、安全退出系統(tǒng)界面顯示:</p><p> 六、認(rèn)識(shí)實(shí)習(xí)心得體會(huì) </p><p> 在看到認(rèn)識(shí)實(shí)習(xí)任務(wù)計(jì)劃書(shū)的時(shí)候,沒(méi)想到自己是真的可以完成這樣一個(gè)繁瑣的程序設(shè)計(jì)的。認(rèn)真的權(quán)衡了一下各個(gè)任務(wù)的側(cè)重點(diǎn)和考察方向,我決定要設(shè)計(jì)一個(gè)小型的學(xué)生信息管理系統(tǒng),權(quán)當(dāng)是對(duì)自己所掌握的鏈表以及相
49、關(guān)知識(shí)的一種檢測(cè)。然而在最初的幾日,雖然滿(mǎn)腦子都是鏈表,數(shù)組,但都是些獨(dú)立的程序,理不出什么思路。不過(guò),當(dāng)我把系統(tǒng)所需要的各項(xiàng)功能定義為一個(gè)個(gè)函數(shù),整個(gè)系統(tǒng)的基本脈絡(luò)就清晰了。</p><p> 雖然確定了主菜單為主函數(shù)并運(yùn)用switch函數(shù)來(lái)貫穿整個(gè)系統(tǒng),可在每個(gè)功能模塊的設(shè)計(jì)上還是遇到了很多的問(wèn)題。例如:在輸出不及格學(xué)生名單的list函數(shù)就出了一點(diǎn)問(wèn)題。最開(kāi)始一直以為要輸出所有要重修的人,所以想要檢查每個(gè)人
50、是否需要重修,冥思苦想好久都不知道該怎么檢查每個(gè)同學(xué)的五個(gè)科目的重修情況。后來(lái)經(jīng)過(guò)同學(xué)提點(diǎn),才發(fā)現(xiàn)可以直接比較每科科目成績(jī),如果低于六十分就是不及格,就把那個(gè)學(xué)生的成績(jī)輸出。于是問(wèn)題迎刃而解。</p><p> 這個(gè)只是算法上的失誤,當(dāng)然也有語(yǔ)法上的錯(cuò)誤。進(jìn)過(guò)多次調(diào)試和同學(xué)的指正后得到了整個(gè)程序的雛形。由于是中文版本的,所以就在win-TC上運(yùn)行調(diào)試,還有用中文DOS運(yùn)行。雖然很是麻煩,但總感覺(jué)中文的系統(tǒng)要比拼
51、音和英文親切的多。</p><p> 在完成整個(gè)程序的時(shí)候,心里的喜悅是滿(mǎn)溢于面的。其實(shí)世界上真的沒(méi)有什么不可能的事,我也絕對(duì)不會(huì)想到自己會(huì)完成這樣一個(gè)系統(tǒng)的編譯。說(shuō)是系統(tǒng),也是最簡(jiǎn)單最淺顯的那種,退去其貌似龐大的外殼,不過(guò)都是函數(shù)組成的,由鏈表組成連接的數(shù)據(jù)輸入,輸出,修改,整理,查找,刪除。而且像鏈表的建立,輸出還有刪除和插入,是完全可以在書(shū)上找到例子的。這又一定程度上降低了編譯過(guò)程的難度。</p&g
52、t;<p> 其實(shí)書(shū)本上的知識(shí)都是死的,只有像這樣的,把書(shū)本上的知識(shí),經(jīng)過(guò)加工和調(diào)試應(yīng)用到實(shí)踐中,才發(fā)揮出知識(shí)的真正作用。</p><p> 經(jīng)過(guò)這兩周的實(shí)習(xí),我很清楚的認(rèn)識(shí)到自己所學(xué)的東西是多么的淺顯,粗略掌握的整個(gè)知識(shí)結(jié)構(gòu)脆弱的不堪一擊,一遇到問(wèn)題,就會(huì)手忙腳亂,不能偶冷靜的去分析問(wèn)題,也不能好好的把知識(shí)活學(xué)活用。</p><p> 不過(guò),這次的實(shí)習(xí)鍛煉了我獨(dú)立思考
53、、獨(dú)立解決問(wèn)題的能力,并且加深了C語(yǔ)言知識(shí),而且更深層次的理解了各知識(shí)點(diǎn)的原理和運(yùn)用?,F(xiàn)在的我,有著更清晰的思路,對(duì)算法的說(shuō)明更加清晰明確,這都要感謝老師的指導(dǎo)和同學(xué)們的幫助,和這次雖然辛苦卻受益頗多的實(shí)習(xí)。很感謝這次的課程設(shè)計(jì),它使我更加深刻地體會(huì)到多看專(zhuān)業(yè)書(shū)的重要性,只有掌握了一定量的專(zhuān)業(yè)知識(shí)才能得心應(yīng)手地解決諸多問(wèn)題;另外,做任何事都要有耐心,不要一遇到困難就退縮;在學(xué)習(xí)和工作中要時(shí)刻謹(jǐn)記“團(tuán)結(jié)”二字,它好比通向成功的鋪路石,不可
54、或缺。</p><p> 總之,這次的實(shí)習(xí),我受益了很多,是我人生當(dāng)中一次難忘的一次經(jīng)歷。相信在以后的日子里,我會(huì)時(shí)常提醒自己,沒(méi)有不可能完成的事,只要夠認(rèn)真,夠細(xì)心,夠有耐性。只是一定要運(yùn)用到實(shí)踐中去才能發(fā)揮最大的價(jià)值。</p><p> 七、附錄(程序源代碼)</p><p> #include<stdio.h></p><
55、p> #include<string.h></p><p> #include<stdlib.h></p><p> #define LEN sizeof(struct student)</p><p> #define N 5</p><p> void f(void)</p><
56、p><b> {float a;</b></p><p> scanf("%f",&a);}</p><p> struct student</p><p> {char num[10];</p><p> char name[15];</p><p>
57、 char Class[5];</p><p> char sex[5];</p><p><b> int age;</b></p><p> char roomnum[3];</p><p> char tel[12];</p><p> char num_[5][10];<
58、/p><p> float score[5][3];</p><p> float xuefen[5];</p><p> char chongxiu[5][5];</p><p> float average;</p><p> struct student*next;</p><p>
59、 };float ave(struct student*p)</p><p><b> {int i;</b></p><p> float m,s,ave;</p><p> {for(i=0;i<5;i++)</p><p> {m=p->xuefen[i];</p><p&
60、gt; p->score[i][2]=p->score[i][0]*0.7+p->score[i][1]*0.3;</p><p> s=p->score[i][2]*p->xuefen[i];}</p><p><b> }</b></p><p> ave=(float)s/m;</p>
61、<p> return ave;</p><p><b> }</b></p><p> struct student*create()</p><p><b> {int i;</b></p><p> struct student*head,*p1,*p2;</p>
62、;<p> head=NULL;</p><p> for(i=0;;i++)</p><p> {p1=(struct student*)malloc(LEN);</p><p> printf("請(qǐng)輸入學(xué)生基本信息:\n");</p><p> printf("學(xué)號(hào):\n")
63、;</p><p> scanf("%s",&p1->num);</p><p> if(strcmp(p1->num,"!")==0)break;</p><p> printf("姓名:\n");</p><p> scanf("%s&quo
64、t;,&p1->name);</p><p> printf("班級(jí):\n");</p><p> scanf("%s",&p1->Class);</p><p> printf("性別:\n");</p><p> scanf("%s&
65、quot;,&p1->sex);</p><p> printf("年齡:\n");</p><p> scanf("%d",&p1->age);</p><p> printf("宿舍號(hào)碼:\n");</p><p> scanf("%
66、s",&p1->roomnum);</p><p> printf("電話(huà):\n");</p><p> scanf("%s",&p1->tel);</p><p> printf("選修課信息:\n");</p><p> printf
67、("數(shù)學(xué)課信息:\n");</p><p> printf("編號(hào):\n");</p><p> scanf("%s",&p1->num_[0]);</p><p> printf("學(xué)分:\n");</p><p> scanf("
68、;%f",&p1->xuefen[0]);</p><p> printf("考試成績(jī):\n");</p><p> scanf("%f",&p1->score[0][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><
69、p> scanf("%f",&p1->score[0][1]);</p><p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[0]);</p><p> printf("離散數(shù)學(xué)課信息:\n"
70、);</p><p> printf("編號(hào):\n");</p><p> scanf("%s",&p1->num_[1]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1->
71、;xuefen[1]);</p><p> printf("考試成績(jī):\n");</p><p> scanf("%f",&p1->score[1][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("%f
72、",&p1->score[1][1]);</p><p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[1]);</p><p> printf("C語(yǔ)言課信息:\n");</p><p>
73、; printf("編號(hào):\n");</p><p> scanf("%s",&p1->num_[2]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1->xuefen[2]);</p>
74、<p> printf("考試成績(jī):\n");</p><p> scanf("%f",&p1->score[2][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("%f",&p1->sco
75、re[2][1]);</p><p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[2]);</p><p> printf("物理課信息:\n");</p><p> printf("編號(hào):\n&q
76、uot;);</p><p> scanf("%s",&p1->num_[3]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1->xuefen[3]);</p><p> printf(&qu
77、ot;考試成績(jī):\n");</p><p> scanf("%f",&p1->score[3][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("%f",&p1->score[3][1]);</p>&
78、lt;p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[3]);</p><p> printf("英語(yǔ)課信息:\n");</p><p> printf("編號(hào):\n");</p><p
79、> scanf("%s",&p1->num_[4]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1->xuefen[4]);</p><p> printf("考試成績(jī):\n");</
80、p><p> scanf("%f",&p1->score[4][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("%f",&p1->score[4][1]);</p><p> printf("
81、是否重修?\n");</p><p> scanf("%s",p1->chongxiu[4]);</p><p> p1->average=ave(p1);</p><p> p1->next=NULL;</p><p> if(i==0) head=p1;</p><
82、;p> else p2->next=p1;</p><p><b> p2=p1;</b></p><p><b> }</b></p><p><b> free(p1);</b></p><p> return(head);</p>&l
83、t;p><b> }</b></p><p> struct student*insert(struct student*head)</p><p> {struct student *p1,*p2,*p3;</p><p> p1=(struct student*)malloc(LEN);</p><p>
84、; printf("請(qǐng)輸入學(xué)生基本信息:\n");</p><p> printf("學(xué)號(hào):");</p><p> scanf("%s",&p1->num);</p><p> printf("姓名:");</p><p> scanf(
85、"%s",&p1->name);</p><p> printf("班級(jí):");</p><p> scanf("%s",&p1->Class);</p><p> printf("性別:");</p><p> scanf(&
86、quot;%s",&p1->sex);</p><p> printf("年齡:");</p><p> scanf("%d",&p1->age);</p><p> printf("宿舍號(hào)碼:");</p><p> scanf(&qu
87、ot;%s",&p1->roomnum);</p><p> printf("電話(huà):");</p><p> scanf("%s",&p1->tel);</p><p> printf("選修課信息:\n");</p><p> prin
88、tf("數(shù)學(xué)課信息:\n");</p><p> printf("編號(hào):\n");</p><p> scanf("%s",&p1->num_[0]);</p><p> printf("學(xué)分:\n");</p><p> scanf(&qu
89、ot;%f",&p1->xuefen[0]);</p><p> printf("考試成績(jī):\n");</p><p> scanf("%f",&p1->score[0][0]);</p><p> printf("平時(shí)成績(jī):\n");</p>&l
90、t;p> scanf("%f",&p1->score[0][1]);</p><p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[0]);</p><p> printf("離散數(shù)學(xué)課信息:\n&quo
91、t;);</p><p> printf("編號(hào):\n");</p><p> scanf("%s",&p1->num_[1]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1-&
92、gt;xuefen[1]);</p><p> printf("考試成績(jī):\n");</p><p> scanf("%f",&p1->score[1][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("
93、%f",&p1->score[1][1]);</p><p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[1]);</p><p> printf("C語(yǔ)言課信息:\n");</p><p&
94、gt; printf("編號(hào):\n");</p><p> scanf("%s",&p1->num_[2]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1->xuefen[2]);</p&g
95、t;<p> printf("考試成績(jī):\n");</p><p> scanf("%f",&p1->score[2][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("%f",&p1->s
96、core[2][1]);</p><p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[2]);</p><p> printf("物理課信息:\n");</p><p> printf("編號(hào):\n
97、");</p><p> scanf("%s",&p1->num_[3]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1->xuefen[3]);</p><p> printf(&
98、quot;考試成績(jī):\n");</p><p> scanf("%f",&p1->score[3][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("%f",&p1->score[3][1]);</p>
99、<p> printf("是否重修?\n");</p><p> scanf("%s",p1->chongxiu[3]);</p><p> printf("英語(yǔ)課信息:\n");</p><p> printf("編號(hào):\n");</p><
100、;p> scanf("%s",&p1->num_[4]);</p><p> printf("學(xué)分:\n");</p><p> scanf("%f",&p1->xuefen[4]);</p><p> printf("考試成績(jī):\n");<
101、;/p><p> scanf("%f",&p1->score[4][0]);</p><p> printf("平時(shí)成績(jī):\n");</p><p> scanf("%f",&p1->score[4][1]);</p><p> printf(&quo
102、t;是否重修?\n");</p><p> scanf("%s",p1->chongxiu[4]);</p><p> p1->average=ave(p1);</p><p> p1->next=NULL;</p><p><b> p2=head;</b><
103、;/p><p> if(head==NULL)</p><p> {head=p1;p1->next=NULL;}</p><p><b> else</b></p><p> {while((p1->average>p2->average)&&(p2->next!=NU
104、LL))</p><p> {p3=p2;p2=p2->next;}</p><p> if(p1->average<=p2->average)</p><p> {if(head==p2)</p><p> {p1->next=head;head=p1;}</p><p> e
105、lse{p3->next=p1;p1->next=p2;}</p><p><b> }</b></p><p> else{p2->next=p1;</p><p> p1->next=NULL;}</p><p><b> }</b></p><
106、;p> return(head);</p><p><b> }</b></p><p> struct student*Delete(struct student*head)</p><p> {char name[10];</p><p> struct student*p ,*q;</p>
107、;<p> printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生姓名:");</p><p> scanf("%s",name);</p><p> if(head==NULL)</p><p> {printf("這是一個(gè)空表,沒(méi)有要?jiǎng)h除的學(xué)生!");</p><p> re
108、turn(head);}</p><p><b> else</b></p><p><b> { p=head;</b></p><p> while(strcmp(p->name,name)&&p->next!=NULL)</p><p><b>
109、{q=p;</b></p><p> p=p->next;} </p><p> if(strcmp(p->name,name)==0)</p><p> {if(p==head)head=p->next;</p><p> else q->next=p->next;</p>&
110、lt;p> printf("姓名為%s的學(xué)生已經(jīng)被刪除!\n",name);</p><p><b> }</b></p><p> else printf("表中沒(méi)有姓名為%s的學(xué)生!\n",name);</p><p> return(head);}</p><p&g
111、t;<b> }</b></p><p> void search1(struct student*head)</p><p> {char num[10];</p><p> struct student*p1;</p><p> printf("請(qǐng)輸入要查找的學(xué)生學(xué)號(hào):");</p
112、><p> scanf("%s",num);</p><p><b> p1=head;</b></p><p> while(strcmp(num,p1->num)&&p1!=NULL)</p><p> p1=p1->next;</p><p&g
113、t; if(p1==NULL)</p><p> printf("\n 沒(méi)有學(xué)號(hào)為%s的學(xué)生 \n",num);</p><p><b> else</b></p><p> {printf("\n**********找到該生信息如下**********\n");</p><p
114、> printf("基本信息:\n");</p><p> printf(" \n");</p><p> printf(" |姓 名:%-11s|\n",p1->name);</p><p> printf(" |性
115、 別:%-11s|\n",p1->sex);</p><p> printf(" |年 齡:%-11d|\n",p1->age);</p><p> printf(" |學(xué) 號(hào):%-11s|\n",p1->num);</p><p> pr
116、intf(" |班 級(jí):%-11s|\n",p1->Class); </p><p> printf(" |宿舍號(hào)碼:%-11s|\n",p1->roomnum);</p><p> printf(" |電 話(huà):%-11s|\n",p1->te
117、l);</p><p> printf(" |平均成績(jī):%-11.2f|\n",p1->average);</p><p> printf(" \n");</p><p> printf("課程信息:\n");</p><p> pr
118、intf("|課程名稱(chēng)|編號(hào)|學(xué)分|考試成績(jī)|平時(shí)成績(jī)|綜合成績(jī)|是否重修|\n");</p><p> printf("|數(shù) 學(xué)|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[0],p1->xuefen[0],p1->score[0][0],p1->score[0][1],p1->score[0
119、][2],p1->chongxiu[0]);</p><p> printf("|離 散|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[1],p1->xuefen[1],p1->score[1][0],p1->score[1][1],p1->score[1][2],p1->chongxiu[1]);<
120、;/p><p> printf("|C語(yǔ)言|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[2],p1->xuefen[2],p1->score[2][0],p1->score[2][1],p1->score[2][2],p1->chongxiu[2]);</p><p> printf(&
121、quot;|物 理|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[3],p1->xuefen[3],p1->score[3][0],p1->score[3][1],p1->score[3][2],p1->chongxiu[3]);</p><p> printf("|英 語(yǔ)|%-4s|%-.2f|%-8f|%-
122、8f|%-8.2f|%-6s|\n",p1->num_[4],p1->xuefen[4],p1->score[4][0],p1->score[4][1],p1->score[4][2],p1->chongxiu[4]);</p><p> printf("*******************************************\n"
123、);</p><p><b> }</b></p><p><b> }</b></p><p> void search2(struct student*head)</p><p> {char name[10];</p><p> struct student*
124、p1;</p><p> printf("請(qǐng)輸入要查找的學(xué)生姓名:");</p><p> scanf("%s",name);</p><p><b> p1=head;</b></p><p> while(strcmp(name,p1->name)&&am
125、p;p1!=NULL)</p><p> p1=p1->next;</p><p> if(p1==NULL)</p><p> printf("\n 沒(méi)有姓名為%s的學(xué)生 \n",name);</p><p><b> else</b></p><p> {p
126、rintf("\n**********找到該生信息如下**********\n");</p><p> printf("基本信息:\n");</p><p> printf(" \n");</p><p> printf(" |姓 名:%-11s|\
127、n",p1->name);</p><p> printf(" |性 別:%-11s|\n",p1->sex);</p><p> printf(" |年 齡:%-11d|\n",p1->age);</p><p> printf("
128、 |學(xué) 號(hào):%-11s|\n",p1->num);</p><p> printf(" |班 級(jí):%-11s|\n",p1->Class); </p><p> printf(" |宿舍號(hào)碼:%-11s|\n",p1->roomnum);</p>
129、;<p> printf(" |電 話(huà):%-11s|\n",p1->tel);</p><p> printf(" |平均成績(jī):%-11.2f|\n",p1->average);</p><p> printf(" \n");</p&
130、gt;<p> printf("課程信息:\n");</p><p> printf("|課程名稱(chēng)|編號(hào)|學(xué)分|考試成績(jī)|平時(shí)成績(jī)|綜合成績(jī)|是否重修|\n");</p><p> printf("|數(shù) 學(xué)|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[0],
131、p1->xuefen[0],p1->score[0][0],p1->score[0][1],p1->score[0][2],p1->chongxiu[0]);</p><p> printf("|離 散|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[1],p1->xuefen[1],p1->scor
132、e[1][0],p1->score[1][1],p1->score[1][2],p1->chongxiu[1]);</p><p> printf("|C語(yǔ)言|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[2],p1->xuefen[2],p1->score[2][0],p1->score[2][1],p
133、1->score[2][2],p1->chongxiu[2]);</p><p> printf("|物 理|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[3],p1->xuefen[3],p1->score[3][0],p1->score[3][1],p1->score[3][2],p1->cho
134、ngxiu[3]);</p><p> printf("|英 語(yǔ)|%-4s|%-.2f|%-8f|%-8f|%-8.2f|%-6s|\n",p1->num_[4],p1->xuefen[4],p1->score[4][0],p1->score[4][1],p1->score[4][2],p1->chongxiu[4]);</p><p&
135、gt; printf("*******************************************\n");</p><p><b> }</b></p><p><b> }</b></p><p> int count(struct student*head)</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)--c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)———學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)_學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理
- c語(yǔ)言課程設(shè)計(jì)--- 學(xué)生成績(jī)管理
評(píng)論
0/150
提交評(píng)論