C語言學籍管理系統課程設計報告書_第1頁
C語言學籍管理系統課程設計報告書_第2頁
C語言學籍管理系統課程設計報告書_第3頁
C語言學籍管理系統課程設計報告書_第4頁
C語言學籍管理系統課程設計報告書_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

./"C語言程序設計"課程設計報告學籍管理系統的設計與實現學生:高俊玲〔組長洪澤慧震黃紫騰指導教師:俞慶英所在系:電子信息系所學專業:計算機科學與技術年級班級:12級計算機一班設計日期:2012年6月17日20XX6月21日.目錄第一章引言11.1設計容11.2設計目的1第二章需求分析12.1設計要求22.2需求分析2第三章設計及研究方案23.1任務分析33.2系統用能模塊設計圖3第四章系統的分析設計與實現34.1函數設計44.2重要數據的數據結構設計4第五章程序運行及結果55.1登陸界面65.2錄入學生信息65.3查詢學生信息65.4刪除學生信息75.5修改學生信息75.6查詢學生信息85.7輸出所有學生資料85.8退出系統9第六章總結心得9參考文獻10附錄A10附錄B23摘要根據題目要求,可以使用結構體數組來存儲學生的信息,包括學號、、性別、年齡、籍貫、系別、專業、班級、六個部分,分別使用字符數組、整型數組來表示。在主函數之外,分別編寫菜單函數實現:錄入<input>、顯示〔show、查找<found>、刪除<del>、修改<mend>、保存<save>等基本功能。通過對菜單函數的使用,可以很便捷的解決程序編寫,同時也能讓使用者很容易的了解該程序的基本結構。該程序的主要研究方法是通過對結構體數以及菜單函數的使用,來解決程序的編譯。本次程序編寫主要實現對學生學籍的管理,方便對學生檔案的管理和了解。對于該程序的編寫,主要讓我們學會了對于復雜的程序運用簡便的程序解決問題的方法。此次讓我們加深對運用c語言編寫程序的了解,同時也讓我們對c語言在生活的運用得到了更深的體會。關鍵詞:學生學籍學籍查詢學籍修改.第一章引言1.1設計容用數據文件存放學生的學籍,可對學生學籍進行注冊,登錄,修改,刪除,查找,統計,學籍變化等操作。功能要求:〔1系統以菜單方式工作。〔2登記學生的學號,,性別,年齡,籍貫,系別,專業,班級;修改已知學號的學生信息;〔3刪除已知學號的學生信息;〔4查找已知學號的學生信息;〔5按學號,專業輸出學生籍貫表。〔6查詢學生學籍變化,比如入學,轉專業,退學,降級,休學,畢業。1.2設計目的通過《C語言程序設計》課程設計,能將學到的結構化程序設計思想用到具體的工作和學習中,強化C語言三種基本結構的實際應用,加深對結構體、文件等概念的理解,熟練運用基本和構造數據類型、選擇結構、循環結構以及文件的輸入輸出等知識進行解題,將計算機課程與實際問題相聯接,提高學生分析問題、解決問題的能力,從而運用所學知識到實際問題求解中,并培養基本的、良好的程序設計技能。第二章需求分析2.1設計要求明確課設任務,復習與查閱有關資料。四名同學左右分為一組,完成一個應用問題的程序的編寫工作。同學之間注意分工明確。按要求完成課設容,課設報告要求文字和圖表工整、思路清楚、正確。學生要發揮自主學習的能力,充分利用時間,安排好課程設計的時間計劃,并在課設過程中不斷檢測自己的計劃完成情況,及時地向指導教師匯報。對應用程序的要求〔1凡等候用戶輸入時,給出足夠的提示信息,如"請選擇〔1添加信息2查詢信息……:"提示用戶選擇。〔2程序具有一定的健壯性,不會因為用戶的輸入錯誤引起程序運行錯誤而中斷執行。對輸入值的類型、大小圍、字符串的長度等,進行正確性檢查,對不合法的輸入值給出出錯信息,指出錯誤類型,等待重新輸入。〔即要進行一定的異常處理〔3對刪除數據應給出警告,讓用戶進行確認刪除〔4統計功能需要提供任意圍的統計功能〔5相關數據存放在文件中,對于操作之后的數據,也要存回到文件中去。〔6對于設計容中所提到的要求,必須全部實現,可根據具體題目的不同增加一些。2.2需求分析學籍管理系統應實現以下功能:〔1能錄入學生的基本信息,包括學號、、專業、年級、性別和出生日期信息,保存到結構體數組中。〔2能根據輸入的學號查找學生,進行信息的修改。〔3能根據輸入的學號從結構體數組中刪除學生的記錄。〔4實現查詢功能,能根據輸入的學號或年級在屏幕上顯示相應的學生信息。〔5能在屏幕上以列表的方式輸出所有學生的信息。第三章設計及研究方案3.1任務分析有全局的概念,拿到題目首先進行總體功能分析,只有對整體功能有了全局把握才能用自己已掌握的知識進行編寫。需要逐一地先寫出能實現此功能的簡單程序,比如通訊錄管理系統,要先對添加、顯示、存儲、裝入、查詢、修改六個功能分別編程,寫出最簡單的輸入輸出,然后通過簡單函數的互相調用、嵌套構成一個新功能的復雜函數,得到新函數后,再進行修改調試,使程序變得更加簡潔美觀3.2系統用能模塊設計圖系統功能模塊的設計如圖3-1所示:查找學生信息學生學籍管理系統查找學生信息學生學籍管理系統退出系統修改學生信息查詢學生信息刪除學生信息錄入學生信息退出系統修改學生信息查詢學生信息刪除學生信息錄入學生信息按學號查詢按年級查詢按學號查詢按年級查詢圖3-1系統的功能模塊圖第四章系統的分析設計與實現4.1函數設計學籍管理系統程序采用了結構化程序設計的思想,由1個.h頭文件和5個.c源文件組成。程序中除了主函數外,共設計了以下10個函數,分別包含在5個.c源文件中。以下是這些函數的函數原型及功能設計。<1>voidmenu〔函數功能:在屏幕上顯示主菜單,接收用戶選擇并響應用戶相應操作。<2>voidadd<>函數功能:錄入學生信息<3>voidchange〔函數功能:通過輸入學號查找學生的相應記錄信息,如果存在在屏幕上輸出選擇修改相應的信息,通過重新輸入的方法修改該學生的記錄<4>voidfind<>函數功能:通過輸入學號查找學生的相應記錄信息,如果存在在屏幕上輸出相應學生的各項信息<5>voidshanchu〔函數功能:通過輸入學號查詢學生的相應記錄信息,如果存在則刪除并選擇是否繼續,否則直接退出<6>voidsave〔函數功能:保存所有錄入的學生信息。<7>voidread〔函數功能:在屏幕上以列表方式輸出所有學生的信息。<8>voidtongji〔函數功能:選擇按學號輸出或者按專業輸出<9>voidtongji1〔函數功能:通過輸入學號查詢學生的相應記錄信息,如果存在則在屏幕上以列表方式輸出相應學生記錄,并輸出統計滿足條件的學生個數,否則輸出沒有找到相關記錄。<10>voidtongji2〔函數功能:通過輸入專業查詢學生的相應記錄信息,如果存在在屏幕以列表方式輸出相應學生記錄,并輸出統計滿足條件的學生個數,否則輸出沒有找到相關記錄。4.2重要數據的數據結構設計學生學籍的記錄項用結構體student表示,包括6個屬性,no,name,sex,age,jiguan,xibie,zhuanye,ban,分別代表學生的學號,,性別,年齡,籍貫,系別,專業、班級structstudent{charno[9];charname[25];charsex[10];intage;charjiguan[25]; charxibie[25];charzhuanye[25];intban;}stu[N];第五章程序運行及結果5.1登陸界面用戶打開程序,進入主界面圖5-1登陸界面圖5.2錄入學生信息輸入1進入錄入界面,用戶即可錄入信息,錄入兩個同學信息。圖5-2錄入界面5.3查詢學生信息輸入2,則會進入查找界面,輸入要查找的學生的學號即可查詢到所需要的信息。圖5-3查詢學生信息界面5.4刪除學生信息輸入3,則會進入刪除界面,輸入要刪除的學生的學號即可將該學生的信息刪除。圖5-4刪除學生信息界面5.5修改學生信息在主菜單上輸入4,進入修改頁面,輸入要修改的學生的信息即可將該學生的信息修改。圖5-5修改學生信息界面5.6查詢學生信息在主菜單上輸入5,就可以按照學號或專業輸出學生資料。圖5-6查詢學生信息界面5.7輸出所有學生資料在主菜單中,輸入6,查看輸入的所有學生資料。圖5-7輸出學生資料界面5.8退出系統在主菜單中,輸入7,則會退出系統,并且系統會自動對信息進行保存圖5-8退出系統界面第六章總結心得開始的時候我們每天練習十個左右的編程題,面對這么大的壓力,同學們有點吃不消,然而我卻在其中漸漸地得到了提升,C語言實習基本上由老師引導,自己很多都靠自學,不明白的問老師,自學能力得到了很大的培養。在實習過程中,我感覺到一點,程序是不能一氣呵成的。至少一氣呵成的程序不會盡善盡美。程序編寫要一步一步的完成。首先,對于要編的程序要有一個總體思路。要明確想要什么。只要把思路理清楚了,程序就好編寫了。把程序分割成幾個塊,即多個函數,一塊一塊的編寫。然后將分散的函數用另外的函數連接起來或者用main函數連接。到這一步,程序也就初步編成了,之后便是調試,檢查錯誤。最后我覺得還可以對于已經編寫好的程序進行一些修改添加,使它更加人性化。優化程序的階段是很重要的。參考文獻[1]許勇.C語言程序設計教程[M]:大學,20XX1月[2]衍龍.C語言實例解析人民郵電,20XX11月[3]雷于生.C語言程序設計大學,20XX7月附錄A程序源代碼#include<windows.h>#include<stdlib.h>#include<string.h>#include<stdio.h>#defineN100structstudent{charno[9];charname[25];charsex[10];intage;charjiguan[25];charxibie[25];charzhuanye[25];intban;}stu[N];voidmenu<>//菜單函數{intchoice,w1;voidadd<>;voidfind<>;voidshanchu<>;voidchange<>;voidtongji<>;voidread<>;voidinput<>;//函數聲明do{puts<"\t***************************************************">;puts<"\t*歡迎使用學籍管理系統*">;puts<"\t*1>錄入學生資料*">;puts<"\t*2>查找學生資料*">;puts<"\t*3>刪除學生資料*">;puts<"\t*4>修改學生資料*">;puts<"\t*5>按學號或專業輸出學生資料*">;puts<"\t*6>查看所有學生資料*">;puts<"\t*7>退出系統*">;puts<"\t***************************************************">;printf<"想選擇的功能:">;scanf<"%d",&choice>;if<choice<1||choice>8>{w1=1;system<"cls">;printf<"菜單選擇錯,請重新選擇!\n">;}elsew1=0;}while<w1==1>;switch<choice>//根據用戶的菜單選擇調用相應函數{case1://自定義的函數名add<>;break;case2:find<>;break;case3:shanchu<>;break;case4:change<>;break;case5:tongji<>;break;case6:read<>;break;case7:break;default:exit<0>;}}intload<>{FILE*fp;inti;if<<fp=fopen<"results.txt","rb">>==NULL>{printf<"文件打開錯誤">;return0;}for<i=0;!feof<fp>;i++>fread<&stu[i],sizeof<structstudent>,1,fp>;fclose<fp>;return<i-1>;}//***************保存函數******************//voidsave<intn>{inti;FILE*fp;if<<fp=fopen<"results.txt","wb">>==NULL>{printf<"文件打開錯誤:">;}for<i=0;i<n;i++>fwrite<&stu[i],sizeof<structstudent>,1,fp>;fclose<fp>;}//*****************讀出<查看>函數*********************//voidread<>{intn,m;n=load<>;printf<"學號\t\t性別\t年齡\t籍貫\t系別\t專業\t班級\t">;for<m=0;m<n;m++>{printf<"\n%s",stu[m].no>;printf<"\t%s",stu[m].name>;printf<"\t%s",stu[m].sex>;printf<"\t%d",stu[m].age>;printf<"\t%s",stu[m].jiguan>;printf<"\t%s",stu[m].xibie>;printf<"\t%s",stu[m].zhuanye>;printf<"\t%d",stu[m].ban>;}{intxz,choice;//選擇返回還是退出系統的變量do{printf<"\n1-返回主菜單;2-退出系統\n">;scanf<"%d",&choice>;if<choice<1||choice>2>{xz=1;system<"cls">;printf<"輸入錯誤,請重新選擇!\n">;}elsexz=0;}while<xz==1>;switch<choice>{case1:menu<>;break;//調用菜單函數case2:exit<0>;break;//退出系統}}}//**********************錄入學生信息**********************//voidadd<>{FILE*fp;inti,n,m;n=load<>;if<<fp=fopen<"results.txt","wb">>==NULL>{printf<"文件打開錯誤!\n">;exit<1>;}printf<"你想要錄入多少個學生信息?">;scanf<"%d",&m>;for<i=0;i<m;i++>{printf<"\n學號:">;scanf<"%s",stu[n+i].no>;printf<":">;scanf<"%s",stu[n+i].name>;printf<"性別:">;scanf<"%s",stu[n+i].sex>;printf<"年齡:">;scanf<"%d",&stu[n+i].age>;printf<"籍貫:">;scanf<"%s",stu[n+i].jiguan>;printf<"系別:">;scanf<"%s",stu[n+i].xibie>;printf<"專業:">;scanf<"%s",stu[n+i].zhuanye>;printf<"班級:">;scanf<"%d",&stu[n+i].ban>;printf<"輸入完成">;save<n+m>;}for<i=0;i<m;i++>fwrite<&stu[i],sizeof<structstudent>,1,fp>;fclose<fp>;{intxz,choice;//選擇返回還是退出系統的變量do{printf<"\n1-返回主菜單;2-退出系統\n">;scanf<"%d",&choice>;if<choice<1||choice>2>{xz=1;system<"cls">;printf<"輸入錯誤,請重新選擇!\n">;}elsexz=0;}while<xz==1>;switch<choice>{case1:menu<>;break;//調用菜單函數case2:exit<0>;break;//退出系統}}}//**********查找函數**************//voidfind<>{intmeau<>;intn,i;charm[9];n=load<>;printf<"\t\t\t歡迎使用學號查找功能\n請輸入你需要查找的學生的學號:">;scanf<"%s",&m>;for<i=0;i<n;i++>{if<!strcmp<stu[i].no,m>>{printf<"學號\t\t性別\t年齡\t籍貫\t系別\t專業\t班級\n">;printf<"%s",stu[i].no>;printf<"\t%s",stu[i].name>;printf<"\t%s",stu[i].sex>;printf<"\t%d",stu[i].age>;printf<"\t%s",stu[i].jiguan>;printf<"\t%s",stu[i].xibie>;printf<"\t%s",stu[i].zhuanye>;printf<"\t%d\n",stu[i].ban>;}}{intxz,choice;//選擇返回還是退出系統的變量do{printf<"\n1-返回主菜單;2-退出系統\n">;scanf<"%d",&choice>;if<choice<1||choice>2>{xz=1;system<"cls">;printf<"輸入錯誤,請重新選擇!\n">;}elsexz=0;}while<xz==1>;switch<choice>{case1:menu<>;break;//調用菜單函數case2:exit<0>;break;//退出系統}}}//****************修改函數*******************//voidchange<>{intn,i,j;charm[9];n=load<>;printf<"歡迎使用修改功能\n輸入你要修改學生的學號:">;scanf<"%s",&m>;for<i=0;i<n;i++>{if<!strcmp<stu[i].no,m>>{printf<"你要修改的項目:\n1>學號2>3>性別4>年齡5>籍貫6>系別7>專業8>班級\n">;printf<"你選擇的功能是:">;scanf<"%d",&j>;switch<j>{case1:printf<"輸入你修改后的學號:">;scanf<"%s",stu[i].no>;break;case2:printf<"輸入你修改后的:">;scanf<"%s",stu[i].name>;break;case3:printf<"輸入你修改后的性別:">;scanf<"%s",stu[i].sex>;break;case4:printf<"輸入你修改后的年齡:">;scanf<"%d",&stu[i].age>;break;case5:printf<"輸入你修改后的籍貫:">;scanf<"%s",stu[i].jiguan>;break;case6:printf<"輸入你修改后的系別:">;scanf<"%s",stu[i].xibie>;break;case7:printf<"輸入你修改后的專業:">;scanf<"%s",stu[i].zhuanye>;break;case8:printf<"輸入你修改后的班級:">;scanf<"%d",&stu[i].ban>;break;default:printf<"選擇的功能錯誤\n">;intgetch<>;change<>;break;}save<n>;}}{intxz,choice;//選擇返回還是退出系統的變量do{printf<"\n1-返回主菜單;2-退出系統\n">;scanf<"%d",&choice>;if<choice<1||choice>2>{xz=1;system<"cls">;printf<"輸入錯誤,請重新選擇!\n">;}elsexz=0;}while<xz==1>;switch<choice>{case1:menu<>;break;//調用菜單函數case2:exit<0>;break;//退出系統}}}//***************統計函數*****************//voidtongji_1<>//按學號統計{intn,i,sum=0;charm[9];n=load<>;printf<"輸入你要統計的學號:">;scanf<"%s",&m>;printf<"學號\t\t性別\t年齡\t籍貫\t系別\t專業\t班級\n">;for<i=0;i<n;i++>if<!strcmp<stu[i].no,m>>{printf<"%s",stu[i].no>;printf<"\t%s",stu[i].name>;printf<"\t%s",stu[i].sex>;printf<"\t%d",stu[i].age>;printf<"\t%s",stu[i].jiguan>;printf<"\t%s",stu[i].xibie>;printf<"\t%s",stu[i].zhuanye>;printf<"\t%d\n",stu[i].ban>;sum++;printf<"%s學號的學生共有%d個\n",m,sum>;}}voidtongji_2<>//按專業統計{intn,i,sum=0;charm[25];n=load<>;printf<"輸入你要統計的專業:">;scanf<"%s",&m>;printf<"學號\t\t性別\t年齡\t籍貫\t專業\t班級\n">;for<i=0;i<n;i++>if<!strcmp<m,stu[i].zhuanye>>{printf<"%s",stu[i].no>;printf<"\t%s",stu[i].name>;printf<"\t%s",stu[i].sex>;printf<"\t%d",stu[i].age>;printf<"\t%s",stu[i].jiguan>;printf<"\t%s",stu[i].xibie>;printf<"\t%s",stu[i].zhuanye>;printf<"\t%d\n",stu[i].ban>;sum++;printf<"%s專業的學生共有%d個/n",m,sum>;}}voidtongji<>{intn,m;n=load<>;printf<"歡迎使用統計功能\n你想統計的項目是:1>學號\t2>專業\n">;printf<"輸入你想選擇的功能:">;scanf<"%d",&m>;switch<m>{case1:tongji_1<>;break;case2:tongji_2<>;break;default:printf<"選擇的功能錯誤\n">;intgetch<>;tongji<>;break;}{intxz,choice;//選擇返回還是退出系統的變量do{printf<"\n1-返回主菜單;2-退出系統\n">;scanf<"%d",&choice>;if<choice<1||choice>2>{xz=1;system<"cls">;printf<"輸入錯誤,請重新選擇!\n">;}elsexz=0;}while<xz==1>;switch<choice>{case1:menu<>;break;//調用菜單函數case2:exit<0>;break;//退出系統}}}//***********************刪除函數************************//voidshanchu<>{intn,i,j;charm[9];n=load<>;printf<"輸入你要刪除資料學生的學號">;scanf<"%s",&m>;for<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論