班费管理系统c语言报告,班费管理系统课程设计报告.doc
計算機科學(xué)與技術(shù)系
課程設(shè)計報告
20 ~20 學(xué)年第 學(xué)期
課程
C語言課程設(shè)計
課程設(shè)計名稱
班級班費管理系統(tǒng)
學(xué)生姓名
學(xué)號
專業(yè)班級
指導(dǎo)教師
20 年 月
班級班費管理系統(tǒng)
目錄
班級班費管理系統(tǒng)2
目錄2
一、 需求分析3
二、算法設(shè)計3
(一)設(shè)計思想3
1.程序結(jié)構(gòu)(流程圖)3
2. 重要的數(shù)據(jù)結(jié)構(gòu)4
3. 主要算法思想4
(二)設(shè)計表示4
(三)實現(xiàn)注釋6
(四)算法設(shè)計中一些新的想法6
三、 用戶手冊6
四、 調(diào)試及測試7
五、小結(jié)7
六、參考文獻(xiàn)8
附錄8
測試數(shù)據(jù)14
一、 需求分析
本程序是班級班費管理系統(tǒng),主要作用是幫助管理班級班費事務(wù),以月份的形式管理班級班費賬目,包括班費支出的時間、經(jīng)手人、金額和原因。要求具有備忘錄班級班費管理和班費信息查看的功能。其中班級班費管理包括班費支出增加和刪除功能。班費信息查看包括按月份查看和整體查看。要求具有備忘錄班級班費管理和班費信息查看的功能。其中班級班費管理包括班費支出增加和刪除功能。班費信息查看包括按月份查看和整體查看。程序設(shè)計需要運用面向過程的程序設(shè)計方法,要求選擇動態(tài)數(shù)組,任務(wù)中要運用對文件進(jìn)行讀寫操作。根據(jù)要求,本程序提供的基本管理功能有:
(一) 添加:即增加一條班費支出到班費項目中;
(二) 顯示:即在屏幕上顯示所有班費支出中的信息。
(三) 存儲:即將班費支出信息保存在一個文件中。
(四) 裝入:即將文件中的信息讀入程序。
(五) 查詢:可根據(jù)月份查找班費支出信息,若找到,顯示在屏幕上。
(六) 刪除:可刪除某月份的班費支出信息。
二、算法設(shè)計
(一)設(shè)計思想
1.程序結(jié)構(gòu)(流程圖)
開始
主菜單
N
管理員模式
退出
普通用戶模式
用戶名&密碼?
返回主菜單
查看日志
Y
返回主菜單
查看日志
刪除日志
增加日志
結(jié)束
2. 重要的數(shù)據(jù)結(jié)構(gòu)
typedef struct ClassFee
{
int month; // 月份
float money; //每月班費金額
char people[20]; //班費支出經(jīng)手人
char reason[100]; //班費支出原因
}CF;
3. 主要算法思想
本程序主要運用面向過程的程序設(shè)計方法。在界面制作中,運用開關(guān)語句switch,通過輸入數(shù)字,選擇主菜單下的子菜單項目,并運用庫函數(shù)system(“cls”)和system(“pause”)進(jìn)行清屏和暫停操作,使界面更加清晰美觀。在各個子菜單中,分別通過調(diào)用子函數(shù)的方式來進(jìn)行班費支出的增加、刪除和查詢操作。在增加、刪除和查詢函數(shù)中,運用結(jié)構(gòu)體數(shù)組和文件操作,實現(xiàn)增加、刪除和查詢功能。
(二)設(shè)計表示
模塊一 void Menu():主菜單函數(shù),是進(jìn)入系統(tǒng)的第一界面,用來讓用戶選擇進(jìn)入管理員模式或普通用戶模式或退出系統(tǒng),用戶通過輸入選擇的數(shù)字來調(diào)用各個子函數(shù)進(jìn)入各個模式。若輸入錯誤,則會被要求重新輸入。本函數(shù)運用開關(guān)語句switch以及調(diào)用子函數(shù)來實現(xiàn)功能。
模塊二 void Land():管理員登陸函數(shù),用來讓管理員登陸系統(tǒng),需要用戶名和密碼。若用戶名輸入錯誤,則無法登陸,會返回主菜單。若用戶名輸入正確,會繼續(xù)被要求輸入密碼,這是調(diào)用到子函數(shù)int Key()。若密碼輸入錯誤,則會被要求再次輸入密碼。如果輸入三次密碼都是錯誤的,則無法再次輸入密碼,程序會提示“對不起!您已經(jīng)錯誤輸入三次,無法再次輸入,按回車鍵返回主菜單。”,界面返回主菜單。
若密碼輸入正確,會調(diào)轉(zhuǎn)到子函數(shù)void Administrators()界面。本函數(shù)運用開關(guān)語句switch以及調(diào)用子函數(shù)int Key()和void Administrators()來實現(xiàn)功能。
模塊三 void Administrators():管理員模式函數(shù),用來讓管理員選擇增加支出\或刪除支出\或查詢?nèi)罩綷或返回主菜單,用戶通過輸入選擇的數(shù)字來調(diào)用各個子函數(shù)進(jìn)入各個功能。若輸入錯誤,則會被要求重新輸入。本函數(shù)運用開關(guān)語句switch以及調(diào)用子函數(shù)來實現(xiàn)功能。
模塊四 void Users():普通用戶模式函數(shù),用來讓普通用戶選擇查詢?nèi)罩净蚧蚍祷刂鞑藛?#xff0c;用戶通過輸入選擇的數(shù)字來調(diào)用各個子函數(shù)進(jìn)入各個功能。若輸入錯誤,則會被要求重新輸入。本函數(shù)運用開關(guān)語句switch以及調(diào)用子函數(shù)來實現(xiàn)功能。
模塊五 int Read():讀取文件信息函數(shù),用來讀取文件"日志.txt"中共有多少條信息并返回信息總數(shù)目i。本函數(shù)運用文件打開、讀取和關(guān)閉操作以及結(jié)構(gòu)體數(shù)組和指針來實現(xiàn)功能。
模塊六 void Output():輸出文件內(nèi)容函數(shù),用來輸出文件"日志.txt"的內(nèi)容。本函數(shù)運用文件打開、讀取、輸出和關(guān)閉操作以及結(jié)構(gòu)體數(shù)組和指針來實現(xiàn)功能。
模塊七 void Choose():查詢文件內(nèi)容菜單函數(shù),用來讓普通用戶選擇按月查詢或查詢所有或返回主菜單,用戶通過輸入選擇的數(shù)字來調(diào)用各個子函數(shù)進(jìn)入各個功能。若輸入錯誤,則會被要求重新輸入。本函數(shù)運用開關(guān)語句switch以及調(diào)用子函數(shù)來實現(xiàn)功能。
模塊八 void Delete():刪除文件內(nèi)容函數(shù),用來讓管理員刪除文件內(nèi)容。屏幕首先顯示全部文件內(nèi)容,然后顯示“請輸入你想要刪除的月份:”,管理員輸入數(shù)字,屏幕輸出刪除后的文件的全部內(nèi)容,并將刪除后的文件的全部內(nèi)容打印到"更新后的日志.txt"。之后,屏幕輸出“請選擇:1------返回上一級菜單 2------返回主菜單”,管理員輸入數(shù)字,通過調(diào)用子函數(shù)void Administrators()和void Menu()來調(diào)轉(zhuǎn)界面。若輸入錯誤,則會被要求重新輸入。本函數(shù)運用開關(guān)語句switch、文件打開、讀取、打印和關(guān)閉操作、結(jié)構(gòu)體數(shù)組、指針以及調(diào)用子函數(shù)void Administrators()、int Read()和void Menu()來實現(xiàn)功能。
模塊九 void Add():增加文件內(nèi)容函數(shù),用來讓管理員增加文件內(nèi)容。屏幕首先顯示“請輸入你要增加的支出信息(請依次輸入時間(月份)、經(jīng)辦人姓名、金額和原因)”,管理員輸入相應(yīng)內(nèi)容,屏幕首先輸出管理員增加的內(nèi)容,然后輸出增加后的文件的全部內(nèi)容,并將增加后的文件的全部內(nèi)容打印到"更新后的日志.txt"。之后,屏幕輸出“請選擇:1------返回上一級菜單 2------返回主菜單”,管理員輸入數(shù)字,通過調(diào)用子函數(shù)void Administrators()和void Menu()來調(diào)轉(zhuǎn)界面。若輸入錯誤,則會被要求重新輸入。本函數(shù)運用開關(guān)語句switch、文件打開、讀取、打印和關(guān)閉操作、結(jié)構(gòu)體數(shù)組、指針以及調(diào)用子函數(shù)void Administrators()、int Read()和void Menu()來實現(xiàn)功能。
模塊十 void consult():按月查詢文件內(nèi)容函數(shù),用來讓管理員和普通用戶按月查詢文件內(nèi)容。屏幕首先顯示“請輸入你想要查詢的月份:”,管理員和普通用戶輸入數(shù)字,屏幕輸出該月的全部班費支出內(nèi)容。之后,屏幕輸出“請選擇:1------返回上一級菜單 2------返回主菜單”,管理員和普通用戶輸入數(shù)字,通過調(diào)用子函數(shù)void Choose()和void Menu()來調(diào)轉(zhuǎn)界面。若輸入錯誤,則會被要求重新輸入。本函數(shù)運用開關(guān)語句switch、文件打開、讀取、打印和關(guān)閉操作、結(jié)構(gòu)體數(shù)組、指針以及調(diào)用子函數(shù)void Choose()、int Read()和void Menu()來實現(xiàn)功能。
模塊十一 int Key():密碼函數(shù),用來讓管理員輸入密碼,使用數(shù)組實現(xiàn)密碼以“*”號形式輸出。若輸入的字符正確,則返回a=0;若輸入的字符不正確,則返回a=1。本函數(shù)運用字符串?dāng)?shù)組來實現(xiàn)功能。
模塊十二 void main():本程序主函數(shù)。
(三)實現(xiàn)注釋
任務(wù)中各項要求基本實現(xiàn)。在完成基本要求的基礎(chǔ)上,本程序設(shè)計了管理員模式與普通用戶模式。在管理員模式中,設(shè)計了用戶名和密碼模塊。管理員必須輸入正確的用戶名,才能進(jìn)一步輸入密碼,否則則無法進(jìn)入管理員界面。在密碼模塊,設(shè)計了以“*”號形式輸出密碼的方式,而若輸入密碼錯誤超過三次,就無法進(jìn)入管理員界面。而在各界面的調(diào)轉(zhuǎn)方面,通過運用庫函數(shù)system(“cls”)和system(“pause”)來實現(xiàn)清屏和暫停功能。
(四)算法設(shè)計中一些新的想法
本程序可以使用鏈表。鏈表可以將結(jié)構(gòu)體、數(shù)組、指針等C語言的基本元素融合在一起,它最大的好處是可以非常方便地在鏈表中實現(xiàn)插入、刪除節(jié)點操作。本程序具有的增加、刪除功能,正可以創(chuàng)建一個鏈表來實現(xiàn)這些功能。而本程序采用結(jié)構(gòu)體數(shù)組的方法,對于增加、刪除功能編寫的代碼較為繁瑣,不如鏈表的操作簡潔方便。但是,我對于鏈表操作不太熟練,把握不大,因此采用了結(jié)構(gòu)體數(shù)組的方法。在之后的學(xué)習(xí)中,我會加強對鏈表知識的學(xué)習(xí),實現(xiàn)使用鏈表來編寫本程序。
三、 用戶手冊
用戶進(jìn)入系統(tǒng)后,首先在主菜單界面選擇要進(jìn)入的模式:管理員模式或普通用戶模式或退出,輸入數(shù)字1或2或3,如果輸入其他字符,則屏幕會輸出“輸入錯誤!請重新輸入:”,并且調(diào)轉(zhuǎn)回主菜單界面。
例如:輸入1后,系統(tǒng)進(jìn)入管理員登陸界面,用戶需要輸入用戶名,如果用戶名錯誤,則屏幕會輸出“請輸入您的用戶名,按回車鍵結(jié)束:”,并且調(diào)轉(zhuǎn)回主菜單界面。如果用戶名正確,則系統(tǒng)會繼續(xù)要求用戶輸入密碼。如果密碼錯誤,則屏幕會輸出“密碼錯誤!請重新輸入:”,若輸入密碼錯誤三次,則屏幕會輸出“對不起!您已經(jīng)錯誤輸入三次,無法再次輸入,按回車鍵返回主菜單。”,并且調(diào)轉(zhuǎn)回主菜單界面。如果密碼正確,則會調(diào)轉(zhuǎn)到管理員界面。用戶可以選擇進(jìn)入的功能:增加支出或刪除支出或查詢?nèi)罩净蚍祷刂鞑藛?#xff0c;輸入數(shù)字1或2或3或4,如果輸入其他字符,則屏幕會輸出“輸入錯誤!請重新輸入:”,并且調(diào)轉(zhuǎn)回管理員界面。例如:輸入1后,屏幕顯示“請輸入你要增加的支出信息(請依次輸入時間(月份)、經(jīng)辦人姓名、金額和原因)”,用戶輸入相應(yīng)的信息后,屏幕首先輸出用戶增加的內(nèi)容,然后輸出增加后的文件的全部內(nèi)容,并將增加后的文件的全部內(nèi)容打印到"更新后的日志.txt"。之后,屏幕輸出“請選擇:1------返回上一級菜單 2------返回主菜單”,輸入數(shù)字1或2,如果輸入其他字符,則屏幕會輸出“輸入錯誤!請重新輸入:”。輸入1后,會返回管理員界面。輸入2后,會返回主菜單界面。
用戶在進(jìn)行操作時,根據(jù)屏幕輸出的提示進(jìn)行輸入操作,輸入數(shù)字或文字,在輸入完成后,按回車鍵結(jié)束操作。
四、 調(diào)試及測試
在程序的調(diào)試及測試過程中,程序出現(xiàn)的問題有:
(1)由于粗心,一些符號為中文格式,這些錯誤但是“Ox”開頭的。
(2)密碼函數(shù)編寫錯誤。一開始定義密碼函數(shù)為void型,無法返回值,后來改為int型后,函數(shù)正確了。
(3)增加支出函數(shù)編寫錯誤。運用結(jié)構(gòu)體數(shù)組來編寫增加支出函數(shù),循環(huán)體較為復(fù)雜,在經(jīng)過多次的修改過后,終于確定了最終正確的循環(huán)體。
(4)刪除支出函數(shù)編寫錯誤。運用結(jié)構(gòu)體數(shù)組來編寫增加支出函數(shù),循環(huán)體較為復(fù)雜,在經(jīng)過多次的修改過后,終于確定了最終正確的循環(huán)體。
(5)編程開始沒有運用庫函數(shù)system(“cls”)和system(“pause”)來實現(xiàn)清屏和暫停功能,因此輸出界面較為冗長,后來經(jīng)過查資料,學(xué)習(xí)了這兩個庫函數(shù),使得系統(tǒng)實現(xiàn)了清屏和暫停功能。
(6)在文件操作中,讀取文件內(nèi)容時,一開始忘記了要讀取題目,導(dǎo)致測試時多次死循環(huán),之后發(fā)現(xiàn)了這個錯誤,定義變量讀出題目后,文件操作正確了。
五、小結(jié)
經(jīng)過一個星期的課程設(shè)計,我將理論教學(xué)中涉及到的知識點貫穿起來,對不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計題目進(jìn)行綜合性應(yīng)用,對所學(xué)知識達(dá)到融會貫通的程度。通過課程設(shè)計,我進(jìn)一步鞏固、加深了所學(xué)專業(yè)課程《C 程序設(shè)計語言》的基本理論知識,理論聯(lián)系實際,進(jìn)一步培養(yǎng)了綜合分析問題,解決問題的能力。課程設(shè)計全面考核了我所掌握的基本理論知識及實際業(yè)務(wù)能力,從而達(dá)到提高我素質(zhì)的最終目的。利用所學(xué)知識,我開發(fā)小型應(yīng)用系統(tǒng),掌握運用C 語言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練了獨立開發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。在課程設(shè)計后,我掌握了結(jié)構(gòu)化程序設(shè)計方法,熟悉了面向過程程序設(shè)計方法,熟練了掌握C 語言的基本語法,靈活運用了各種數(shù)據(jù)類型,進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序和修改程序。課程設(shè)計的過程雖然很辛苦,但付出終有回報,計算機編程水平的提高就是對我最大的回報!
六、參考文獻(xiàn)
[1] 黃明等編著《C語言課程設(shè)計》北京:電子工業(yè)出版社
[2] 郭翠英編著《C語言課程設(shè)計案例精編》北京:中國水利水電出版社
[3] 寧正元《數(shù)據(jù)結(jié)構(gòu)(c語言)》 南京:東南大學(xué)出版社。2000年6月第1版
[4] 嚴(yán)蔚敏等 《數(shù)據(jù)結(jié)構(gòu)(c語言版)》 北京:清華大學(xué)出版社,1997年4月第1版
[5] 譚浩強編著《C程序設(shè)計題解與上機指導(dǎo)(第3版) 》北京:清華大學(xué)出版社
[6] 譚浩強編著《C程序設(shè)計(第3版) 》北京:清華大學(xué)出版社
[7] 洪國勝 等編著 《C++ Builder程序設(shè)計輕松上手》北京:清華大學(xué)出版社
[8] 寧正元《數(shù)據(jù)結(jié)構(gòu)(c語言)》 南京:東南大學(xué)出版社。2000年6月第1版
[9] 嚴(yán)蔚敏等 《數(shù)據(jù)結(jié)構(gòu)(c語言版)》 北京:清華大學(xué)出版社,1997年4月第1版。[10] 明日科技 編著《Visual C++程序開發(fā)范例寶典》北京:人民郵電出版社。
[11] 胡學(xué)鋼等《數(shù)據(jù)結(jié)構(gòu)算法設(shè)計指導(dǎo)》北京:清華大學(xué)出版社,1999年 第1版。
[12] 劉大有《數(shù)據(jù)結(jié)構(gòu)》(面向21世紀(jì)課程教材) 北京:高等教育出版社。2001年6月第1版。
附錄
13
測試數(shù)據(jù)
1.進(jìn)入主界面:
2.輸入錯誤:
3.管理員登陸界面:
4.用戶名錯誤:
5.用戶名正確,輸入密碼:
6.密碼錯誤:
7.三次密碼錯誤:
8.登陸成功:
9.進(jìn)入管理員界面:
10.增加支出:
11.增加支出后:
12. 原文件:
13.增加支出后的文件:
14.刪除支出:
15.刪除支出后:
16. 刪除支出后的文件:
17.進(jìn)入普通用戶界面:
18.查詢?nèi)罩?#xff1a;
19.按月查詢:
20查詢結(jié)果:
展開閱讀全文
總結(jié)
以上是生活随笔為你收集整理的班费管理系统c语言报告,班费管理系统课程设计报告.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pytorch:使用官网提供数据集的相关
- 下一篇: LPR/IRR/APR/PMT/PV/F