版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《程序設(shè)計基礎(chǔ)》課程設(shè)計</p><p> ------學生成績排名系統(tǒng)</p><p> 課程設(shè)計的目的和要求</p><p> 高級語言課程設(shè)計的主要目的是培養(yǎng)學生能夠提高綜合應用語言的能力,通過課程設(shè)計的訓練,使學生能及時鞏固已學的知識,補充未學的但有必要的內(nèi)容,掌握應用計算機解決實際問題的基本方法,熟悉程序開發(fā)的全過程,提高綜合應
2、用語言的能力。高級語言程序設(shè)計的主要任務是要求學生遵循軟件開發(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)功能模塊進行分析,寫出詳細的設(shè)計說明文檔;</p><p> 3.編寫程序代碼,調(diào)試所編寫程序使其能正確運行;</p><p> 4.設(shè)計完成的軟件便于完成和使用;</p><p> 5.設(shè)計完成后提交課程設(shè)計報告;</p><p><b> 課程設(shè)計任務內(nèi)容</b></p><p&g
5、t;<b> 2.1 考核內(nèi)容</b></p><p> 2.1.1 編寫的C++語言程序</p><p> ●針對編寫的C++程序,應該主要考查下列內(nèi)容:</p><p> ●是否符合題目要求,是否完成了主要功能;</p><p> ●是否存在語法錯誤、邏輯錯誤及運行錯誤;</p><p&
6、gt; ●程序設(shè)計是否合理;</p><p> ●程序是否具有良好的可讀性和可靠性;</p><p> ●是否符合結(jié)構(gòu)化程序設(shè)計所倡導的基本理念;</p><p> ●用戶界面是否友好。</p><p> 2.1.2 課程設(shè)計報告</p><p> ●針對提交的課程設(shè)計報告,應該主要考查下列內(nèi)容:</
7、p><p> ●程序設(shè)計的報告內(nèi)容是否全面,觀點是否正確;</p><p> ●設(shè)計過程是否符合結(jié)構(gòu)化程序設(shè)計方法的基本原則;</p><p> ●層次是否清楚,語言是否通順;</p><p> ●各種圖表是否規(guī)范;是否具有良好的程序設(shè)計習慣。</p><p><b> 2.2 課題</b>
8、</p><p> 10、學生信息管理系統(tǒng)設(shè)計</p><p><b> 實現(xiàn)以下功能:</b></p><p> 1) 系統(tǒng)以菜單方式工作;</p><p> 2) 學生信息錄入功能(學生信息用文件保存);</p><p> 3) 學生信息瀏覽功能;</p><p&
9、gt; 4) 查詢、排序功能(至少兩種查詢依據(jù)和兩種排序依據(jù));</p><p> 5) 學生信息刪除、修改功能。</p><p> 備注:學生信息包括:學號,姓名,年齡,性別,出生年月,地址,電話,E-mail等。</p><p><b> 詳細設(shè)計說明</b></p><p><b> 3.1 模
10、板設(shè)計圖</b></p><p> 該系統(tǒng)可以按功能進行模塊劃分,其模塊如圖3-1所示:</p><p> 圖3-1 模板設(shè)計圖</p><p><b> 其中:</b></p><p><b> 1.學生成績錄入</b></p><p> 2..增加學
11、生成績記錄模塊可以完成學生成績的輸入,輸入信息包括班級、學號、姓名、課程名、成績。</p><p> 3 .刪除學生成績記錄模塊可以完成學生成績的刪除。</p><p> 4.查詢學生成績記錄模塊可以完成學生成績的查詢,可以通過輸入姓名、學號</p><p> 或者是課程 名來查詢學生成績。 </p><p> 5.學生成績排序模塊可
12、以完成對學生成績的排序,按照成績的高低來進行排</p><p><b> 序。</b></p><p> 3.2 函數(shù)模塊、功能分析、參數(shù)說明</p><p> 1.增加學生成績記錄模塊(void Manage::add( ))</p><p> 對應于總體設(shè)計時的系統(tǒng)功能模塊圖,各個功能模塊的處理邏輯如下:&l
13、t;/p><p> 主要完成將數(shù)據(jù)存入單鏈表中的工作。在這次增加學生成績記錄中,記錄可以從二進制形式存儲的數(shù)據(jù)文件中讀入,也可以從鍵盤逐個讀入學生記錄。如圖3-2所示:圖3-2 增加學生成績記錄流程圖.</p><p> 2.刪除學生成績記錄模塊(void Manage::del( ))</p><p> 要刪除某個學生的信息,就要從磁盤文件中將所有同學信息讀
14、出來,然后除要刪除的學生外,其它的所有記錄再重新存入原來的磁盤文件中,如圖3-3所示:</p><p><b> N</b></p><p><b> Y</b></p><p> 圖3-3 刪除學生成績記錄流程圖</p><p> 3..查詢學生成績記錄模塊(void Manage::se
15、arch( ))</p><p> 主要完成在單鏈表中查找滿足相關(guān)條件的學生記錄。用戶可以按照學生的 學號、姓名或課程名在單鏈表中進行查找。未找到輸出提示信息,如圖3-4所示:</p><p> 圖3-4 查詢學生成績記錄流程圖</p><p> 4.學生成績排序模塊</p><p> 主要完成按照成績的高低來進行排序,如圖3
16、-6所示:</p><p> 圖3-6 學生成績排序流程圖</p><p><b> 3.3 函數(shù)流程圖</b></p><p> 系統(tǒng)首先進入歡迎界面并提示用戶輸入不同的阿拉伯數(shù)字會進行不同的操作。在用戶做出選擇后,根據(jù)用戶輸入的阿拉伯數(shù)字,程序?qū)⒄{(diào)用相應的功能模塊,實現(xiàn)用戶要進行的操作。完成一次用戶的操作后,再回到歡迎界面,等待用戶再
17、做出選擇,再調(diào)用相應的功能模塊……,知道用戶在歡迎界面選擇了退出,該系統(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ù)你要進行的操作來選擇。</p><p> 4.2 運行結(jié)果及截圖</p><p> 1.此圖為程序運行成功后,出現(xiàn)的界面,此為主菜單界面,可依據(jù)界面執(zhí) </p><p> 行。如圖4-1所示:</p><p> 2.首先錄入學生成績記錄,輸入學生的班級、學號、姓名、課程名、成績,如圖4-2所示:</p>
19、<p> 圖4-2 錄入學生成績記錄</p><p> 3返回主菜單,選擇相應的操作,對學生成績進行排序和相應的查詢,如圖4-3所示:</p><p> 圖4-3 學生成績排序</p><p> 4.返回主菜單,進行查詢學生成績記錄操作,如圖4-4所示:</p><p> 圖4-4 學生成績排序</p>&l
20、t;p> 5.返回主菜單,進行對學生成員進行增加。如圖4-5所示:</p><p> 圖4-5 查詢學生成績</p><p> 6.返回主菜單,進行刪除學生成績記錄操作,按照學號來刪除學生信息,如圖4-6所示:</p><p> 圖4-6 刪除學生成績記錄</p><p><b> 課程設(shè)計心得與體會</b&g
21、t;</p><p> 本次課程設(shè)計,使我對《數(shù)據(jù)結(jié)構(gòu)》這門課程有了更深入的理解。《數(shù)據(jù)結(jié)構(gòu)》是一門實踐性較強的課程,為了學好這門課程,必須在掌握理論知識的同時,加強上機實踐。一個人的力量是有限的,要想把課程設(shè)計做的更好,就要學會參考一定的資料,吸取別人的經(jīng)驗,讓自己和別人的思想有機的結(jié)合起來,得出屬于你自己的靈感。</p><p> 在本課程設(shè)計中,我明白了理論與實際應用相結(jié)合的重要
22、性,并提高了自己組織數(shù)據(jù)及編寫大型程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我的綜合運用所學知識的能力。程序的編寫需要有耐心,有些事情看起來很復雜,但問題需要一點一點去解決,分析問題,把問題一個一個劃分,劃分成小塊以后就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。</p><p> 在這段時間里,一直修改著相應的程序,并且嘗試著調(diào)試 各種運
23、行結(jié)果。終于,在自己的努力下,課程設(shè)計還算是有點起色。經(jīng)過這次的編程,我學會了很多東西。比如說,如何在網(wǎng)上查找一些有用的東西,如何設(shè)計自己的目標,如何規(guī)劃好自己的學習時間,如何讓自己的思想應用到程序的編程過程中去,如何合理運用各種資源來提高自己的編程甚至是學習的能力。另外,還有幾點,我深有感觸,就是我還問了別人怎樣在Word文檔中截圖、怎樣擴大或縮小圖片等等??傊?,收獲真的是挺大的。</p><p> 通過這段
24、時間的課程設(shè)計,我認識到數(shù)據(jù)結(jié)構(gòu)是一門比較難的課程。需要多花時間上機練習。這次的程序訓練培養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設(shè)計的基本技能,提高了我適應實際,實踐編程的能力。</p><p> 這次的課程設(shè)計我對于專業(yè)課的學習有了更加深刻的認識,以為現(xiàn)在學的知識用不上就加以怠慢,等到想用的時候卻發(fā)現(xiàn)自己的學習原來是那么的不扎實。以后努力學好每門專業(yè)課,讓自己擁有更多的知識,才能解決更多的問題!
25、 </p><p> 總的來說,這次課程設(shè)計讓我獲益匪淺,對數(shù)據(jù)結(jié)構(gòu)也有了進一步的理解和認識。</p><p> 不管怎么說,這次C++課程設(shè)計不僅給了我提高編程的能力的機會,而且讓我的綜合素質(zhì)得到了一個全面的發(fā)展。我相信,這樣的日子一定能成為我以后生活中一段美好的回憶。</p><p><b> 附錄一 參考文獻</b></p&g
26、t;<p> [1]譚浩強著《C++程序設(shè)計》,清華大學出版社 </p><p> [2]嚴蔚敏、吳偉民編著 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》,清華大學出版社 </p><p> [3]王杰《數(shù)據(jù)結(jié)構(gòu)經(jīng)典算法實現(xiàn)與習題解答》,人民郵電大學出版社</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; /*學號*/</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); /*聲明學生信息函數(shù)*/</p><p> Student *sort_all(Student *head); /*聲明排序函數(shù)*/</p><p> Student *sort_1(Student *head,int choose);
31、 /*聲明按學號排序函數(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()/*聲明學生信息函數(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名學生的學號,學號為0表示結(jié)束輸入:",n+1);</p><p> scanf("%d",&flag);</p><p> while(getchar()!='\n');</p><p> for(;flag;) /*輸入每個學生的信息*/</p><p><b>
35、{</b></p><p><b> n++;</b></p><p> p1=(Student *)malloc(LEN);</p><p> p1->num=flag;/*把flag復制給p1里面的num*/</p><p> printf("請輸入第%d名學生的姓名:&quo
36、t;,n); /*輸入姓名*/</p><p> scanf("%s",p1->name);</p><p> printf("請輸入第%d學生的性別:",n); /*輸入性別*/</p><p> scanf("%s",p1->sex);</p><p> pr
37、intf("請輸入第%d名學生的語文成績:",n); /*輸入語文成績*/</p><p> scanf("%d",&p1->score[0]);</p><p> printf("請輸入第%d名學生的數(shù)學成績:",n); /*輸入數(shù)學成績*/</p><p> scanf("
38、%d",&p1->score[1]);</p><p> printf("請輸入第%d名學生的英語成績:",n); /*輸入英語成績*/</p><p> scanf("%d",&p1->score[2]);</p><p> printf("請輸入第%d名學生的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é)點指向當前節(jié)點*/</p><p> p2=p1;/*讓p2成為當前節(jié)點*/</p><p> printf("\n請輸入第%d名學生的學號,沒有此學生則輸入0表示結(jié)束:",n+1);</p><p> scanf("%d",&flag);</p><p&g
41、t;<b> }</b></p><p> p2->next=NULL;/*結(jié)束標志*/</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& & & & & 學生成績統(tǒng)計排序 & & & & &\n");</p><p> printf("\t\t&\t1.按學生學號排序\t &\n");</p><p> printf(&qu
44、ot;\t\t&\t2.按學生總分排序\t &\n");</p><p> printf("\t\t&\t7.單科高分及均分\t &\n");</p><p> printf("\t\t&\t8.顯示當前學生成績\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) /*定義按學號排序函數(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名學生,具體數(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當前系統(tǒng)沒有任何學生數(shù)據(jù)!\n
70、");return;}</p><p><b> for(;;)</b></p><p><b> {</b></p><p> printf("\n請輸入您要查詢學生的方式:\n\n");</p><p> printf("1、按學號查詢;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請輸入你要查詢的學生的學號,輸入0退出學號查詢:");</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找不到你要查詢的學號,請重新輸入,輸入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學號為%d學生的數(shù)據(jù)為:\n",p->num);</p><p> printf("學號\t姓名\t性別\t 語文成績 數(shù)學成績 英語成績 C語言成績 總分\n");/*輸出所有的學生信息*/</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請輸入你還要查詢的學生的學號,輸入0表示不按學號查詢了:");</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請輸入你要查詢的學生的姓名,輸入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學生的數(shù)據(jù)為:\n",p->name);</p><p>
82、 printf("學號\t姓名\t性別\t 語文成績 數(shù)學成績 英語成績 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請輸入你還要查詢的學生的姓名,輸入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請輸入你要新加入學生的學號,學號為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("請輸入新加入學生的姓名:",n); /*輸入姓名*/</p><p> scanf("%s",p->name);</p><p> printf("請輸入新加入學生的性別:"); /*輸入性別*/</p><p> scanf(
89、"%s",p->sex);</p><p> printf("請輸入新加入學生的語文成績:",n); /*輸入語文成績*/</p><p> scanf("%d",&p->score[0]);</p><p> printf("請輸入新加入學生的數(shù)學成績:",n
90、); /*輸入數(shù)學成績*/</p><p> scanf("%d",&p->score[1]);</p><p> printf("請輸入新加入學生的英語成績:",n); /*輸入英語成績*/</p><p> scanf("%d",&p->score[2]);</p
91、><p> printf("請輸入新加入學生的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請輸入還要加入學生的學號,沒有此學生則輸入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)目前沒有任何學生數(shù)據(jù)!\n\n\n");return;}</p><p> printf("此系統(tǒng)目前共計學生%d名:\n",n);</p><p> printf("&&&&&&&&
96、&&&&&&&&&&&&&&&&&&學生成績統(tǒng)計一覽&&&&&&&&&&&&&&&&&&&&&&&&&a
97、mp;&&&\</p><p> &&&&&\n");</p><p> printf("學號\t姓名\t性別\t 語文成績 數(shù)學成績 英語成績 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) /*定義刪除學生信息函數(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* * * * * 學生成績管理系統(tǒng) * * * * * *\n"); /*學生成績管理系統(tǒng)*/</p><p> printf("\t\t*\t1.學生數(shù)據(jù)鍵盤錄入\t *\n"); /*.學生數(shù)據(jù)鍵盤錄入*/</p><p> printf("\t\t*\t2.學生數(shù)據(jù)統(tǒng)計排序和計算\
106、t*\n"); /*學生數(shù)據(jù)統(tǒng)計排序*/</p><p> printf("\t\t*\t3.查詢學生數(shù)據(jù)\t\t *\n"); /*.查詢學生數(shù)據(jù)*/</p><p> printf("\t\t*\t4.插入學生數(shù)據(jù)\t\t *\n"); /*插入學生數(shù)據(jù)*/</p><p> p
107、rintf("\t\t*\t5.顯示當前成績表\t *\n"); /*顯示當前成績表*/</p><p> printf("\t\t*\t6.刪除學生數(shù)據(jù)\t\t *\n"); /*刪除學生數(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 此選項將會建立新的學生數(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請做出別的選擇,當作放棄建立!\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("請輸入要刪除的學生學號:");</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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計--學生成績排名系統(tǒng)
- 課程設(shè)計---學生成績排名系統(tǒng)
- c++課程設(shè)計--學生成績排名系統(tǒng)
- 成績排名證明
- 學生成績管理系統(tǒng)課程設(shè)計
- 課程設(shè)計——學生成績管理系統(tǒng)
- 課程設(shè)計---學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)課程設(shè)計
- 學生成績管理系統(tǒng)課程設(shè)計
- 學生成績管理系統(tǒng)課程設(shè)計
- 學生成績管理系統(tǒng)課程設(shè)計
- 學生成績管理系統(tǒng) 課程設(shè)計
- 課程設(shè)計--學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)課程設(shè)計
- 課程設(shè)計-- 學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)課程設(shè)計
- 成績排名證明模板
- 學生成績管理系統(tǒng)課程設(shè)計9
- 學生成績管理系統(tǒng)課程設(shè)計10
- vfp課程設(shè)計--- 學生成績管理系統(tǒng)
評論
0/150
提交評論