版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《程序設(shè)計基礎(chǔ)》課程設(shè)計</p><p> ------學(xué)生成績排名系統(tǒng)</p><p> 課程設(shè)計的目的和要求</p><p> 高級語言課程設(shè)計的主要目的是培養(yǎng)學(xué)生能夠提高綜合應(yīng)用語言的能力,通過課程設(shè)計的訓(xùn)練,使學(xué)生能及時鞏固已學(xué)的知識,補充未學(xué)的但有必要的內(nèi)容,掌握應(yīng)用計算機解決實際問題的基本方法,熟悉程序開發(fā)的全過程,提高綜合應(yīng)
2、用語言的能力。高級語言程序設(shè)計的主要任務(wù)是要求學(xué)生遵循軟件開發(fā)過程的基本規(guī)范,運用結(jié)構(gòu)程序設(shè)計的方法按照課程設(shè)計的題目要求,分析,編寫,調(diào)試和測試高級語言程序及編寫設(shè)計報告。</p><p> 1.1課程設(shè)計的目的</p><p> 1.鞏固和掌握高級語言程序設(shè)計基本概念;</p><p> 2.掌握基本的程序設(shè)計方法;</p><p>
3、; 3.掌握開發(fā)軟件所需的需求定義能力;</p><p> 4.提高書寫程序設(shè)計說明文檔的能力;</p><p> 5.提高綜合運用高級語言的能力,強化編程和調(diào)試能力。</p><p> 1.2 課程設(shè)計的基本要求</p><p> 1.根據(jù)所給的課程設(shè)計題目,分析課程設(shè)計題目的要求;</p><p> 2
4、.對系統(tǒng)功能模塊進(jìn)行分析,寫出詳細(xì)的設(shè)計說明文檔;</p><p> 3.編寫程序代碼,調(diào)試所編寫程序使其能正確運行;</p><p> 4.設(shè)計完成的軟件便于完成和使用;</p><p> 5.設(shè)計完成后提交課程設(shè)計報告;</p><p><b> 課程設(shè)計任務(wù)內(nèi)容</b></p><p&g
5、t;<b> 2.1 考核內(nèi)容</b></p><p> 2.1.1 編寫的C++語言程序</p><p> ●針對編寫的C++程序,應(yīng)該主要考查下列內(nèi)容:</p><p> ●是否符合題目要求,是否完成了主要功能;</p><p> ●是否存在語法錯誤、邏輯錯誤及運行錯誤;</p><p&
6、gt; ●程序設(shè)計是否合理;</p><p> ●程序是否具有良好的可讀性和可靠性;</p><p> ●是否符合結(jié)構(gòu)化程序設(shè)計所倡導(dǎo)的基本理念;</p><p> ●用戶界面是否友好。</p><p> 2.1.2 課程設(shè)計報告</p><p> ●針對提交的課程設(shè)計報告,應(yīng)該主要考查下列內(nèi)容:</
7、p><p> ●程序設(shè)計的報告內(nèi)容是否全面,觀點是否正確;</p><p> ●設(shè)計過程是否符合結(jié)構(gòu)化程序設(shè)計方法的基本原則;</p><p> ●層次是否清楚,語言是否通順;</p><p> ●各種圖表是否規(guī)范;是否具有良好的程序設(shè)計習(xí)慣。</p><p><b> 2.2 課題</b>
8、</p><p> 10、學(xué)生信息管理系統(tǒng)設(shè)計</p><p><b> 實現(xiàn)以下功能:</b></p><p> 1) 系統(tǒng)以菜單方式工作;</p><p> 2) 學(xué)生信息錄入功能(學(xué)生信息用文件保存);</p><p> 3) 學(xué)生信息瀏覽功能;</p><p&
9、gt; 4) 查詢、排序功能(至少兩種查詢依據(jù)和兩種排序依據(jù));</p><p> 5) 學(xué)生信息刪除、修改功能。</p><p> 備注:學(xué)生信息包括:學(xué)號,姓名,年齡,性別,出生年月,地址,電話,E-mail等。</p><p><b> 詳細(xì)設(shè)計說明</b></p><p><b> 3.1 模
10、板設(shè)計圖</b></p><p> 該系統(tǒng)可以按功能進(jìn)行模塊劃分,其模塊如圖3-1所示:</p><p> 圖3-1 模板設(shè)計圖</p><p><b> 其中:</b></p><p><b> 1.學(xué)生成績錄入</b></p><p> 2..增加學(xué)
11、生成績記錄模塊可以完成學(xué)生成績的輸入,輸入信息包括班級、學(xué)號、姓名、課程名、成績。</p><p> 3 .刪除學(xué)生成績記錄模塊可以完成學(xué)生成績的刪除。</p><p> 4.查詢學(xué)生成績記錄模塊可以完成學(xué)生成績的查詢,可以通過輸入姓名、學(xué)號</p><p> 或者是課程 名來查詢學(xué)生成績。 </p><p> 5.學(xué)生成績排序模塊可
12、以完成對學(xué)生成績的排序,按照成績的高低來進(jìn)行排</p><p><b> 序。</b></p><p> 3.2 函數(shù)模塊、功能分析、參數(shù)說明</p><p> 1.增加學(xué)生成績記錄模塊(void Manage::add( ))</p><p> 對應(yīng)于總體設(shè)計時的系統(tǒng)功能模塊圖,各個功能模塊的處理邏輯如下:&l
13、t;/p><p> 主要完成將數(shù)據(jù)存入單鏈表中的工作。在這次增加學(xué)生成績記錄中,記錄可以從二進(jìn)制形式存儲的數(shù)據(jù)文件中讀入,也可以從鍵盤逐個讀入學(xué)生記錄。如圖3-2所示:圖3-2 增加學(xué)生成績記錄流程圖.</p><p> 2.刪除學(xué)生成績記錄模塊(void Manage::del( ))</p><p> 要刪除某個學(xué)生的信息,就要從磁盤文件中將所有同學(xué)信息讀
14、出來,然后除要刪除的學(xué)生外,其它的所有記錄再重新存入原來的磁盤文件中,如圖3-3所示:</p><p><b> N</b></p><p><b> Y</b></p><p> 圖3-3 刪除學(xué)生成績記錄流程圖</p><p> 3..查詢學(xué)生成績記錄模塊(void Manage::se
15、arch( ))</p><p> 主要完成在單鏈表中查找滿足相關(guān)條件的學(xué)生記錄。用戶可以按照學(xué)生的 學(xué)號、姓名或課程名在單鏈表中進(jìn)行查找。未找到輸出提示信息,如圖3-4所示:</p><p> 圖3-4 查詢學(xué)生成績記錄流程圖</p><p> 4.學(xué)生成績排序模塊</p><p> 主要完成按照成績的高低來進(jìn)行排序,如圖3
16、-6所示:</p><p> 圖3-6 學(xué)生成績排序流程圖</p><p><b> 3.3 函數(shù)流程圖</b></p><p> 系統(tǒng)首先進(jìn)入歡迎界面并提示用戶輸入不同的阿拉伯?dāng)?shù)字會進(jìn)行不同的操作。在用戶做出選擇后,根據(jù)用戶輸入的阿拉伯?dāng)?shù)字,程序?qū)⒄{(diào)用相應(yīng)的功能模塊,實現(xiàn)用戶要進(jìn)行的操作。完成一次用戶的操作后,再回到歡迎界面,等待用戶再
17、做出選擇,再調(diào)用相應(yīng)的功能模塊……,知道用戶在歡迎界面選擇了退出,該系統(tǒng)結(jié)束,終止執(zhí)行,如圖3-7所示:</p><p> 圖3-7 函數(shù)流程圖</p><p><b> 編碼與調(diào)試</b></p><p><b> 4.1 軟件與測試</b></p><p> 打開軟件后,界面會出現(xiàn)你所
18、需要的功能,根據(jù)你要進(jìn)行的操作來選擇。</p><p> 4.2 運行結(jié)果及截圖</p><p> 1.此圖為程序運行成功后,出現(xiàn)的界面,此為主菜單界面,可依據(jù)界面執(zhí) </p><p> 行。如圖4-1所示:</p><p> 2.首先錄入學(xué)生成績記錄,輸入學(xué)生的班級、學(xué)號、姓名、課程名、成績,如圖4-2所示:</p>
19、<p> 圖4-2 錄入學(xué)生成績記錄</p><p> 3返回主菜單,選擇相應(yīng)的操作,對學(xué)生成績進(jìn)行排序和相應(yīng)的查詢,如圖4-3所示:</p><p> 圖4-3 學(xué)生成績排序</p><p> 4.返回主菜單,進(jìn)行查詢學(xué)生成績記錄操作,如圖4-4所示:</p><p> 圖4-4 學(xué)生成績排序</p>&l
20、t;p> 5.返回主菜單,進(jìn)行對學(xué)生成員進(jìn)行增加。如圖4-5所示:</p><p> 圖4-5 查詢學(xué)生成績</p><p> 6.返回主菜單,進(jìn)行刪除學(xué)生成績記錄操作,按照學(xué)號來刪除學(xué)生信息,如圖4-6所示:</p><p> 圖4-6 刪除學(xué)生成績記錄</p><p><b> 課程設(shè)計心得與體會</b&g
21、t;</p><p> 本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解。《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。一個人的力量是有限的,要想把課程設(shè)計做的更好,就要學(xué)會參考一定的資料,吸取別人的經(jīng)驗,讓自己和別人的思想有機的結(jié)合起來,得出屬于你自己的靈感。</p><p> 在本課程設(shè)計中,我明白了理論與實際應(yīng)用相結(jié)合的重要
22、性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學(xué)知識的能力。程序的編寫需要有耐心,有些事情看起來很復(fù)雜,但問題需要一點一點去解決,分析問題,把問題一個一個劃分,劃分成小塊以后就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。</p><p> 在這段時間里,一直修改著相應(yīng)的程序,并且嘗試著調(diào)試 各種運
23、行結(jié)果。終于,在自己的努力下,課程設(shè)計還算是有點起色。經(jīng)過這次的編程,我學(xué)會了很多東西。比如說,如何在網(wǎng)上查找一些有用的東西,如何設(shè)計自己的目標(biāo),如何規(guī)劃好自己的學(xué)習(xí)時間,如何讓自己的思想應(yīng)用到程序的編程過程中去,如何合理運用各種資源來提高自己的編程甚至是學(xué)習(xí)的能力。另外,還有幾點,我深有感觸,就是我還問了別人怎樣在Word文檔中截圖、怎樣擴大或縮小圖片等等。總之,收獲真的是挺大的。</p><p> 通過這段
24、時間的課程設(shè)計,我認(rèn)識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應(yīng)實際,實踐編程的能力。</p><p> 這次的課程設(shè)計我對于專業(yè)課的學(xué)習(xí)有了更加深刻的認(rèn)識,以為現(xiàn)在學(xué)的知識用不上就加以怠慢,等到想用的時候卻發(fā)現(xiàn)自己的學(xué)習(xí)原來是那么的不扎實。以后努力學(xué)好每門專業(yè)課,讓自己擁有更多的知識,才能解決更多的問題!
25、 </p><p> 總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進(jìn)一步的理解和認(rèn)識。</p><p> 不管怎么說,這次C++課程設(shè)計不僅給了我提高編程的能力的機會,而且讓我的綜合素質(zhì)得到了一個全面的發(fā)展。我相信,這樣的日子一定能成為我以后生活中一段美好的回憶。</p><p><b> 附錄一 參考文獻(xiàn)</b></p&g
26、t;<p> [1]譚浩強著《C++程序設(shè)計》,清華大學(xué)出版社 </p><p> [2]嚴(yán)蔚敏、吳偉民編著 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》,清華大學(xué)出版社 </p><p> [3]王杰《數(shù)據(jù)結(jié)構(gòu)經(jīng)典算法實現(xiàn)與習(xí)題解答》,人民郵電大學(xué)出版社</p><p><b> 附錄二 程序清單</b></p><
27、p> #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <malloc.h></p><p> #include <string.h></p><p> #define LEN sizeof(Stu
28、dent)</p><p> #define NULL 0</p><p> typedef struct student</p><p><b> {</b></p><p> int num; /*學(xué)號*/</p><p> char name[20]; /*姓名*/</p&g
29、t;<p> char sex[2]; /*性別*/</p><p> int score[4]; /*成績*/</p><p> int sum; /*總成績*/</p><p> struct student *next;</p><p><b> }Student;</b></p>
30、;<p> int n; /*聲明一個全局變量*/</p><p> Student *cin(void); /*聲明學(xué)生信息函數(shù)*/</p><p> Student *sort_all(Student *head); /*聲明排序函數(shù)*/</p><p> Student *sort_1(Student *head,int choose);
31、 /*聲明按學(xué)號排序函數(shù)*/</p><p> void sort_2(Student *head); /*聲明按總分排序函數(shù)*/</p><p> void print(Student *head); /*聲明顯示函數(shù)*/</p><p> void find(Student *head); /*聲明查詢函數(shù)*/</p><p>
32、Student *add_new(Student *head);</p><p> Student *cin()/*聲明學(xué)生信息函數(shù)*/</p><p><b> {</b></p><p><b> int flag;</b></p><p> Student *head,*p1,*p2;
33、</p><p><b> n=0;</b></p><p> head=(Student *)malloc(LEN);/*分配LEN大小的內(nèi)存空間給head,head為首地址*/</p><p><b> p2=head;</b></p><p> printf("\n請輸入第%
34、d名學(xué)生的學(xué)號,學(xué)號為0表示結(jié)束輸入:",n+1);</p><p> scanf("%d",&flag);</p><p> while(getchar()!='\n');</p><p> for(;flag;) /*輸入每個學(xué)生的信息*/</p><p><b>
35、{</b></p><p><b> n++;</b></p><p> p1=(Student *)malloc(LEN);</p><p> p1->num=flag;/*把flag復(fù)制給p1里面的num*/</p><p> printf("請輸入第%d名學(xué)生的姓名:&quo
36、t;,n); /*輸入姓名*/</p><p> scanf("%s",p1->name);</p><p> printf("請輸入第%d學(xué)生的性別:",n); /*輸入性別*/</p><p> scanf("%s",p1->sex);</p><p> pr
37、intf("請輸入第%d名學(xué)生的語文成績:",n); /*輸入語文成績*/</p><p> scanf("%d",&p1->score[0]);</p><p> printf("請輸入第%d名學(xué)生的數(shù)學(xué)成績:",n); /*輸入數(shù)學(xué)成績*/</p><p> scanf("
38、%d",&p1->score[1]);</p><p> printf("請輸入第%d名學(xué)生的英語成績:",n); /*輸入英語成績*/</p><p> scanf("%d",&p1->score[2]);</p><p> printf("請輸入第%d名學(xué)生的C語言成績
39、:",n); /*輸入C語言成績*/</p><p> scanf("%d",&p1->score[3]);</p><p> p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];/*求和*/</p><p> p2-&
40、gt;next=p1;/*將后一個節(jié)點指向當(dāng)前節(jié)點*/</p><p> p2=p1;/*讓p2成為當(dāng)前節(jié)點*/</p><p> printf("\n請輸入第%d名學(xué)生的學(xué)號,沒有此學(xué)生則輸入0表示結(jié)束:",n+1);</p><p> scanf("%d",&flag);</p><p&g
41、t;<b> }</b></p><p> p2->next=NULL;/*結(jié)束標(biāo)志*/</p><p> printf("\n\n");</p><p> return head;</p><p><b> }</b></p><p>
42、 Student *sort_all(Student *head) /*定義排序函數(shù)*/</p><p><b> {</b></p><p> int choose;</p><p><b> for(;;)</b></p><p><b> {</b></p&
43、gt;<p> printf("\n\t\t& & & & & 學(xué)生成績統(tǒng)計排序 & & & & &\n");</p><p> printf("\t\t&\t1.按學(xué)生學(xué)號排序\t &\n");</p><p> printf(&qu
44、ot;\t\t&\t2.按學(xué)生總分排序\t &\n");</p><p> printf("\t\t&\t7.單科高分及均分\t &\n");</p><p> printf("\t\t&\t8.顯示當(dāng)前學(xué)生成績\t &\n");</p><p> printf(
45、"\t\t&\t0.返回上一級菜單\t &\n");</p><p> printf("請輸入你要執(zhí)行的操作:");</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p>
46、<p> switch(choose)</p><p><b> {</b></p><p><b> case 1:</b></p><p><b> case 2:</b></p><p><b> case 3:</b><
47、;/p><p><b> case 4:</b></p><p><b> case 5:</b></p><p> case 6:head=sort_1(head,choose);break;</p><p> case 7:print(head);sort_2(head);break;<
48、;/p><p> case 8:print(head);break;</p><p> case 0:return head;</p><p> default: printf("\n\n您的輸入錯誤!請重新輸入:\n\n");break;</p><p><b> }</b></p>
49、<p><b> }</b></p><p><b> }</b></p><p> Student *sort_1(Student *head,int choose) /*定義按學(xué)號排序函數(shù)*/</p><p><b> {</b></p><p>
50、Student *p1,*p2=head->next,*pm,*px;</p><p> Student mid;</p><p><b> if (!p2) </b></p><p> return head;</p><p> for(p1=p2;p1->next!=NULL;p1=p1->
51、next)</p><p><b> {</b></p><p><b> pm=p1;</b></p><p> for(p2=p1->next;p2!=NULL;p2=p2->next)</p><p> switch(choose)</p><p>
52、<b> {</b></p><p> case 1:if (pm->num>p2->num) pm=p2;break;</p><p> case 2:if (pm->sum<p2->sum) pm=p2;break;</p><p> case 3:if (pm->score[0]<p
53、2->score[0]) pm=p2;break;</p><p> case 4:if (pm->score[1]<p2->score[1]) pm=p2;break;</p><p> case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;</p><p><b&g
54、t; }</b></p><p> if (pm!=p1)</p><p><b> {</b></p><p><b> mid=*pm;</b></p><p><b> *pm=*p1;</b></p><p><b&g
55、t; *p1=mid;</b></p><p> px=pm->next;</p><p> pm->next=p1->next;</p><p> p1->next=px;</p><p><b> }</b></p><p><b>
56、}</b></p><p> printf("\n排序后的成績表為:\n");</p><p> print(head);</p><p> return head;</p><p><b> }</b></p><p> void sort_2(Stud
57、ent *head) /*定義按總分排序函數(shù)*/</p><p><b> {</b></p><p> Student *p=head->next;</p><p> int count; </p><p> int max_1,max_2,max_3,max_4,min_1,min_2,min_3,mi
58、n_4;</p><p> int max_sum,min_sum;</p><p> int sum_1=0,sum_2=0,sum_3=0,sum_4=0;</p><p> double aver_1,aver_2,aver_3,aver_4,aver_sum,percent;</p><p><b> if (!p)
59、</b></p><p><b> return;</b></p><p> max_1=min_1=p->score[0];</p><p> max_2=min_2=p->score[1];</p><p> max_3=min_3=p->score[2];</p>
60、<p> max_4=min_4=p->score[3];</p><p> max_sum=min_sum=p->sum;</p><p> for(;p;p=p->next)</p><p><b> {</b></p><p> if (max_1<p->scor
61、e[0]) max_1=p->score[0];</p><p> else if (min_1>p->score[0]) min_1=p->score[0];</p><p> if (max_2<p->score[1]) max_2=p->score[1];</p><p> else if (min_2>p
62、->score[1]) min_2=p->score[1];</p><p> if (max_3<p->score[2]) max_3=p->score[2];</p><p> else if (min_3>p->score[2]) min_3=p->score[2];</p><p> if (max_4&
63、lt;p->score[3]) max_4=p->score[3];</p><p> else if (min_4>p->score[3]) min_4=p->score[3];</p><p> if (max_sum<p->sum) max_sum=p->sum;</p><p> else if (min
64、_sum>p->sum) min_sum=p->sum;</p><p> sum_1+=p->score[0];</p><p> sum_2+=p->score[1];</p><p> sum_3+=p->score[2];</p><p> sum_4+=p->score[3];<
65、;/p><p><b> }</b></p><p> aver_1=1.0*sum_1/n;</p><p> aver_2=1.0*sum_2/n;</p><p> aver_3=1.0*sum_3/n;</p><p> aver_4=1.0*sum_4/n;</p>
66、<p> for (p= head; p; p = p->next)</p><p> for(int i=0;i<4;i++)</p><p> {if(p->score[i]>=60)</p><p><b> count++;</b></p><p><b>
67、}</b></p><p> percent=(float)count/(float)n/4;</p><p> aver_sum=aver_1+aver_2+aver_3+aver_4;</p><p> printf("總共%d名學(xué)生,具體數(shù)據(jù)為:\n",n);</p><p> printf(&q
68、uot;總分最高分為%d,最低分位%d,平均分為%.2f,percent=%.2f\n,count=%d",</p><p> max_sum,min_sum,aver_sum,percent,count);</p><p><b> }</b></p><p> void find(Student *head) /*定義查詢函
69、數(shù)*/</p><p><b> {</b></p><p> Student *p;</p><p> int choose,fnum;</p><p> char tem[20];</p><p> if (n==0) {printf("\n當(dāng)前系統(tǒng)沒有任何學(xué)生數(shù)據(jù)!\n
70、");return;}</p><p><b> for(;;)</b></p><p><b> {</b></p><p> printf("\n請輸入您要查詢學(xué)生的方式:\n\n");</p><p> printf("1、按學(xué)號查詢;2、按姓名
71、查詢;0、我不查詢了。\n\n");</p><p> printf("請選擇:");</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p><p> if (choose==1)&
72、lt;/p><p><b> {</b></p><p> printf("\n請輸入你要查詢的學(xué)生的學(xué)號,輸入0退出學(xué)號查詢:");</p><p> scanf("%d",&fnum);</p><p> for(;fnum;)</p><p&g
73、t;<b> {</b></p><p> for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);</p><p><b> if (!p)</b></p><p><b> {</b></p>&l
74、t;p> printf("\n\n找不到你要查詢的學(xué)號,請重新輸入,輸入0表示結(jié)束:");</p><p> scanf("%d",&fnum);</p><p><b> }</b></p><p> else if (p->num==fnum)</p><
75、;p><b> {</b></p><p> printf("\n學(xué)號為%d學(xué)生的數(shù)據(jù)為:\n",p->num);</p><p> printf("學(xué)號\t姓名\t性別\t 語文成績 數(shù)學(xué)成績 英語成績 C語言成績 總分\n");/*輸出所有的學(xué)生信息*/</p><p&g
76、t; printf("%d\t%s\t%s\t %d %d %d %d %d\n",p->num,</p><p> p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->score[3],p->sum);</p&g
77、t;<p> printf("\n\n請輸入你還要查詢的學(xué)生的學(xué)號,輸入0表示不按學(xué)號查詢了:");</p><p> scanf("%d",&fnum);</p><p><b> }</b></p><p><b> }</b></p>
78、<p><b> }</b></p><p> else if (choose==2)</p><p><b> {</b></p><p> printf("\n請輸入你要查詢的學(xué)生的姓名,輸入0退出姓名查詢:");</p><p> scanf(&quo
79、t;%s",tem);</p><p> for(;strcmp(tem,"0");)</p><p><b> {</b></p><p> for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);</p>
80、;<p><b> if (!p)</b></p><p><b> {</b></p><p> printf("\n\n找不到你要查詢的姓名,請重新輸入,輸入0表示結(jié)束:");</p><p> scanf("%s",tem);</p><
81、;p><b> }</b></p><p> else if (!strcmp(p->name,tem))</p><p><b> {</b></p><p> printf("\n姓名為%s學(xué)生的數(shù)據(jù)為:\n",p->name);</p><p>
82、 printf("學(xué)號\t姓名\t性別\t 語文成績 數(shù)學(xué)成績 英語成績 C語言成績 總分\n");</p><p> printf("%d\t%s\t%s\t %d %d %d %d %d\n",p->num,</p><p> p->name,p->sex ,p-&g
83、t;score[0],p->score[1],p->score[2],p->score[3],p->sum);</p><p> printf("\n\n請輸入你還要查詢的學(xué)生的姓名,輸入0表示不按姓名查詢了:");</p><p> scanf("%s",tem);</p><p><b&g
84、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p> else if (choose==0) {printf("\n你選擇了不查詢!\n");break;}</p><p> else {printf
85、("\n你以其他方式選擇了不查詢!\n");break;}</p><p><b> }</b></p><p><b> }</b></p><p> Student *add_new(Student *head) /*定義插入函數(shù)*/</p><p><b>
86、 {</b></p><p> Student *p;</p><p><b> int flag;</b></p><p> printf("\n\n請輸入你要新加入學(xué)生的學(xué)號,學(xué)號為0表示結(jié)束輸入:");</p><p> scanf("%d",&
87、flag);</p><p> while(getchar()!='\n');</p><p> for(;flag;)</p><p><b> {</b></p><p> p=(Student *)malloc(LEN);</p><p> p->num=fl
88、ag;</p><p> printf("請輸入新加入學(xué)生的姓名:",n); /*輸入姓名*/</p><p> scanf("%s",p->name);</p><p> printf("請輸入新加入學(xué)生的性別:"); /*輸入性別*/</p><p> scanf(
89、"%s",p->sex);</p><p> printf("請輸入新加入學(xué)生的語文成績:",n); /*輸入語文成績*/</p><p> scanf("%d",&p->score[0]);</p><p> printf("請輸入新加入學(xué)生的數(shù)學(xué)成績:",n
90、); /*輸入數(shù)學(xué)成績*/</p><p> scanf("%d",&p->score[1]);</p><p> printf("請輸入新加入學(xué)生的英語成績:",n); /*輸入英語成績*/</p><p> scanf("%d",&p->score[2]);</p
91、><p> printf("請輸入新加入學(xué)生的C語言成績:",n); /*輸入英語成績*/</p><p> scanf("%d",&p->score[3]);</p><p> p->sum=p->score[0]+p->score[1]+p->score[2]+p->score
92、[3];</p><p> p->next=head->next;</p><p> head->next=p;</p><p><b> n++;</b></p><p> printf("\n請輸入還要加入學(xué)生的學(xué)號,沒有此學(xué)生則輸入0表示結(jié)束:");</p>
93、<p> scanf("%d",&flag);</p><p><b> }</b></p><p> head=sort_1(head,1);</p><p> printf("加入后的成績表為:\n");</p><p> print(head)
94、;</p><p> return head;</p><p><b> }</b></p><p> void print(Student *head)</p><p><b> {</b></p><p> Student *p=head->next;&l
95、t;/p><p> if (!p) {printf("\n\n此系統(tǒng)目前沒有任何學(xué)生數(shù)據(jù)!\n\n\n");return;}</p><p> printf("此系統(tǒng)目前共計學(xué)生%d名:\n",n);</p><p> printf("&&&&&&&&
96、&&&&&&&&&&&&&&&&&&學(xué)生成績統(tǒng)計一覽&&&&&&&&&&&&&&&&&&&&&&&&&a
97、mp;&&&\</p><p> &&&&&\n");</p><p> printf("學(xué)號\t姓名\t性別\t 語文成績 數(shù)學(xué)成績 英語成績 C語言成績總分\n");</p><p> for(;p;p=p->next)</p><
98、;p> printf("%d\t%s\t%s\t %d %d %d %d %d\n",</p><p> p->num,p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->score[3],p->sum=p->score[0
99、]+p->score[1]+p->score[2]+p->score[3]);</p><p><b> }</b></p><p> struct student *del(struct student *head,long num) /*定義刪除學(xué)生信息函數(shù)*/</p><p> {struct student *p
100、1,*p2;</p><p> if(head==NULL) {printf("\nlist null! \n");return head;}</p><p><b> p1=head;</b></p><p> while(num!=p1->num && p1->next!=NULL)&l
101、t;/p><p> {p2=p1;p1=p1->next;}</p><p> if(num==p1->num)</p><p> {if(p1==head)head=p1->next;</p><p> else p2->next=p1->next;</p><p> printf
102、("delete:%ld\n",num);</p><p><b> n=n-1;</b></p><p><b> }</b></p><p> else printf("%ld not deen found! \n",num);</p><p>
103、return(head);</p><p><b> }</b></p><p> int main()/*主函數(shù)即用戶的操作界面*/</p><p><b> {</b></p><p> Student *head;</p><p> int choose,i,
104、num; /*聲明局部變量*/</p><p> head=(Student *)malloc(LEN);</p><p> head->next=NULL;</p><p><b> for(;;)</b></p><p><b> {</b></p><p>
105、; printf("\n\t\t* * * * * 學(xué)生成績管理系統(tǒng) * * * * * *\n"); /*學(xué)生成績管理系統(tǒng)*/</p><p> printf("\t\t*\t1.學(xué)生數(shù)據(jù)鍵盤錄入\t *\n"); /*.學(xué)生數(shù)據(jù)鍵盤錄入*/</p><p> printf("\t\t*\t2.學(xué)生數(shù)據(jù)統(tǒng)計排序和計算\
106、t*\n"); /*學(xué)生數(shù)據(jù)統(tǒng)計排序*/</p><p> printf("\t\t*\t3.查詢學(xué)生數(shù)據(jù)\t\t *\n"); /*.查詢學(xué)生數(shù)據(jù)*/</p><p> printf("\t\t*\t4.插入學(xué)生數(shù)據(jù)\t\t *\n"); /*插入學(xué)生數(shù)據(jù)*/</p><p> p
107、rintf("\t\t*\t5.顯示當(dāng)前成績表\t *\n"); /*顯示當(dāng)前成績表*/</p><p> printf("\t\t*\t6.刪除學(xué)生數(shù)據(jù)\t\t *\n"); /*刪除學(xué)生數(shù)據(jù)*/</p><p> printf("\t\t*\t0.退出成績管理系統(tǒng)\t *\n");
108、 /*退出成績管理系統(tǒng)*/</p><p> printf("\n請輸入你要執(zhí)行的操作:"); /*請輸入你要執(zhí)行的操作*/</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p><p> s
109、witch(choose)</p><p><b> {</b></p><p> case 1:printf("\n\t\t\t\t&&&&&&&&&&&&&注意&&&&&&&&&
110、;&&&&&");</p><p> printf("\n\n 此選項將會建立新的學(xué)生數(shù)據(jù)系統(tǒng) ,原來的數(shù)據(jù)將\</p><p> 不再存在,你確信要刪除原來的數(shù)據(jù)并建立新的數(shù)據(jù)系統(tǒng)么?\n\n");</p><p> printf("1、建立新的數(shù)據(jù)系統(tǒng);0、放棄建立新的數(shù)
111、據(jù)系統(tǒng)。\n\n");</p><p> printf("請選擇:");</p><p> scanf("%d",&i);</p><p> if (i==1) {head=cin();print(head);break;}</p><p> else if (i==0)<
112、;/p><p><b> {</b></p><p> printf("\n選擇了放棄建立新的數(shù)據(jù)系統(tǒng)!\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b&
113、gt; else {</b></p><p> printf("\n請做出別的選擇,當(dāng)作放棄建立!\n");</p><p><b> break;</b></p><p><b> }</b></p><p> case 2:head=sort_all(h
114、ead);break; /*調(diào)用排序函數(shù)*/</p><p> case 3:find(head);break; /*調(diào)用查詢函數(shù)*/</p><p> case 4:head=add_new(head); /*調(diào)用插入函數(shù)*/</p><p> case 5:print(head);break; /*調(diào)用顯示函數(shù)*/</p><p>
115、 case 6:printf("請輸入要刪除的學(xué)生學(xué)號:");</p><p> scanf("%d",&num);</p><p> del(head,num);break; /*調(diào)用刪除函數(shù)*/</p><p> case 0:system("pause");return 0; /*退出
116、系統(tǒng)*/</p><p> default: printf("\n\n您的輸入有誤!請重新輸入:\n\n");break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計--學(xué)生成績排名系統(tǒng)
- 課程設(shè)計---學(xué)生成績排名系統(tǒng)
- c++課程設(shè)計--學(xué)生成績排名系統(tǒng)
- 成績排名證明
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 課程設(shè)計——學(xué)生成績管理系統(tǒng)
- 課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng) 課程設(shè)計
- 課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 課程設(shè)計-- 學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 成績排名證明模板
- 學(xué)生成績管理系統(tǒng)課程設(shè)計9
- 學(xué)生成績管理系統(tǒng)課程設(shè)計10
- vfp課程設(shè)計--- 學(xué)生成績管理系統(tǒng)
評論
0/150
提交評論