班费管理系统c语言报告,班费管理系统课程设计报告.doc

计算机科学与技术系

课程设计报告

20 ~20 学年第 学期

课程

C语言课程设计

课程设计名称

班级班费管理系统

学生姓名

学号

专业班级

指导教师

20 年 月

班级班费管理系统

目录

班级班费管理系统2

目录2

一、 需求分析3

二、算法设计3

(一)设计思想3

1.程序结构(流程图)3

2. 重要的数据结构4

3. 主要算法思想4

(二)设计表示4

(三)实现注释6

(四)算法设计中一些新的想法6

三、 用户手册6

四、 调试及测试7

五、小结7

六、参考文献8

附录8

测试数据14

一、 需求分析

本程序是班级班费管理系统,主要作用是帮助管理班级班费事务,以月份的形式管理班级班费账目,包括班费支出的时间、经手人、金额和原因。要求具有备忘录班级班费管理和班费信息查看的功能。其中班级班费管理包括班费支出增加和删除功能。班费信息查看包括按月份查看和整体查看。要求具有备忘录班级班费管理和班费信息查看的功能。其中班级班费管理包括班费支出增加和删除功能。班费信息查看包括按月份查看和整体查看。程序设计需要运用面向过程的程序设计方法,要求选择动态数组,任务中要运用对文件进行读写操作。根据要求,本程序提供的基本管理功能有:

(一) 添加:即增加一条班费支出到班费项目中;

(二) 显示:即在屏幕上显示所有班费支出中的信息。

(三) 存储:即将班费支出信息保存在一个文件中。

(四) 装入:即将文件中的信息读入程序。

(五) 查询:可根据月份查找班费支出信息,若找到,显示在屏幕上。

(六) 删除:可删除某月份的班费支出信息。

二、算法设计

(一)设计思想

1.程序结构(流程图)

开始

主菜单

N

管理员模式

退出

普通用户模式

用户名&密码?

返回主菜单

查看日志

Y

返回主菜单

查看日志

删除日志

增加日志

结束

2. 重要的数据结构

typedef struct ClassFee

{

int month; // 月份

float money; //每月班费金额

char people[20]; //班费支出经手人

char reason[100]; //班费支出原因

}CF;

3. 主要算法思想

本程序主要运用面向过程的程序设计方法。在界面制作中,运用开关语句switch,通过输入数字,选择主菜单下的子菜单项目,并运用库函数system(“cls”)和system(“pause”)进行清屏和暂停操作,使界面更加清晰美观。在各个子菜单中,分别通过调用子函数的方式来进行班费支出的增加、删除和查询操作。在增加、删除和查询函数中,运用结构体数组和文件操作,实现增加、删除和查询功能。

(二)设计表示

模块一 void Menu():主菜单函数,是进入系统的第一界面,用来让用户选择进入管理员模式或普通用户模式或退出系统,用户通过输入选择的数字来调用各个子函数进入各个模式。若输入错误,则会被要求重新输入。本函数运用开关语句switch以及调用子函数来实现功能。

模块二 void Land():管理员登陆函数,用来让管理员登陆系统,需要用户名和密码。若用户名输入错误,则无法登陆,会返回主菜单。若用户名输入正确,会继续被要求输入密码,这是调用到子函数int Key()。若密码输入错误,则会被要求再次输入密码。如果输入三次密码都是错误的,则无法再次输入密码,程序会提示“对不起!您已经错误输入三次,无法再次输入,按回车键返回主菜单。”,界面返回主菜单。

若密码输入正确,会调转到子函数void Administrators()界面。本函数运用开关语句switch以及调用子函数int Key()和void Administrators()来实现功能。

模块三 void Administrators():管理员模式函数,用来让管理员选择增加支出\或删除支出\或查询日志\或返回主菜单,用户通过输入选择的数字来调用各个子函数进入各个功能。若输入错误,则会被要求重新输入。本函数运用开关语句switch以及调用子函数来实现功能。

模块四 void Users():普通用户模式函数,用来让普通用户选择查询日志或或返回主菜单,用户通过输入选择的数字来调用各个子函数进入各个功能。若输入错误,则会被要求重新输入。本函数运用开关语句switch以及调用子函数来实现功能。

模块五 int Read():读取文件信息函数,用来读取文件"日志.txt"中共有多少条信息并返回信息总数目i。本函数运用文件打开、读取和关闭操作以及结构体数组和指针来实现功能。

