C語言學籍管理系統(tǒng)課程設計_第1頁
C語言學籍管理系統(tǒng)課程設計_第2頁
C語言學籍管理系統(tǒng)課程設計_第3頁
C語言學籍管理系統(tǒng)課程設計_第4頁
C語言學籍管理系統(tǒng)課程設計_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言學籍管理系統(tǒng)課程設計作者: 日期:C 語言程序設計”課程設計報告學籍管理系統(tǒng)的設計與實現(xiàn)學生姓名: 高俊玲(組長) 洪澤慧 陳震 黃紫騰 指導教師 : 俞慶英所 在 系:電 子 信 息 系所學專業(yè):計算機科學與技術(shù)年級班級 :12 級計算機一班設計日期:2012年6月 17日2013 年 6 月 21 日目錄第一章 引言 11.1 設計內(nèi)容 11.2 設計目的 1第二章 需求分析 22.1 設計要求 22.2 需求分析 2第三章 設計及研究方案 33.1 任務分析 33.2 系統(tǒng)用能模塊設計圖 3第四章 系統(tǒng)的分析設計與實現(xiàn) 44.1 函數(shù)設計 44.2 重要數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)設計 5第五章

2、 程序運行及結(jié)果 65.1 登陸界面 65.2 錄入學生信息 65.3 查詢學生信息 75.4 刪除學生信息 75.5 修改學生信息 85.6 查詢學生信息 95.7 輸出所有學生資料 95.8 退出系統(tǒng) 9第六章 總結(jié)心得 11參考文獻 11附錄 A 12附錄 B 25摘要根據(jù)題目要求,可以使用結(jié)構(gòu)體數(shù)組來存儲學生的信息,包括學號、姓名、 性別、年齡、籍貫、系別、專業(yè)、班級、六個部分,分別使用字符數(shù)組、整型數(shù) 組來表示。在主函數(shù)之外,分別編寫菜單函數(shù)實現(xiàn):錄入 (input) 、顯示( show)、 查找 (found) 、刪除 (del) 、修改 (mend) 、保存 (save) 等基本

3、功能。通過對菜單函 數(shù)的使用,可以很便捷的解決程序編寫,同時也能讓使用者很容易的了解該程序 的基本結(jié)構(gòu)。該程序的主要研究方法是通過對結(jié)構(gòu)體數(shù)以及菜單函數(shù)的使用,來 解決程序的編譯。本次程序編寫主要實現(xiàn)對學生學籍的管理,方便對學生檔案的 管理和了解。對于該程序的編寫,主要讓我們學會了對于復雜的程序運用簡便的 程序解決問題的方法。此次讓我們加深對運用 c 語言編寫程序的了解,同時也讓 我們對 c 語言在生活的運用得到了更深的體會。關(guān)鍵詞:學生學籍 學籍查詢 學籍修改II第一章 引言1.1 設計內(nèi)容 用數(shù)據(jù)文件存放學生的學籍,可對學生學籍進行注冊,登錄,修改,刪除,查找, 統(tǒng)計,學籍變化等操作。功能

4、要求:(1)系統(tǒng)以菜單方式工作。(2)登記學生的學號,姓名,性別,年齡,籍貫,系別,專業(yè),班級;修改已知學 號的學生信息;(3)刪除已知學號的學生信息;(4)查找已知學號的學生信息;(5)按學號,專業(yè)輸出學生籍貫表。(6)查詢學生學籍變化,比如入學,轉(zhuǎn)專業(yè),退學,降級,休學,畢業(yè)。1.2 設計目的通過 C 語言程序設計課程設計,能將學到的結(jié)構(gòu)化程序設計思想用到具體的工 作和學習中,強化 C 語言三種基本結(jié)構(gòu)的實際應用,加深對結(jié)構(gòu)體、文件等概念的理解, 熟練運用基本和構(gòu)造數(shù)據(jù)類型、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)以及文件的輸入輸出等知識進行解 題,將計算機課程與實際問題相聯(lián)接,提高學生分析問題、解決問題的能力

