作者:周芳 冯昊 盛李明 苏启琦 张小虎
摘要:针对当代大学生节约意识淡薄的现状,以消费管理系统为案例,前台采用vc作为开发工具,后台采用access数据库,利用c/s结构开发而成。按照软件工程的思想,从需求分析、概要设计、详细设计、编码和测试五个方面进行了详细描述,旨在帮助提高学生自我管理能力的同时,为计算机系软件专业的学生提供参考依据,以便更快的进入数据库编程领域。
关键词:管理系统;软件工程;数据库编程;自我管理
1、引言
随着社会的发展,物质生活越来越充裕,大部分家庭当中均以独生子女居多,家长往往倾其所有,尽量满足小孩的各种需求,力争使他们受到最好的教育[1]。基于此,节约意识和理财意识逐渐淡薄[2],为了让当代大学生对自己的每笔消费都能做到心中有数,从而培养自己的理财意识和自我管理的能力,从而开发了此消费管理系统。它能完成对学生的消费按月、季度、年等进行汇总、统计各种支出的百分比等功能。与此同时,采取重现软件设计流程的方式,为计算机系软件专业的学生提供参考依据,以便加快进入数据库编程领域的步伐。
2、需求分析
根据用户需求,该系统应具有以下功能:
(1)用户通过身份认证进入系统。
(2)管理员能实现用户信息的查询、增加、删除和修改。
(3)能实现指定人员的消费查询、增加、删除和修改,按月、季度、年进行汇总,统计各种支出的百分比等功能。
3、概要设计
3.1开发环境
该系统以c/s模式为体系结构,采用visual c作为前台开发工具,使用access作为后台数据库,通过ado实现系统与数据库的连接开发而成。
3.2模块设计
按照用户需求,确定该系统具有用户管理和消费管理两大模块,功能模块图如图3-1所示:
4、数据库设计
数据库设计时,主要采用范式原理[3],在设计过程中一般只需符合3nf规范即可,即消除传递函数依赖。除此之外,还需制定统一的命名规则[4],比如:字段名和表名采用单词的首字母加下划线的方式,s_date代表提交时间。另外,需要设置约束条件,例如:主外键设置,是否允许重复等。
本系统结构简单,仅由单独的寝室成员信息表建立而成,包含s_id、s_name, s_subject、s_date和mark等5个字段,其数据类型分别为数字(长整型)、文本、文本、日期/时间、货币型。其中,s_id为主键,其他4个字段都将“必填字段”设置为“是”。
5、编码
“编码”顾名思义为编写代码,即利用程序设计语言实现用户所需功能[5]。现以用户身份认证和添加消费记录为例进行重现。
5.1用户认证代码
首先定义一个布尔型的变量,用于是否取得权限的标志,然后定义cstring型的变量m_user和m_password,分别用来存储用户名和密码。具体代码如下:

class clogin : public cdialog
{
// construction
public:
bool status; //先用bool定义一个status,用于判断是否拥有用户权限
clogin(cwnd* pparent = null);
}
void clogin::onok()
{
// todo: add extra validation here
updatedata(true);
if(m_user=="635"&&m_password=="0706030118192021")//这里设置用户名及密码
{
status=true;//改变status的值,确定是否有操作权限
messagebox("用户认证成功");
m_user="";//将用户名与密码置空
m_password="";
updatedata(false);
}
else
{
status=false;
messagebox("密码错误!");
m_user="";
m_password="";
updatedata(false);
}
cdialog::onok();
}
这里采用的是将用户名和密码直接写入程序中,也可以设计在数据库的字段中来进行验证,如果和指定数据不匹配则报错,同时将标志置为false,匹配则将标志置为true,并将存放用户名和密码的变量值清空,为下一次身份验证做准备。
5.2 添加消费记录
基于数据库的编程,主要完成增加、修改、删除、查询四种操作。现以添加记录为例,主要实现代码如下:
void cstudentview::onbutton7()
{
// todo: add your control notification handler code here
if(m_admin.status==1)//根据用户认证模块的状态,登录成功则执行添加
{
updatedata(true);
addarecord(m_addsnum,m_addsname,m_addsub,m_addmark);
m_addsnum=m_addsname=m_addsub="";//添加完成后将,各字段值复位
m_addmark=0;
messagebox("添加成功!");
updatedata(false);
}
else//登录不成功,则提示没有权限
messagebox("你发现没。。你没有权限。。");
}
void cstudentview::addarecord(cstring s1, cstring s2, cstring s3, float f1)
{
m_pset->addnew();
m_pset->m_mark=f1;
m_pset->m_studentname=s2;
m_pset->m_studentnum=s1;
m_pset->m_subject=s3;
m_pset->update();
m_pset->movelast();
m_pset->requery();
}
6测试
完成以上操作后,接下来的工作为测试,测试的方法有多种,比如:黑盒测试、白盒测试、边界测试、功能测试等,一般采取功能测试,即严格按照系统的需求分析来检验,检查所需要的功能是否都具备,统计数据是否都计算准确无误。
测试效果如图6-1所示:
7结束语
该系统响应时间快,简单、易操作,经过一学期的试运行,效果良好,降低了学生的日常消费,提高了理财意识。本论文主要目的在于重现软件开发的流程,故所选案例模块功能简单,但能够帮助软件专业的学生特别是专科生,以最快的速度步入数据库编程的门槛,从这点来说意义是重大的。
基金项目:武汉市教育局教学研究项目(2006j28)
参考文献
【1】刘琳琅,吴清江.基于uml的面向对象建模[j].福州:福建电脑,2004(3):29—33.
【2】孙剑斌, 刘福来. 基于uml的教学质量评价系统的分析与设计. 赣南师范学院学报, 2005, 26(3): 69-72
【3】刘锦萍.基于uml及b/s架构网上选课系统的设计.广州:电 脑 学 习,2008.
【4】 焦允,郭秋萍.基于uml 2.0的数字图书馆系统建模与设计.太原: 电脑开发与应用,2008.
【5】郑金秋,孙雪冬,宋波.基于uml的网上选课系统的研究与设计[j].沈阳:沈阳航空工业学院学报,2005,22(5):46—48.