模块六 void Output():输出文件内容函数,用来输出文件"日志.txt"的内容。本函数运用文件打开、读取、输出和关闭操作以及结构体数组和指针来实现功能。

模块七 void Choose():查询文件内容菜单函数,用来让普通用户选择按月查询或查询所有或返回主菜单,用户通过输入选择的数字来调用各个子函数进入各个功能。若输入错误,则会被要求重新输入。本函数运用开关语句switch以及调用子函数来实现功能。

模块八 void Delete():删除文件内容函数,用来让管理员删除文件内容。屏幕首先显示全部文件内容,然后显示“请输入你想要删除的月份:”,管理员输入数字,屏幕输出删除后的文件的全部内容,并将删除后的文件的全部内容打印到"更新后的日志.txt"。之后,屏幕输出“请选择:1------返回上一级菜单 2------返回主菜单”,管理员输入数字,通过调用子函数void Administrators()和void Menu()来调转界面。若输入错误,则会被要求重新输入。本函数运用开关语句switch、文件打开、读取、打印和关闭操作、结构体数组、指针以及调用子函数void Administrators()、int Read()和void Menu()来实现功能。

模块九 void Add():增加文件内容函数,用来让管理员增加文件内容。屏幕首先显示“请输入你要增加的支出信息(请依次输入时间(月份)、经办人姓名、金额和原因)”,管理员输入相应内容,屏幕首先输出管理员增加的内容,然后输出增加后的文件的全部内容,并将增加后的文件的全部内容打印到"更新后的日志.txt"。之后,屏幕输出“请选择:1------返回上一级菜单 2------返回主菜单”,管理员输入数字,通过调用子函数void Administrators()和void Menu()来调转界面。若输入错误,则会被要求重新输入。本函数运用开关语句switch、文件打开、读取、打印和关闭操作、结构体数组、指针以及调用子函数void Administrators()、int Read()和void Menu()来实现功能。

模块十 void consult():按月查询文件内容函数,用来让管理员和普通用户按月查询文件内容。屏幕首先显示“请输入你想要查询的月份:”,管理员和普通用户输入数字,屏幕输出该月的全部班费支出内容。之后,屏幕输出“请选择:1------返回上一级菜单 2------返回主菜单”,管理员和普通用户输入数字,通过调用子函数void Choose()和void Menu()来调转界面。若输入错误,则会被要求重新输入。本函数运用开关语句switch、文件打开、读取、打印和关闭操作、结构体数组、指针以及调用子函数void Choose()、int Read()和void Menu()来实现功能。

模块十一 int Key():密码函数,用来让管理员输入密码,使用数组实现密码以“*”号形式输出。若输入的字符正确,则返回a=0;若输入的字符不正确,则返回a=1。本函数运用字符串数组来实现功能。

模块十二 void main():本程序主函数。

(三)实现注释

任务中各项要求基本实现。在完成基本要求的基础上,本程序设计了管理员模式与普通用户模式。在管理员模式中,设计了用户名和密码模块。管理员必须输入正确的用户名,才能进一步输入密码,否则则无法进入管理员界面。在密码模块,设计了以“*”号形式输出密码的方式,而若输入密码错误超过三次,就无法进入管理员界面。而在各界面的调转方面,通过运用库函数system(“cls”)和system(“pause”)来实现清屏和暂停功能。

(四)算法设计中一些新的想法

本程序可以使用链表。链表可以将结构体、数组、指针等C语言的基本元素融合在一起,它最大的好处是可以非常方便地在链表中实现插入、删除节点操作。本程序具有的增加、删除功能,正可以创建一个链表来实现这些功能。而本程序采用结构体数组的方法,对于增加、删除功能编写的代码较为繁琐,不如链表的操作简洁方便。但是,我对于链表操作不太熟练,把握不大,因此采用了结构体数组的方法。在之后的学习中,我会加强对链表知识的学习,实现使用链表来编写本程序。

三、 用户手册

用户进入系统后,首先在主菜单界面选择要进入的模式:管理员模式或普通用户模式或退出,输入数字1或2或3,如果输入其他字符,则屏幕会输出“输入错误!请重新输入:”,并且调转回主菜单界面。

