《學籍管理系統(tǒng) 設計論文》由會員分享,可在線閱讀,更多相關《學籍管理系統(tǒng) 設計論文(13頁珍藏版)》請在裝配圖網上搜索。
1、上海交通大學
課程設計報告
學籍管理系統(tǒng)
班 級計算機
小組成員 成員1 2008273150
成員 2 2008273151
成員 3 2008273152
指導教師
開發(fā)時間2009年12月
一、 系統(tǒng)簡介
設計一個基于結構體數(shù)組的學生學籍管理系統(tǒng),能實現(xiàn)對學生學籍信息進行錄入、 修改、刪除、查詢和輸出等基本操作。
二、 需求分析
學籍管理系統(tǒng)應實現(xiàn)以下功能:
1、 能錄入學生的基本信息,包括學號、姓名、專業(yè)、年級、性別和出生日期信息, 保存到結構體數(shù)組中。
2、 能根據(jù)輸入的學號查找學生,進行信息的修改。
3、 能根據(jù)輸入的學號從結構體數(shù)組中刪除學生的記錄
2、。
4、 實現(xiàn)查詢功能,能根據(jù)輸入的學號或年級在屏幕上顯示相應的學生信息。
5、 能在屏幕上以列表的方式輸出所有學生的信息。
三、 概要設計
1、系統(tǒng)功能結構圖
根據(jù)項目的開發(fā)要求,本系統(tǒng)劃分成六個主功能模塊:錄入學生信息模塊、修改學 生信息模塊、刪除學生信息模塊、查詢信息模塊、輸出模塊和系統(tǒng)退出模塊。系統(tǒng)功能 結構圖如下:
學生檔案管理系統(tǒng)
錄入學生信息
修改學生信息
麟跛學生信息
查詢學生信息
輸出學生信息
退 出 系 統(tǒng)
按學號查詢
按班級查詢
2、重要數(shù)據(jù)的數(shù)據(jù)結構設計
學生學籍的記錄項用結構體StuMessage表示,包括6個屬性,stuNo、na
3、me、spec、 grade、sex、birthday分別代表學生的學號、姓名、專業(yè)、年級、性別和出生日期,其 中birthday類型為自定義的結構體類型Date。
struct StuMessage
{
char stuNo[11]; 〃學號
char name[9]; 〃姓名
char spec[21]; 〃專業(yè)
int grade; 〃年級
char sex; 〃性別
struct Date birthday; // 出生日期
};
日期類型Date包括三個屬性,分別代表年、月、日。
struct Date
{
int year; //年
int month;
4、 //月
int day; // 日
};
3、函數(shù)設計
學籍管理系統(tǒng)程序采用了結構化程序設計的思想,由1個.h頭文件和3個.c源文件 組成。程序中除了主函數(shù)外,共設計了以下14個函數(shù),分別包含在3個.c源文件中。 以下是這些函數(shù)的函數(shù)原型及功能設計。
(1) void SysInfo(void);
函數(shù)功能:在屏幕上輸出系統(tǒng)及版權信息并等待用戶響應。
(2) void MenuOfMain(struct StuMessage stu[]);
函數(shù)功能:在屏幕上顯示主菜單,接收用戶選擇并響應用戶相應操作。
(3) void Append(struct StuMessage s
5、tu[]);
函數(shù)功能:錄入一條學生記錄到記錄數(shù)組的末尾。
(4) void Modify(struct StuMessage stu[]);
函數(shù)功能:通過輸入學號查詢學生的相應記錄信息,如果存在在屏幕上輸出相應學 生記錄并通過重新輸入的方法修改該學生的記錄,否則輸出沒有找到相關記錄。
(5) void Delet(struct StuMessage stu[]);
函數(shù)功能: 通過輸入學號查詢學生的相應記錄信息,如果存在在屏幕上輸出相應學 生記錄,用戶確認刪除后調用DelList()函數(shù)將其刪除,否則輸出沒有找到相關記錄。
(6) void MenuOfSear(struct
6、StuMessage stu[]);
函數(shù)功能:在屏幕上顯示查詢子主菜單,接收用戶選擇并響應用戶操作。
(7) void ListAll(struct StuMessage stu[]);
函數(shù)功能:在屏幕上以列表方式輸出所有學生的信息。調用PrintHead()輸出表頭, 再調用ListOne()函數(shù)逐一輸出各條記錄。
(8) void Quit(void);
函數(shù)功能:退出菜單系統(tǒng),并調用exit(0)系統(tǒng)函數(shù)結束程序運行。
(9) void SearNum(struct StuMessage stu[]);
函數(shù)功能:通過輸入學號調用NumOfSear()函數(shù)查詢學生的相應
7、記錄信息,如果存 在調用PrintHead()函數(shù)和ListOne()函數(shù)在屏幕上輸出相應學生記錄,否則輸出沒有 找到相關記錄。
(10) void SearGrade(struct StuMessage stu[]);
函數(shù)功能:通過輸入年級查詢學生的相應記錄信息,如果存在在屏幕以列表方式輸 出相應學生記錄,并輸出統(tǒng)計滿足條件的學生個數(shù),否則輸出沒有找到相關記錄。
(11) int NumOfSear(struct StuMessage stu[], char stuNum[]);
函數(shù)功能:根據(jù)接收到的學生學號,在相應記錄數(shù)組中進行查詢,如果存在相應記 錄,返加相應的數(shù)組下標,否則
8、返回-1。
(12) void PrintHead(void);
函數(shù)功能: 在屏幕上顯示輸出列表的表頭。
(13) void ListOne(struct StuMessage list);
函數(shù)功能:在屏幕上以行的方式顯示輸出一個學生的相關信息。
(14) int DelList(struct StuMessage stu[], int i);
函數(shù)功能:如果數(shù)組中存在下標為i的記錄,刪除該記錄并返回1,否則返回0。
4、小組成員分工
組員1
main(); SystemInfo(); MenuOfMain(); Quit();
組員2
PrintHead(); Li
9、stOne(); ListAll(); Apend();
組員3
Modify(); Delte(); DelList(); MenuOfSear(); SeraNum(); SearGrade(); NumOfSear();
四、詳細設計
1、系統(tǒng)主函數(shù)main ()設計
開始
輸出系統(tǒng)及版權信息
SysInfo()
V
顯示主菜單并響應用 戶操作 MenuOfMain()
結束
2、主菜單模塊函數(shù)MenuOfMain()設計
choose
其他
3
4
5
0
1-一2
10、
3、錄入學生信息功能模塊函數(shù)Append。設計
4、修改學生信息功能模塊函數(shù)Modify()設計
5、刪除學生信息功能模塊函數(shù)Delete()設計
6、
查詢菜單模塊函數(shù)MenuOfSear()設計
11、
7、
按學號查詢功能模塊函數(shù)SearNum()設計
8、按年級查詢功能模塊函數(shù)SearGrade()設計
12、
9、輸出學生信息功能模塊函數(shù)ListAll()設計
五、調試分析
本系統(tǒng)在VC6下編譯調試通過,可順利運行,各項功能達到設計要求。
本系統(tǒng)程序由一個.h頭文件和三個.c源文件構成。系統(tǒng)調試主要在VC6下進行, 采用分模塊調試的方法進行編譯,即完成一個函數(shù)功能模塊就編譯一個功能模塊,最后 再進行整體編譯并生成可執(zhí)行文件Student.exe。
在調試的過程中,主要碰到了以下問題:
1、 清屏函數(shù)在TC中使用的clrsrc()函數(shù),但在VC6中沒有該函數(shù)也沒有相應的 函數(shù)。查資料,發(fā)現(xiàn)在VC中可使用system()函數(shù)調用系統(tǒng)命令cls實現(xiàn)。
2、
13、在使用C語言系統(tǒng)函數(shù)進行數(shù)據(jù)輸入的時候,發(fā)現(xiàn)使用getchar()和 gets()函數(shù)輸 入字符和字符串的時候,系統(tǒng)經常跳過相應的輸入語句,無法輸入數(shù)據(jù)。查資料,是C 系統(tǒng)的輸入處理的輸入緩存問題,解決方法是在進行字符和字符串輸入的時候,先使用 fflush(stdin)函數(shù)清除輸入緩存,即可正常輸入字符和字符串。
六、 用戶手冊
本系統(tǒng)是WIN32控制臺程序,可在WINDOW和DOS環(huán)境下運行,執(zhí)行文件名稱: Student.exe o
運行程序后,首先顯示系統(tǒng)信息和版權信息,用戶按任意鍵后進行主功能菜單。在 主功能菜單中輸入相應的數(shù)字可執(zhí)行相應的程序功能,包括錄入學生信息、修改學生信 息、刪除學生信息和輸入所有學生信息,輸入4可進行查詢子菜單,可進行按學號查詢 和按年級查詢學生信息。在主功能菜單按6可結束本系統(tǒng)的運行并自動關閉運行窗口。
七、 附錄
源程序文件名清單:
Alist.H 〃公用的常量和類型
Main.c
List.c
Edit.c