5、,從而運用 所學知識到實際問題求解中,并培養(yǎng)基本的、良好的程序設計技能。第二章 需求分析2.1 設計要求 明確課設任務,復習與查閱有關(guān)資料 。 四名同學左右分為一組,完成一個應用問題的程序的編寫工作。 同學之間注意分工明確。 按要求完成課設內(nèi)容,課設報告要求文字和圖表工整、思路清楚、正確。 學生要發(fā)揮自主學習的能力,充分利用時間,安排好課程設計的時間計劃,并在課 設過程中不斷檢測自己的計劃完成情況,及時地向指導教師匯報。對應用程序的要求( 1)凡等候用戶輸入時,給出足夠的提示信息,如“請選擇(1 添加信息 2 查詢信息):”提示用戶選擇。( 2)程序具有一定的健壯性, 不會因為用戶的輸入錯誤引

6、起程序運行錯誤而中斷執(zhí) 行。對輸入值的類型、大小范圍、字符串的長度等,進行正確性檢查,對不合法的輸入 值給出出錯信息,指出錯誤類型,等待重新輸入。 (即要進行一定的異常處理)(3)對刪除數(shù)據(jù)應給出警告,讓用戶進行確認刪除( 4)統(tǒng)計功能需要提供任意范圍的統(tǒng)計功能( 5)相關(guān)數(shù)據(jù)存放在文件中,對于操作之后的數(shù)據(jù),也要存回到文件中去。( 6)對于設計內(nèi)容中所提到的要求,必須全部實現(xiàn),可根據(jù)具體題目的不同增加一 些。2.2 需求分析學籍管理系統(tǒng)應實現(xiàn)以下功能:(1)能錄入學生的基本信息, 包括學號、 姓名、 專業(yè)、年級、性別和出生日期信息, 保存到結(jié)構(gòu)體數(shù)組中。(2)能根據(jù)輸入的學號查找學生,進行信

7、息的修改。(3)能根據(jù)輸入的學號從結(jié)構(gòu)體數(shù)組中刪除學生的記錄。(4)實現(xiàn)查詢功能,能根據(jù)輸入的學號或年級在屏幕上顯示相應的學生信息。(5)能在屏幕上以列表的方式輸出所有學生的信息。第三章 設計及研究方案3.1 任務分析有全局的概念,拿到題目首先進行總體功能分析,只有對整體功能有了全局把握才 能用自己已掌握的知識進行編寫。需要逐一地先寫出能實現(xiàn)此功能的簡單程序,比如通 訊錄管理系統(tǒng),要先對添加、顯示、存儲、裝入、查詢、修改六個功能分別編程,寫出 最簡單的輸入輸出,然后通過簡單函數(shù)的互相調(diào)用、嵌套構(gòu)成一個新功能的復雜函數(shù), 得到新函數(shù)后,再進行修改調(diào)試,使程序變得更加簡潔美觀3.2 系統(tǒng)用能模塊設

8、計圖系統(tǒng)功能模塊的設計如圖 3-1 所示:學生學籍管理系統(tǒng)錄入學生信息查找學生信息刪除學生信息退出系統(tǒng)按學號查按年級查圖 3-1 系統(tǒng)的功能模塊圖第四章 系統(tǒng)的分析設計與實現(xiàn)4.1 函數(shù)設計 學籍管理系統(tǒng)程序采用了結(jié)構(gòu)化程序設計的思想, 由 1 個.h 頭文件和 5個.c 源文件 組成。程序中除了主函數(shù)外,共設計了以下 10 個函數(shù),分別包含在 5 個 .c 源文件中。 以下是這些函數(shù)的函數(shù)原型及功能設計。(1) void menu () 函數(shù)功能 : 在屏幕上顯示主菜單,接收用戶選擇并響應用戶相應操作。(2) void add() 函數(shù)功能:錄入學生信息(3) void change ()

9、函數(shù)功能 : 通過輸入學號查找學生的相應記錄信息,如果存在在屏幕上輸出選擇修 改相應的信息,通過重新輸入的方法修改該學生的記錄(4) void find() 函數(shù)功能:通過輸入學號查找學生的相應記錄信息,如果存在在屏幕上輸出相應學 生的各項信息(5) void shanchu () 函數(shù)功能 : 通過輸入學號查詢學生的相應記錄信息,如果存在則刪除并選擇是否繼 續(xù),否則直接退出(6) void save () 函數(shù)功能:保存所有錄入的學生信息。(7) void read () 函數(shù)功能 : 在屏幕上以列表方式輸出所有學生的信息。(8) void tongji () 函數(shù)功能:選擇按學號輸出或者按