例如:输入1后,系统进入管理员登陆界面,用户需要输入用户名,如果用户名错误,则屏幕会输出“请输入您的用户名,按回车键结束:”,并且调转回主菜单界面。如果用户名正确,则系统会继续要求用户输入密码。如果密码错误,则屏幕会输出“密码错误!请重新输入:”,若输入密码错误三次,则屏幕会输出“对不起!您已经错误输入三次,无法再次输入,按回车键返回主菜单。”,并且调转回主菜单界面。如果密码正确,则会调转到管理员界面。用户可以选择进入的功能:增加支出或删除支出或查询日志或返回主菜单,输入数字1或2或3或4,如果输入其他字符,则屏幕会输出“输入错误!请重新输入:”,并且调转回管理员界面。例如:输入1后,屏幕显示“请输入你要增加的支出信息(请依次输入时间(月份)、经办人姓名、金额和原因)”,用户输入相应的信息后,屏幕首先输出用户增加的内容,然后输出增加后的文件的全部内容,并将增加后的文件的全部内容打印到"更新后的日志.txt"。之后,屏幕输出“请选择:1------返回上一级菜单 2------返回主菜单”,输入数字1或2,如果输入其他字符,则屏幕会输出“输入错误!请重新输入:”。输入1后,会返回管理员界面。输入2后,会返回主菜单界面。

用户在进行操作时,根据屏幕输出的提示进行输入操作,输入数字或文字,在输入完成后,按回车键结束操作。

四、 调试及测试

在程序的调试及测试过程中,程序出现的问题有:

(1)由于粗心,一些符号为中文格式,这些错误但是“Ox”开头的。

(2)密码函数编写错误。一开始定义密码函数为void型,无法返回值,后来改为int型后,函数正确了。

(3)增加支出函数编写错误。运用结构体数组来编写增加支出函数,循环体较为复杂,在经过多次的修改过后,终于确定了最终正确的循环体。

(4)删除支出函数编写错误。运用结构体数组来编写增加支出函数,循环体较为复杂,在经过多次的修改过后,终于确定了最终正确的循环体。

(5)编程开始没有运用库函数system(“cls”)和system(“pause”)来实现清屏和暂停功能,因此输出界面较为冗长,后来经过查资料,学习了这两个库函数,使得系统实现了清屏和暂停功能。

(6)在文件操作中,读取文件内容时,一开始忘记了要读取题目,导致测试时多次死循环,之后发现了这个错误,定义变量读出题目后,文件操作正确了。

五、小结

经过一个星期的课程设计,我将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,我进一步巩固、加深了所学专业课程《C 程序设计语言》的基本理论知识,理论联系实际,进一步培养了综合分析问题,解决问题的能力。课程设计全面考核了我所掌握的基本理论知识及实际业务能力,从而达到提高我素质的最终目的。利用所学知识,我开发小型应用系统,掌握运用C 语言编写调试应用系统程序,训练了独立开发应用系统,进行数据处理的综合能力。在课程设计后,我掌握了结构化程序设计方法,熟悉了面向过程程序设计方法,熟练了掌握C 语言的基本语法,灵活运用了各种数据类型,进一步掌握在集成环境下如何调试程序和修改程序。课程设计的过程虽然很辛苦,但付出终有回报,计算机编程水平的提高就是对我最大的回报!

六、参考文献

[1] 黄明等编著《C语言课程设计》北京:电子工业出版社

[2] 郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社

[3] 宁正元《数据结构(c语言)》 南京:东南大学出版社。2000年6月第1版

[4] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版

[5] 谭浩强编著《C程序设计题解与上机指导(第3版) 》北京:清华大学出版社

[6] 谭浩强编著《C程序设计(第3版) 》北京:清华大学出版社

[7] 洪国胜 等编著 《C++ Builder程序设计轻松上手》北京:清华大学出版社

[8] 宁正元《数据结构(c语言)》 南京:东南大学出版社。2000年6月第1版

[9] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版。[10] 明日科技 编著《Visual C++程序开发范例宝典》北京:人民邮电出版社。

[11] 胡学钢等《数据结构算法设计指导》北京:清华大学出版社,1999年 第1版。

[12] 刘大有《数据结构》(面向21世纪课程教材) 北京:高等教育出版社。2001年6月第1版。

附录

13

测试数据

1.进入主界面:

2.输入错误:

3.管理员登陆界面:

4.用户名错误:

5.用户名正确,输入密码:

6.密码错误:

7.三次密码错误:

8.登陆成功:

9.进入管理员界面:

10.增加支出:

11.增加支出后:

12. 原文件:

13.增加支出后的文件:

14.删除支出:

15.删除支出后:

16. 删除支出后的文件:

17.进入普通用户界面:

18.查询日志:

19.按月查询:

20查询结果:

展开阅读全文

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值