学生生活费用管理系统分析及设计.docx
《学生生活费用管理系统分析及设计.docx》由会员分享,可在线阅读,更多相关《学生生活费用管理系统分析及设计.docx(16页珍藏版)》请在冰豆网上搜索。
学生生活费用管理系统分析及设计
学生生活费用管理系统的分析与设计
1引言
1.1要求
本系统是针对用户要求,使用计算机对自己日常的资金的收入、支出以及相关的各种信息进行记录、修改、添加、删除等操作,并实现对信息进行统计的操作而设计的一种现代化个人财务管理软件。
1.2背景
经过双11和双12的洗礼,好多同学都感到自己手里的资金捉襟见肘。
学生本来就是一个消费群体,所以更应该管好自己手里的每一分钱。
当今社会越来越着朝着信息化和数字化方向发展,计算机的应用使我们的生活越来越方便和快捷,可以说我们的每个人生活都离不开计算机的帮助了。
越来越多的个人应用软件成为了人们重要的助手,也在潜移默化的改变着我们的生活。
理财,是每个家庭和个人所必须面对的问题。
实际生活中我们经常要对个人的各项财务收支进行管理,本课题的目的就是利用计算机对各项财务进行电子化的管理,使我们的理财更加方便和理性化,提升我们生活的质量和品位。
传统的在纸上记录收入支出的方式已经过时,人们需要一种可以在计算机记录自己收入支出信息的软件,可是市场上的财务管理软件大多数十面向企业,或是有专门用途,面向学生用户的个人财务管理系统很难找到,再者免费的软件更是少之又少,为了满足普通学生用户的需求,特开发此软件。
本系统功能简单,只适合对学生生活费用管理要求不高的用户,可以完成收入支出金钱的记录与查询等操作。
本系统操作简单,使用方便。
1.3功能要求
(1)能够实现学生个人财务管理方面各项功能,能成功的对用户各种信息进行管理。
(2)能够实现查询、修改、删除、添加等功能,数据的稳定性和可靠性高。
(3)能够实现按日期查询以及对库存数据进行按月统计。
(4)拥有良好的人机交互界面。
2需求分析
2.1处理对象
整个系统分为收入管理,支出管理,查询统计管理,系统设置,备份恢复五个模块,收入管理模块分为添加、修改、删除等功能模块。
支出模块与收入模块类似。
查询统计模块分为收入查询、支出查询、收支统计三个模块,系统设置模块分为基本设置、安全设置两个模块,备份恢复模块分为数据备份、数据恢复模块两个模块,每个模块的功能可以从名字上明显的看出。
系统功能模块图,如图1所示。
图1系统的功能模块图
2.1.1收入管理模块功能
收入管理模块是用户对现金进行添加、删除、修改操作的模块,提供用户对现金的收入进行操作的功能。
2.1.2支出管理模块功能
支出管理模块和收入管理模块功能相似,提供用户对现金的支出进行操作的功能。
2.1.3查询统计管理模块
查询统计模块分为收入查询、支出查询、收支统计三个模块,提供用户对收支信息进行统计的功能。
2.1.4系统管理模块
系统管理模块提供用户对用户个人信息进行基本设置和安全设置的功能。
2.1.5系统管理模块
备份恢复模块分为数据备份、数据恢复模块两个模块,提供用户对数据库的备份和恢复的功能。
2.2安全性和完整性要求
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可以满足系统数据一定程度上的安全性,在通过用户授权机制,用户登录来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。
系统完整性要求系统中数据的正确性以及相容性。
可以通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
3概念结构设计
3.1实体-属性图
(1)用户实体的实体属性图如图2所示。
图2用户实体的实体属性图
(2)收入实体的实体属性图如图3所示。
图3收入物资实体属性图
(3)支出实体的实体属性图如图4所示。
图4支出实体属性图
3.2实体-联系图
(1)用户收入联系E-R图如图5所示。
N
1
图5用户收入联系E-R图
(2)用户支出联系E-R图如图6所示。
N
1
图6用户支出联系E-R图
(3)总E-R图如图7所示
N
1
1
N
图7总E-R图
4逻辑结构设计
4.1将E-R图转换为关系模型
根据系统需求,以及范式的基本要求,将E-R图进行转换并进行优化,最终形成三个关系模式,结果如下:
用户(用户ID,用户名,密码,电话,身份证,个性签名);
收入(收入编号,用户ID,金额,类型,时间,来源,备注);
支出(支出编号,用户ID,金额,类型,时间,去向,备注);
关系依赖:
用户编号用户名(每个用户编号只有一个用户名,用户名依赖于用户编号)
收入编号收入金额(每个收入编号只能记录当前的收入金额数)
支出编号支出金额(每个支出编号只能记录当前的收入金额数)
4.2数据库相关属性的定义
本小节主要是对相关属性的数据类型、长度和是否为主键作相关介绍。
具体如表1、表2、表3所示:
表1用户信息表
属性名
数据类型
长度
可否为空
是否为主键
属性描述
userId
int
否
是
identity(1000,1)
username
varchar
10
否
否
用户名
password
varchar
10
否
否
密码
phone
varchar
11
是
否
电话
idCard
varchar
16
是
否
身份证号码
autograph
varchar
200
是
否
个性签名
表2收入表
属性名
数据类型
长度
可否为空
是否为主键
是否为外键
属性描述
iId
int
否
是
否
identity(20000,1)
userId
int
否
否
是
用户ID
iMoney
decimal
(10,2)
否
否
否
金额
iType
varchar
100
是
否
否
收入类型
iTime
smalldatetime
否
否
否
日期
iResource
varchar
200
是
否
否
收入来源
iRemark
varchar
200
是
否
否
备注
表3支出表
属性名
数据类型
长度
可否为空
是否为主键
是否为外键
属性描述
pId
int
否
是
否
identity(20000,1)
userId
int
否
否
是
用户ID
pMoney
decimal
(10,2)
否
否
否
金额
pTime
smalldatetime
否
否
否
日期
pType
varchar
100
是
否
否
消费类型
pGo
varchar
100
是
否
否
消费去向
pRemark
varchar
200
是
否
否
备注
5物理结构设计
数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。
所谓的“合理”主要有两个含义:
一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。
我们为本系统专门设计了数据库的物理结构,确定数据的存取方法和确定数据的存储结构。
物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。
因此在确定数据库的存储结构和存取方法之前,我们对数据库系统所支持的事务要进行了仔细分析,获得优化数据库物理设计的参数。
对于数据库查询事务,需要得到如下信息:
要查询的关系、查询条件(即选择条件)所涉及的属性、连接条件所涉及的属性、 查询的投影属性。
上述这些信息是确定关系存取方法的依据。
除此之外,还需要知道每个事务在各关系上运行的频率,某些事务可能具有严格的性能要求。
例如,某个事务必须在20秒内结束。
这种时间约束对于存取方法的选择有重大的影响。
需要了解每个事务的时间约束。
确定数据库的存取方法,就是确定建立哪些存储路径以实现快速存取数据库中的数据。
现行的DBMS一般都提供了多种存取方法,如索引法、HASH法等。
我们使用了最常用的索引法。
数据库的索引类似书的目录。
在书中,目录允许用户不必浏览全书就能迅速地找到所需要的位置。
在数据库中,索引也允许应用程序迅速找到表中的数据,而不必扫描整个数据库。
在书中,目录就是内容和相应页号的清单。
在数据库中,索引就是表中数据和相应存储位置的列表。
使用索引可以大大减少数据的查询时间。
但需要注意的是索引虽然能加速查询的速度,但是为数据库中的每张表都设置大量的索引并不是一个明智的做法。
这是因为增加索引也有其不利的一面:
首先,每个索引都将占用一定的存储空间,如果建立聚簇索引(会改变数据物理存储位置的一种索引),占用需要的空间就会更大;其次,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的更新速度。
所以我们只为用户表、收入表、支出表建立了索引,以加快查询速度。
6数据库的实施和维护
6.1建立数据库
分别创建3个数据库文件,数据库主文件、辅助文件、日志文件。
createdatabasePersonFinance
onprimary(--主文件
name=mFinance,
filename='D:
\finance\PersonFinance.mdf',
size=5MB,
maxsize=100MB,
filegrowth=1MB
),
(--辅助文件
name=nFinance,
filename='D:
\finance\PersonFinance.ndf',
size=5MB,
maxsize=50MB,
filegrowth=1MB
),
(--日志文件
name=lFinance,
filename='D:
\finance\PersonFinance.ldf',
size=5MB,
maxsize=50MB,
filegrowth=1MB
)
6.2建立数据表
6.2.1用户表
用户表主要存储了用户的基本信息(用户名等)和安全信息(密码、身份证等),用户可以根据自己的需要来创建多个用户名,其中admin为管理员,只有该用户可以对其他用户进行管理,以及数据的备份和恢复,建议用户在刚开始使用时创建一个用户名为”admin”的用户。
数据库SQL语句如下:
createtableUserInfo(
userIdintidentity(1000,1)primarykey,
usernamevarchar(10),
passwordvarchar(10)notnull,
phonevarchar(11),
idCardvarchar(16),
autographvarchar(200)
);
6.2.2收入表
收入表是用来存储所有用户关于收入信息的表,用户可以根据自己的用户名来查询自己的收入信息,数据库SQL语句如下:
createtableIncome(
iIdintidentity(20000,1)primarykey,
usernamevarchar(10)foreignkey(username)referencesUserInfo,
iMoneydecimal(10,2)default1notnull,
iTypevarchar(100),
i