10、專業(yè)輸出(9) void tongji1 () 函數(shù)功能 : 通過輸入學號查詢學生的相應記錄信息,如果存在則在屏幕上以列表方 式輸出相應學生記錄,并輸出統(tǒng)計滿足條件的學生個數(shù),否則輸出沒有找到相關(guān)記錄。(10) void tongji2 ()函數(shù)功能 : 通過輸入專業(yè)查詢學生的相應記錄信息,如果存在在屏幕以列表方式輸出相應學生記錄,并輸出統(tǒng)計滿足條件的學生個數(shù),否則輸出沒有找到相關(guān)記錄。4.2 重要數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)設計 學生學籍的記錄項用結(jié)構(gòu)體 student 表示,包括 6 個屬性 ,no,name,sex, age,jiguan,xibie,zhuanye,ban, 分別代表學生的學號,姓名

11、,性別,年齡,籍貫, 系別,專業(yè)、班級struct student char no9;char name25 ;char sex10;int age;char jiguan25;char xibie25;char zhuanye25;int ban;stuN;第五章 程序運行及結(jié)果5.1 登陸界面用戶打開程序,進入主界面圖 5-1 登陸界面圖5.2 錄入學生信息輸入 1 進入錄入界面,用戶即可錄入信息,錄入兩個同學信息。6圖 5-2 錄入界面5.3 查詢學生信息輸入 2,則會進入查找界面,輸入要查找的學生的學號即可查詢到所需要的信息。7圖 5-3 查詢學生信息界面5.4 刪除學生信息輸入 3,

12、則會進入刪除界面,輸入要刪除的學生的學號即可將該學生的信息刪除。圖 5-4 刪除學生信息界面5.5 修改學生信息在主菜單上輸入 4,進入修改頁面,輸入要修改的學生的信息即可將該學生的信息 修改。8圖 5-5 修改學生信息界面圖 5-6 查詢學生信息界面5.7 輸出所有學生資料在主菜單中,輸入 6,查看輸入的所有學生資料。圖 5-7 輸出學生資料界面5.8 退出系統(tǒng)在主菜單中,輸入 7,則會退出系統(tǒng),并且系統(tǒng)會自動對信息進行保存9圖 5-8 退出系統(tǒng)界面10第六章 總結(jié)心得開始的時候我們每天練習十個左右的編程題,面對這么大的壓力,同學們有點吃不 消,然而我卻在其中漸漸地得到了提升, C 語言實習

13、基本上由老師引導,自己很多都靠 自學,不明白的問老師,自學能力得到了很大的培養(yǎng)。在實習過程中,我感覺到一點, 程序是不能一氣呵成的。至少一氣呵成的程序不會盡善盡美。程序編寫要一步一步的完 成。首先,對于要編的程序要有一個總體思路。要明確想要什么。只要把思路理清楚了, 程序就好編寫了。把程序分割成幾個塊,即多個函數(shù),一塊一塊的編寫。然后將分散的 函數(shù)用另外的函數(shù)連接起來或者用 main 函數(shù)連接。到這一步,程序也就初步編成了,之 后便是調(diào)試,檢查錯誤。最后我覺得還可以對于已經(jīng)編寫好的程序進行一些修改添加, 使它更加人性化。優(yōu)化程序的階段是很重要的。參考文獻1 許勇.C 語言程序設計教程 M 重慶

14、:重慶大學出版社, 2011 年 1月2 曹衍龍 .C 語言實例解析 人民郵電出版社, 2005 年 11 月3 雷于生 .C 語言程序設計 中山大學出版社, 2009 年 7 月11附錄 A程序源代碼#include#include#include#include#define N 100struct studentchar no9;char name25;char sex10;int age;char jiguan25;char xibie25;char zhuanye25;int ban;stuN;void menu()/菜單函數(shù)int choice,w1;void add();void

