计算机科学与技术系

课程设计报告

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