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