15、 find();void shanchu();void change();void tongji();void read();void input();/函數(shù)聲明do puts(t* *);*);puts(t*歡迎使用學籍管理系統(tǒng)puts(t*puts(t*puts(t*puts(t*puts(t*1)錄入學生資料2)查找學生資料3)刪除學生資料4)修改學生資料5)按學號或?qū)I(yè)輸出學生資料*);*);*);*);*);puts(t*6)查看所有學生資料*);12puts(t*7)退出系統(tǒng));13);puts(t* printf( 想選擇的功能 :);scanf(%d,&choice);if(c

16、hoice8)w1=1;system(cls);printf( 菜單選擇錯,請重新選擇! n); else w1=0;while(w1=1);switch (choice) / 根據(jù)用戶的菜單選擇調(diào)用相應函數(shù) case 1:/自定義的函數(shù)名add(); break; case 2: find(); break; case 3: shanchu(); break; case 4: change(); break; case 5: tongji(); break; case 6: read(); break; case 7: break;default: exit(0); int load() F

17、ILE *fp;int i;if (fp=fopen(results.txt,rb)=NULL)printf( 文件打開錯誤 ); return 0;for (i=0;!feof(fp);i+)fread(&stui,sizeof(struct student),1,fp); fclose(fp);return(i-1);/*保存函數(shù) */void save(int n)int i;FILE *fp;if (fp=fopen(results.txt,wb)=NULL)printf( 文件打開錯誤 :);for (i=0;in;i+)fwrite(&stui,sizeof(struct stud

18、ent),1,fp); fclose(fp);/*讀出 (查看 )函數(shù) */void read() int n,m;n=load();printf( 學號t姓名t性別t 年齡t籍貫t系別t 專業(yè)t 班級t); for (m=0;mn;m+)printf(n%s,stum.no);printf(t%s,);printf(t%s,stum.sex);printf(t%d,stum.age);printf(t%s,stum.jiguan); printf(t%s,stum.xibie);14printf(t%s,stum.zhuanye);printf(t%d,stum.ban);

19、int xz,choice; /選擇返回還是退出系統(tǒng)的變量 doprintf(n1- 返回主菜單; 2-退出系統(tǒng) n); scanf(%d,&choice);if(choice2)xz=1;system(cls);printf( 輸入錯誤,請重新選擇! n); else xz=0;while(xz=1);switch(choice)case 1: menu(); break; / 調(diào)用菜單函數(shù) case 2:exit(0); break; / 退出系統(tǒng)/*錄入學生信息*/void add()FILE *fp;int i,n,m;n=load();if (fp=fopen(results.txt

20、,wb)=NULL) printf( 文件打開錯誤 !n);exit(1);printf( 你想要錄入多少個學生信息 ?); scanf(%d,&m);15for (i=0;im;i+) printf(n 學號 :); scanf(%s,stun+i.no); printf( 姓名 :); scanf(%s,stun+); printf( 性別 :); scanf(%s,stun+i.sex); printf( 年齡 :); scanf(%d,&stun+i.age); printf( 籍貫 :); scanf(%s,stun+i.jiguan); printf( 系別 :); s

21、canf(%s,stun+i.xibie); printf( 專業(yè) :); scanf(%s,stun+i.zhuanye); printf( 班級 :); scanf(%d,&stun+i.ban); printf( 輸入完成 ); save(n+m);for (i=0;im;i+)fwrite(&stui,sizeof(struct student),1,fp); fclose(fp);int xz,choice; /選擇返回還是退出系統(tǒng)的變量 doprintf(n1- 返回主菜單; 2-退出系統(tǒng) n); scanf(%d,&choice);if(choice2)n);xz=1;syste

22、m(cls);printf( 輸入錯誤,請重新選擇! else xz=0;while(xz=1); switch(choice)case 1: menu(); break; / 調(diào)用菜單函數(shù)16case 2: exit(0); break; / 退出系統(tǒng) /*查找函數(shù) */void find()int meau();int n,i;char m9;n=load();printf(ttt 歡迎使用學號查找功能 n 請輸入你需要查找的學生的學號 :); scanf(%s,&m);for (i=0;in;i+) if (!strcmp(stui.no,m)printf( 學號 t 姓名 t 性別 t

23、 年齡 t 籍貫 t 系別 t 專業(yè) t 班級 n); printf(%s,stui.no);printf(t%s,);printf(t%s,stui.sex);printf(t%d,stui.age);printf(t%s,stui.jiguan);printf(t%s,stui.xibie);printf(t%s,stui.zhuanye);printf(t%dn,stui.ban);int xz,choice; /選擇返回還是退出系統(tǒng)的變量doprintf(n1- 返回主菜單; 2-退出系統(tǒng) n); scanf(%d,&choice);if(choice2)17xz=1

24、;system(cls);printf( 輸入錯誤,請重新選擇! n); else xz=0;while(xz=1);switch(choice)case 1:menu(); break; / 調(diào)用菜單函數(shù)case 2:exit(0); break; / 退出系統(tǒng)/* 修改函數(shù) */void change()int n,i,j;char m9;n=load();printf( 歡迎使用修改功能 n 輸入你要修改學生的學號 :);scanf(%s,&m);for (i=0;in;i+)if (!strcmp(stui.no,m)printf( 你要修改的項目: n1) 學號 2)姓名 3)性別

25、4)年齡 5)籍貫 6)系別 7)專業(yè) 8)班級 n); printf( 你選擇的功能是 :);scanf(%d,&j);switch (j)case 1:printf( 輸入你修改后的學號 :);scanf(%s,stui.no);break;case 2: printf( 輸入你修改后的姓名 :);scanf(%s,);18break;case 3:printf( 輸入你修改后的性別 :);scanf(%s,stui.sex);break;case 4:printf( 輸入你修改后的年齡 :);scanf(%d,&stui.age);break;case 5:printf

