计算机科学与技术系
课程设计报告
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"的内容。本函数运用文件打开、读取、输出和关闭操作以及结构体数组和指针来实现功能。
模块七 vo