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