學生成績管理系統(tǒng)實驗報告_第1頁
學生成績管理系統(tǒng)實驗報告_第2頁
學生成績管理系統(tǒng)實驗報告_第3頁
學生成績管理系統(tǒng)實驗報告_第4頁
學生成績管理系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

學生成績管理系統(tǒng)C語言程序設(shè)計實訓報告姓 名 專 業(yè) 班 級 指導教師 2011 年 7月14日目錄一 、實訓目的和要求:1二 、實訓任務(wù)內(nèi)容:1三 、詳細設(shè)計說明:1四 、軟件使用說明:2五 、實訓心得與體會:5參考文獻:6附錄:部分程序清單614一 、實訓目的和要求:軟件技術(shù)專業(yè)重要的實踐性環(huán)節(jié)之一,是學生在學習完課程后的一次全面的綜合練習。通過實訓鞏固和加深學生對C語言課程的基本知識的理解和掌握,掌握C語言編程和程序調(diào)試的基本技能,利用C語言進行基本的軟件設(shè)計,掌握書寫程序設(shè)計說明文檔的能力,提高運用C語言解決實際問題的能力。實訓要求:1. 分析實訓題目的要求2. 寫出詳細設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用4. 設(shè)計完成后提交實訓報告二 、實訓任務(wù)內(nèi)容:1具備對成績的管理功能(添加、刪除、排序)2具備對成績的統(tǒng)計功能(最高分,最低分,平均分,及格率等)3具備按學號、姓名、或課程名查詢成績的功能。備注:成績記錄以下信息:班級,學號,姓名,課程名,成績(百分制)。可以用能表示學生成績的結(jié)構(gòu)體數(shù)組存儲數(shù)據(jù)。三 、詳細設(shè)計說明:1Main()函數(shù),應(yīng)用程序的入口。1 進入程序以后,要先創(chuàng)建數(shù)據(jù)庫,添加學生信息。用函數(shù)Student Create(),以Head為頭指針輸入并且創(chuàng)建鏈表。通過count循環(huán)來完成計數(shù)。通過結(jié)構(gòu)體struct student來保存學生的學號、姓名、班級、課程名、成績等有關(guān)信息。并且通過cin函數(shù)來進行給當前學生輸入初始信息。2 數(shù)據(jù)的存儲。對于文件的數(shù)據(jù)的寫入 在寫入完成后一定要刷新緩沖區(qū)文件 才能保證數(shù)據(jù)真正從緩沖區(qū)輸出到 否則無效使用完文件一定要關(guān)閉 。所以用fflush刷新文件。要不內(nèi)容是不會輸出到文件的。3 Void how_Info(Student head),在進行插入數(shù)據(jù)后來顯示數(shù)據(jù),通過一個頭節(jié)點開遍歷鏈表。void Delete(unsigned int DeleteNumber),通過查詢學號刪除數(shù)據(jù)。int GetCount(Student head),獲得鏈表節(jié)點個數(shù) 也就是學生的個數(shù) 一是通過 s_sount獲得 2是遍歷鏈表。foat Max_Score(Student head),尋找最大數(shù)據(jù)。Float ShowPass(Student head),顯示及格率。float fAverage(Student head),寫入文件的平均分。void WriteData(Student head),向文件寫數(shù)據(jù) c:score.txt。4.程序開始運行以后,通過輸入要執(zhí)行的命令編號,來選擇要執(zhí)行的命令,如果命令錯誤,則返回主界面重新輸入要執(zhí)行的命令編號。如果輸入正確,則命令按要求執(zhí)行,并且按照命令提示進行相關(guān)操作。操作完成后,暫停1s,會自動返回主界面。7學生成績管理系統(tǒng)流程圖,如圖1所示:Main( )暫停1s,返回主界面主界面顯示輸入要執(zhí)行的命令添加最高分最底分命令正確 是平均分及格率保存 否 圖1 流程圖四 、軟件使用說明:1在VC+6.0上先編譯,再執(zhí)行程序,得到主窗口。如圖2示: 圖2 顯示主窗口2從鍵盤輸入數(shù)字1,按下回車。按提示要求添加學生成績等信息。如圖3示: 圖3 添加學生成績3輸入完畢學生信息后。根據(jù)提示按下回車鍵,返回主界面。再輸入數(shù)字2,查看已輸入的學生成績信息。如圖4示: 圖4 顯示已輸入信息4查看完畢所輸入信息后,按回車鍵返回主菜單。再輸入數(shù)字3,按下回車查看所輸入成績的最高分。如圖5示:圖5 查看最高分5查看完畢后,按回車鍵返回主菜單。再輸入數(shù)字4,按下回車查看所輸入成績的最低分。如圖6示: 圖6 查看最底分6再按回車鍵返回主菜單。輸入數(shù)字5,按下回車鍵。鍵入所需要刪除的學生學號。通過學號刪除該學生的有關(guān)成績等信息。如圖7示:圖7 刪除該學生信息7輸入數(shù)字6.,按下回車。查看及格率。、如圖8示:圖8 查看及格率8輸入數(shù)字7,求輸入所有成績的平均分。如圖9示: 圖9 查看平均分9輸入數(shù)字8,保存所添加的學生成績信息到指定文件夾。如圖10所示。圖10 保存信息10輸入數(shù)字9退出程序。如圖11所示。 圖11 退出程序五 、實訓心得與體會:課程設(shè)計是培養(yǎng)學生綜合運用所學知識 ,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓練和考察過程.隨著科學技術(shù)發(fā)展的日新月異,當今計算機應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強大的一種高級語言,因此做好C語言課程設(shè)計是十分必要的。 回顧起此次課程設(shè)計,至今我們?nèi)愿锌H多,的確,自從拿到題目到完成整個編程,從理論到實踐,在兩個周的時間里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計之后,我們把前面所學過的知識又重新溫故了一遍。 我做的是學生成績管理系統(tǒng),雖然是很簡單的一個小的程序,但對我一個初學者來說卻是一個很大的困難。更加是第一次做課程設(shè)計,所以連續(xù)做了幾天卻絲毫沒有進展,最主要是不知從何開始,這個時候才知道上課老師們不厭其煩的教導是多么的寶貴,這個時候才后悔上課的時候沒有認真的聽講。可是現(xiàn)在一切都晚了,還好時間還算是充裕,只好拿出書本重新復習一下。特別是結(jié)構(gòu)體,指針的部分,幾乎是一片空白。不過經(jīng)過幾天的努力,大體上把課本上的知識點看了一遍,知識點也都基本是撐握了,所以一下一步就是開始正式的編程序了。不過畢竟是個新手,還是不知如何下手,于是就在網(wǎng)上下了一篇類似的程序,經(jīng)過仔細的研究,終于讀懂了C語言編程的基本過程和方法。 經(jīng)過一波三折,終于開始正式編程。 編程是一件很枯燥很無聊的事情,但是出于完成作業(yè),還必須強破自己堅持下去,按照老師所說的模塊化思想,分部分的進行編寫。而且編程是一件高精度、模范化的事情,稍有疏乎都會影響全局,也可能因為某一處的小的錯誤而導致整個程序的無法運行。所以認真仔細就是非常重要的了。開始的時候真的感覺編程是一件很無聊的事情,不過當一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多錯誤和漏洞,不過還是很高興的。無論如何是自己的勞動成果,是自己經(jīng)過努力得到的成績,同時也是學習C語言的一次實踐作業(yè),自己進步的證明。 通過這次課程設(shè)計,使我對C語言有了更進一步的認識和了解,要想學好它要重在實踐,要通過不斷的上機操作才能更好地學習它,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學習也有所改進;再有對C語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對C語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐的學習,我認識到學好計算機要重視實踐操作,不僅僅是學習C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。在課程設(shè)計過程中,收獲知識,提高能力的同時,我也學到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。因此在以后的生活和學習的過程中,我一定會把課程設(shè)計的精神帶到生活中,不畏艱難,勇往直前!參考文獻:1陳顯剛,C語言程序設(shè)計M .。北京:北京理工大學出版社,2007。2譚浩強,C語言程序設(shè)計M。北京:清華大學出版社,1998。3徐新華,C語言程序設(shè)計教程M。北京:中國水利水電出版社,2001.4伍一,等。C語言程序設(shè)計與實訓教程M。北京:清華大學出版社,2007.5徐翠霞,C語言程序設(shè)計案例教程M。北京:北京大學出版社,2008。6劉新航,軟件工程與項目管理案例教程M。北京:北京大學出版社,2009。附錄:部分程序清單#include #includeint s_count=1; unsigned int DeleteNumber=0; unsigned int QueryNumber=0; FILE *StoreData=NULL; typedef struct Student_Infofloat score;unsigned int number;char course_name10;char student_name10; char class_name10;struct Stuent_Info*next ;*Head,*Student;Head head=NULL; Student Create()Student head,p1,p2;p1=(Student)malloc(sizeof(struct Student_Info);p2=p1;head=p1;printf(當每次學號輸入0的時候自動退出nn);printf(提示:n);printf(請輸入第%d學生學 號:,s_count);scanf(%d,&p1-number);if(p1-number=0) return NULL;printf(請輸入第%d學生姓 名:,s_count);scanf(%s,p1-student_name);printf(請輸入第%d學生班 級:,s_count);scanf(%s,p1-class_name);printf(請輸入第%d學生課程名:,s_count);scanf(%s,p1-course_name);printf(請輸入第%d學生成 績:,s_count);p1-score=1.4f; scanf(%f,&p1-score); s_count+; for(;) printf(請輸入第%d學生學 號:,s_count);p2=p1;p1=(Student)malloc(sizeof(struct Student_Info);scanf(%d,&p1-number);if(p1-number=0) free(p1);p1=NULL;p2-next=NULL;break;printf(請輸入第%d學生姓 名:,s_count);scanf(%s,p1-student_name);printf(請輸入第%d學生班 級:,s_count);scanf(%s,p1-class_name);printf(請輸入第%d學生課程名:,s_count);scanf(%s,p1-course_name);printf(請輸入第%d學生成 績:,s_count);scanf(%f,&p1-score) ;p2-next=p1;s_count+; free(p1);p1=NULL;p2-next=NULL;return head;/顯示數(shù)據(jù)void Show_Info(Student head) printf(nt學號tt姓名tt班級tt課程tt分數(shù) n);while(head!=NULL)printf(t%dtt%stt%stt%stt%.2f n,head-number,head-student_name,head-class_name,head-course_name,head-score);head=head-next;/顯示及格率float ShowPass(Student head) int n=0;float f=0.0;printf(nt學號tt姓名tt班級tt課程tt分數(shù) n);while(head!=NULL)if(head-score60)printf(t%dtt%stt%stt%stt%.2f n,head-number,head-student_name,head-course_name,head-course_name,head-score);n+;head=head-next;printf(t及格率:%.3f%n,(float)n/(float)(s_count-1)*100); /%輸出%號f=(float)n/(float)(s_count-1)*100;return f;/向文件輸出及格率/顯示及格率float fShowPass(Student head) int n=0;while(head!=NULL)if(head-score60)n+;head=head-next;return (float)n/(float)(s_count-1)*100);/顯示平均分float Average(Student head)float avg=0;float all=0;while(head!=NULL)all+=head-score;head=head-next;avg=(float)all/(float)(s_count-1);printf(t平均分是:%.3fn,avg);return avg;/寫入文件的平均分float fAverage(Student head)float avg=0;float all=0;while(head!=NULL)all+=head-score;head=head-next;avg=(float)all/(float)(s_count-1);return avg;/尋找最大數(shù)據(jù)float Max_Score(Student head) float max=head-score;while(head!=NULL)max=(maxhead-score)?max:head-score;head=head-next;return max;/尋找最小數(shù)據(jù)float Min_Score(Student head) float min=head-score;while(head!=NULL)min=(minscore)?min:head-score;head=head-next;return min;/獲得鏈表節(jié)點個數(shù) 也就是學生的個數(shù) 一是通過 s_sount獲得 2是遍歷鏈表 int GetCount(Student head)int i=0;while(head!=NULL) i+;head=head-next;return i;/刪除數(shù)據(jù) 通過學號 void Delete(unsigned int DeleteNumber)Student Temporary=head;Student inter=NULL;if(DeleteNumber=head-number) head=head-next;free(Temporary);return ;while(Temporary!=NULL)if(DeleteNumber=Temporary-number) inter-next=Temporary-next;free(Temporary);return ;inter=Temporary;Temporary=Temporary-next;/查詢數(shù)據(jù)void Query(unsigned int QueryNumber) Student inter=head;while(inter!=NULL)if(QueryNumber=inter-number) printf(nt學號tt姓名tt班級tt課程tt分數(shù) n);printf(t%dtt%stt%stt%stt%.2f n,inter-number,inter-student_name,inter-course_name,inter-course_name,inter-score);return ;inter=inter-next;printf( 沒有您所查詢的數(shù)據(jù)!n);/數(shù)據(jù)存儲 對于文件的數(shù)據(jù)的寫入 在寫入完成后一定要刷新緩沖區(qū)文件 才能保證數(shù)據(jù)真正從緩沖區(qū)輸出到 否則無效使用完文件一定要關(guān)閉 /c語言的 fwrite和fread適合 二進制的讀寫 而 fscanf和 fprintf適合文本文件的讀寫fscanf是從留讀取數(shù)據(jù) fprintf是向留寫入數(shù)據(jù)具體MSDNvoid WriteData(Student head)float max=Max_Score(head);float min=Min_Score(head);float avg=fAverage(head);float radio=fShowPass(head);fprintf(StoreData,tttttt學生成績預(yù)覽nn);fwrite(ttt學號tt姓名tt班級tt課程tt分數(shù)n,1,strlen(t學號tt姓名tt班級tt課程tt分數(shù)n)+1,StoreData);/數(shù)據(jù)在寫入的過程中指針會不斷地后移我們可以即時寫入 即時刷新while(head!=NULL)fprintf(StoreData,nttt%dtt%stt%stt%stt%.2fnn,head-number,head-student_name,head-class_name,head-course_name,head-score);head=head-next;fprintf(StoreData,ttt最高分:%.2fnn,max);fprintf(StoreData,ttt最低分:%.2fnn,min);fprintf(StoreData,ttt平均分:%.2fnn,avg);fprintf(StoreData,ttt及格率:%.2f%nn,radio);fflush(StoreData); /必須刷新緩沖區(qū)或者關(guān)閉文件強制刷新 要不內(nèi)容是不會輸出到文件的int check =0 ;/初始化選擇int delete_num=0;void main()system(color e1);Sleep(100);Start: printf(n); printf(*學生成績管理系統(tǒng)*n); printf( 1-添 加 n); printf( 2-顯 示 n); printf( 3-最高分 n); printf( 4-最低分 n); printf( 5-刪 除 n); printf( 6-及 格 n); printf( 7-平均分 n); printf( 8-保 存 n); printf( 9-退 出 n); printf( * n); printf(請輸入您要進行操作所對應(yīng)的數(shù)字(1-9):); scanf(%d,&check); switch(check) case 1: if(GetCount(head)0) printf(已經(jīng)創(chuàng)建數(shù)據(jù)庫,1s后返回主菜單n); Sleep(1000); system(cls); goto Start; head=Create(); printf(創(chuàng)建成功,1s后返回主菜單n); Sleep(1000); system(cls); goto Start; break; case 2: if(GetCount(head)=0) printf(請先添加數(shù)據(jù),1s后自動返回主菜單n); Sleep(1000); system(cls); goto Start; else Show_Info(head); printf(查看完畢,輸入回車返回主菜單n); getchar(); getchar(); /和cin.get()類似有等待的作用 system(cls); goto Start; break; case 3: if(GetCount(head)=0) printf(請先添加數(shù)據(jù),1s后自動返回主菜單n); Sleep(1000); system(cls); goto Start; else printf(n最高分: %.2fn,Max_Score(head); printf(查看完畢,輸入回車返回主菜單n); getchar(); getchar(); /和cin.get()類似有等待的作用 system(cls); goto Start; case 4: if(GetCount(head)=0) printf(請先添加數(shù)據(jù),1s后自動返回主菜單n); Sleep(1000); system(cls); goto Start; else printf(n最低分: %.2fn,Min_Score(head); printf(查看完畢,輸入回車返回主菜單n); getchar(); getchar(); /和cin.get()類似有等待的作用 system(cls); goto Start; case 6: if(GetCount(head)=0) printf(請先添

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論