26、( 輸入你修改后的籍貫 :);scanf(%s,stui.jiguan);break;case 6:printf( 輸入你修改后的系別 :);scanf(%s,stui.xibie);break;case 7:printf( 輸入你修改后的專業(yè) :);scanf(%s,stui.zhuanye);break;case 8:printf( 輸入你修改后的班級 :);scanf(%d,&stui.ban);break;default :printf( 選擇的功能錯誤 n);int getch();change();break;save(n);int xz,choice; /選擇返回還是退出系統(tǒng)的變

27、量19doprintf(n1- 返回主菜單; 2-退出系統(tǒng) n); scanf(%d,&choice);if(choice2)xz=1;system(cls);printf( 輸入錯誤,請重新選擇! n); else xz=0;while(xz=1);switch(choice)case 1: menu(); break; / 調(diào)用菜單函數(shù) case 2:exit(0); break; / 退出系統(tǒng)/*統(tǒng)計函數(shù) */void tongji_1()/ 按學號統(tǒng)計int n,i,sum=0;char m9;n=load();printf( 輸入你要統(tǒng)計的學號 :);scanf(%s,&m);pri

28、ntf( 學號 t 姓名 t 性別 t 年齡 t 籍貫 t 系別 t 專業(yè) t 班級 n); for (i=0;in;i+) if (!strcmp(stui.no,m)printf(%s,stui.no);printf(t%s,);printf(t%s,stui.sex);printf(t%d,stui.age);printf(t%s,stui.jiguan);printf(t%s,stui.xibie);printf(t%s,stui.zhuanye);20printf(t%dn,stui.ban);sum+;printf(%s 學號的學生共有 %d 個 n,m,sum)

29、;void tongji_2() / 按專業(yè)統(tǒng)計int n,i,sum=0;char m25;n=load();printf( 輸入你要統(tǒng)計的專業(yè) :);scanf(%s,&m);printf( 學號t姓名t 性別t 年齡 t籍貫t 專業(yè)t 班級n);for (i=0;in;i+)if (!strcmp(m,stui.zhuanye)printf(%s,stui.no);printf(t%s,);printf(t%s,stui.sex);printf(t%d,stui.age);printf(t%s,stui.jiguan);printf(t%s,stui.xibie);pr

30、intf(t%s,stui.zhuanye);printf(t%dn,stui.ban);sum+;printf(%s 專業(yè)的學生共有 %d 個 /n,m,sum);void tongji()int n,m;n=load();專業(yè) n);printf( 歡迎使用統(tǒng)計功能 n 你想統(tǒng)計的項目是 :1) 學號 t2) printf( 輸入你想選擇的功能 :);scanf(%d,&m);switch (m)case 1:21tongji_1();break; case 2: tongji_2();break; default :printf( 選擇的功能錯誤 n);int getch();tongj

31、i();break;int xz,choice; /選擇返回還是退出系統(tǒng)的變量 doprintf(n1- 返回主菜單; 2-退出系統(tǒng) n); scanf(%d,&choice);if(choice2)xz=1;system(cls);printf( 輸入錯誤,請重新選擇! n); else xz=0;while(xz=1);switch(choice)case 1:menu(); break; / 調(diào)用菜單函數(shù)case 2: exit(0); break; / 退出系統(tǒng) /*刪除函數(shù)*/void shanchu() int n,i,j;char m9; n=load();22printf( 輸入你要刪除資

溫馨提示

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

評論

0/150

提交評論