家庭理财管理系统设计.docx
《家庭理财管理系统设计.docx》由会员分享,可在线阅读,更多相关《家庭理财管理系统设计.docx(34页珍藏版)》请在冰豆网上搜索。
![家庭理财管理系统设计.docx](https://file1.bdocx.com/fileroot1/2023-6/17/24bd6520-765b-4208-8a91-1186689dae14/24bd6520-765b-4208-8a91-1186689dae141.gif)
家庭理财管理系统设计
(此文档为word格式,下载后您可任意编辑修改!
)
《数据库原理及应用》课程设计
设计报告
院系
班级
学号
姓名
指导教师
题目
家庭财务管理系统
摘要:
家庭理财系统,即FamilyConductFinancialTransactionsSystem。
它利用计算机应用技术,使家庭理财逐步信息化,从而形成由家庭成员与计算机共同构成服务于家庭的人机信息财务管理系统。
随着计算机发展,家庭理财系统已经成为很多家庭财务管理的一个重要途径。
计算机的最大优点在于利用它能够高效准确地进行财务信息管理。
使用计算机进行信息财务管理,不仅提高了工作效率,而且大大的提高了其安全性。
家庭财务管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
关键字:
家庭理财;数据库;
Summary:
Thefamilyfinancialmanagementsystem,namelytheFamilyConductFinancialTransactionsSystem. Itusescomputertechnologytomakefamilyfinancialmanagementstepbystepinformation,toformthecomputerbyfamilymemberstogetherconstitutethehuman-computerinformationservicesinthefamilyfinancialmanagementsystem. Withthecomputerdevelopment,familyfinancialmanagementsystem,manyfamiliesinfinancialmanagementhasbecomeanimportantway. Thebiggestadvantageisthatthecomputercanuseittocarryoutefficientandaccuratefinancialinformationmanagement. Financialmanagementofinformationusingcomputersnotonlyimprovetheworkingefficiency,butalsogreatlyimproveitssafety.Familyfinancialmanagementsystemisatypicalmanagementinformationsystem(MIS),whichmainlyincludestheestablishmentandmaintenanceofback-enddatabaseandfront-endapplicationdevelopmentaspects. Requestfortheestablishmentofdataconsistencyandintegrity,datasecurity,agoodlibrary. Forthelatterapplicationpowerful,easytouseandsoon.
Keywords:
familyfinancialmanagement;database;
摘要:
1
1家庭理财管理2
1.1需求分析2
1.2数据库概念结构设计3
1.2.1概念结构设计3
1.2.2数据库设计5
1.3系统功能模块设计6
1.3.1系统功能模块划分6
1.3.2系统功能模块图7
1.4系统详细设计7
1.4.1登录界面设计7
1.4.2系统主界面9
1.4.3系统管理11
1.4.3.1修改密码11
1.4.4基础数据管理13
1.4.4.1家庭成员管理13
1.4.4.2收支项目管理15
1.4.5储蓄管理20
1.4.5.1银行账户管理20
1.4.6理财分析23
1.4.6.1查询明细23
1.4.6.2理财报告27
1.4.7帮助27
总结:
28
参考文献28
1家庭理财管理
1.1需求分析
长期以来人们使用传统的大脑记忆方式来管理家里的日常消费,这非常麻烦,靠大脑的记忆,只能记住很短的时间,所以常常为钱不知去向而烦恼。
而有时常常会想不起一些消费记录,家里的理财很是混乱。
综上所述,靠人脑记忆理财存在很大的不足。
而家庭理财系统则为家庭解决了上述问题,提供了快速,直观明了的理财过程,方便使用。
家庭理财管理系统是针对用户的要求,用计算机对自己的财务的收入、支出以及相关的各种信息,进行记录、修改、添加、删除而设计的一种现代化管理软件。
通过需求分析,本系统需要具有以下功能:
(1)要求系统具有良好的人机界面。
(2)能够完善家庭理财管理系统的各项功能,能成功的对用户各种信息进行管理。
(3)查询、修改、删除、添加数据方便,数据的安全性和可靠性好。
(4)系统最大限度地实现了易维护性和易操作性。
1.2数据库概念结构设计
1.2.1概念结构设计
建立系统数据模型的主要工具是实体-联系图,即E-R图。
E-R图的图形符号约定如表1-1所示:
表1-1E—R图的图形符号
图形符号
说明
表示实体集合
表示属性
表示关系集
将属性连接到实体集或将实体集连接到联系集
系统的E-R图,如图1-1所示,每个实体及属性如下:
家庭成员:
姓名、称呼、密码、出生日期
收入记录:
收入项目编号、收入项目名称、收入人员、收入金额、收入日期
支出记录:
支出项目编号、支出项目名称、支出人员、支出金额、支出日期
银行信息:
银行账号、银行名称、开户人、存款金额、开户日期
家庭成员关系E-R图
收入记录E-R图
支出记录E-R图
银行信息E-R图
图1-1系统总E-R图
1.2.2数据库设计
系统数据库名为:
财务管理,数据库中包括:
家庭成员表(member),收入记录表(income),支出记录表(outcome),银行信息表(bank),各个表的数据结构如下表1-1~表1-4所示。
表1-1家庭成员表(member)的数据结构
字段名
类型
描述
name
nchar(8)
姓名
call
nchar(10)
称呼
pwd
nchar(10)
密码
birth
nchar(20)
出生日期
表1-2收入记录表(income)的数据结构
字段名
类型
描述
inproID
smallint
收入项目编号
inproName
nchar(15)
收入项目名称
call
nchar(10)
收入人员
inmoney
int
收入金额
indata
nchar(15)
收入日期
表1-3支出记录表(outcome)的数据结构
字段名
类型
描述
outproID
smallint
支出项目编号
outproName
nchar(15)
支出项目名称
call
nchar(10)
支出人员
outmoney
int
支出金额
outdata
nchar(15)
支出日期
表1-4银行信息表(bank)的数据结构
字段名
类型
描述
bankID
nchar(15)
银行账号
bankName
nchar(20)
银行名称
call
nchar(10)
开户人
money
int
存款金额
data
nchar(15)
开户日期
表与表之间的关系:
图1-2表与表的关系图
1.3系统功能模块设计
1.3.1系统功能模块划分
具体说来,要求本系统具有以下几个功能模块:
用户登录模块、用户管理模块、收入模块、支出模块、密码管理模块、账目统计模块、报表输出模块以及查询模块。
各模块具体的需求描述如下:
(1)用户登录模块
用户登录:
验证用户的信息是否合法,以及验证用户是否为系统的合法用户。
(2)用户管理模块
在系统中主要包括添加用户、删除用户、更改用户、用户修改密码。
(3)收支输入模块
主要实现对收入和支出记录的添加、删除、修改。
(6)报表输出模块
主要实现对收入、支出记录的输出及打印。
(7)查询模块
主要实现对收入、支出记录按时间按类型查询、消费提醒(实际消费额快接近预消费额)、收入、支出记录的输出。
1.3.2系统功能模块图
图1-3系统功能模块结构图
1.4系统详细设计
启动VisualStudio2008,选择“文件”|“新建”|“项目”即命令,建立家庭理财管理应用程序。
下面介绍各窗体的程序设计。
1.4.1登录界面设计
登录界面的作用就是判断用户身份的合法性。
输入用户名和密码,若用户名、密码正确,单击[登录系统]按钮,即可进入主界面,否则不能进入。
登录界面效果,如图1-4所示:
图1-4登录界面
该窗体中设计了2个TextBox控件和两个Button控件。
各个控件的名称、作用如表4-7所示:
表
1-5登录界面主要控件设计
控件类型
控件名称
作用
TextBox
textBox1
用户名
textBox2
用户密码
Button
loginbtn
登录系统
exitbtn
退出系统
●登录界面部分代码:
privatevoidloginbtn_Click_1(objectsender,EventArgse)//登录
{
SqlConnectioncn=newSqlConnection("datasource=.;InitialCatalog=财务管理;IntegratedSecurity=true;");
try{
cn.Open();
SqlCommandcmd=newSqlCommand("selectname,pwdfrommemberwherename='"+textBox1.Text+"'andpwd='"+textBox2.Text+"'",cn);
cmd.ExecuteNonQuery();
MainFormform2=newMainForm(textBox1.Text);
form2.Show();
this.Hide();
}
catch(SqlExceptionex){
MessageBox.Show("用户名或密码错误!
请检查!
"+ex.Message);
}
finally{
cn.Close();
}
}
当单击“退出系统”按钮时,触发exitbtn_Click事件,关闭当前窗体。
代码如下:
privatevoidexitbtn_Click_1(objectsender,EventArgse)//退出
{
this.Close();
}
另外,在登录界面出现前,Login窗体设置为消隐,代码如下:
privatevoidtimer1_Tick(objectsender,EventArgse)
{
this.Opacity-=0.03;
if(this.Opacity==0){
timer1.Enabled=false;
this.FormBorderStyle=FormBorderStyle.Sizable;
this.Opacity=1;
label1.Visible=true;
label2.Visible=true;
label3.Visible=true;
textBox1.Visible=true;
textBox2.Visible=true;
loginbtn.Visible=true;
exitbtn.Visible=true;
}
}
在窗体加载时,启动Timer,代码如下:
privatevoidForm1_Load(objectsender,EventArgse)
{
timer1.Enabled=true;
}
1.4.2系统主界面
通过身份验证后,进入系统主界面,如图1-5所示,该主界面的作用就是显示用户所拥有的所有的功能菜单项,当用户单击相应的菜单项时,打开对应的模块窗口。
图1-5系统主界面
●系统主界面部分代码:
1、在主界面中选择【系统管理】|【修改密码】命令菜单,就会触发修改密码ToolStripMenuItem_Click事件,进入修改密码界面。
代码如下:
privatevoid修改密码ToolStripMenuItem1_Click(objectsender,EventArgse)
{
ModifyPwdform3=newModifyPwd(name);
form3.Show();
}
2、在主界面中选择【重新登录】命令菜单,就会触发重新登录ToolStripMenuItem_Click事,进入登录界面。
代码如下:
privatevoid重新登录ToolStripMenuItem2_Click(objectsender,EventArgse)
{
Loginf1=newLogin();
f1.Show();
this.Close();
}
3、在管理员主界面中选择【退出系统】命令菜单,就会触发退出系统ToolStripMenuItem_Click事件,整个程序退出。
代码如下:
privatevoid退出系统ToolStripMenuItem2_Click(objectsender,EventArgse)
{
this.Close();
}
1.4.3系统管理
1.4.3.1修改密码
在主界面中选择【系统管理】|【修改密码】命令菜单,即可进入修改密码界面,如图1-6所示。
该窗体中需要提供的信息包括:
用户名、密码、确认密码。
信息录入后单击“确认”按钮,代码如下:
图1-6修改密码界面
在该窗体中主要设计了4个TextBox控件、2个Button控件。
各个控件的名称、作用如表5-8所示。
表1-6添加管理员界面控件设计
控件类型
控件名称
作用
TextBox
textBox1
用户名
textBox2
原密码
textBox3
用户新密码
textBox4
确认密码
Button
Button1
确认
Button2
取消
1、单击“确认”按钮时触发button1_Click事件,第一步判断原密码是否正确;若正确,第二步判断两次密码是否相同;若相同则修改密码。
代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)//确认
{
Stringpwd="";
SqlConnectioncn=newSqlConnection("datasource=.;InitialCatalog=财务管理;IntegratedSecurity=true;");
try{
cn.Open();
SqlCommandcheckCmd=newSqlCommand("selectpwdfrommemberwherename='"+textBox1.Text+"'",cn);
SqlDataReaderdr=checkCmd.ExecuteReader();
if(dr.Read()){
pwd=dr[0].ToString();
}
if(textBox2.Text!
=pwd.Trim()){
MessageBox.Show("原密码输入错误!
请重新输入!
");
}
if(textBox2.Text==""||textBox3.Text==""||textBox4.Text==""){
MessageBox.Show("警告:
密码不能为空!
");
}
if(textBox3.Text!
=textBox4.Text){
MessageBox.Show("警告:
两次输入的密码必须相同!
");
}
}
catch(SqlExceptionex){
MessageBox.Show(ex.Message);
}
finally{
cn.Close();
}
try{
cn.Open();
SqlCommandmodifyCmd=newSqlCommand("updatemembersetpwd='"+textBox3.Text+"'wherename='"+textBox1.Text+"'",cn);
modifyCmd.ExecuteNonQuery();
MessageBox.Show("修改成功!
");
this.Close();
}
catch(SqlExceptionex){
MessageBox.Show("修改失败!
"+ex.Message);
}
finally{
cn.Close();
}
}
2、单击“取消”按钮时,将触发cancel_Click事件,关闭当前窗体。
代码如下:
privatevoidcancelbtn_Click(objectsender,EventArgse)
{
this.Close();
}
1.4.4基础数据管理
1.4.4.1家庭成员管理
在主界面中选择【基础数据管理】|【家庭成员管理】命令菜单,即可进入家庭成员管理界面,如图1-7所示。
图1-7家庭成员管理
●家庭成员添加界面主要代码:
1、窗体加载时触发Form4_Load事件,通过该事件向dataGridView控件中填入member表的内容,代码如下:
voiddisplay()
{
ds.Clear();
SqlCommandcmd=newSqlCommand("selectname'姓名',pwd'密码',call'称呼',birth'出生日期'frommember",cn);
da=newSqlDataAdapter(cmd);
da.Fill(ds,"member");
dataGridView1.DataSource=ds.Tables["member"];
}
privatevoidForm4_Load(objectsender,EventArgse)
{
display();
cn.Open();
channametxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["姓名"].ColumnName);
chanpwdtxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["密码"].ColumnName);
chancalltxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["称呼"].ColumnName);
chanbirtxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["出生日期"].ColumnName);
delnametxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["姓名"].ColumnName);
delpwdtxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["密码"].ColumnName);
delcalltxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["称呼"].ColumnName);
delbirtxb.DataBindings.Add("Text",ds.Tables["member"],ds.Tables["member"].Columns["出生日期"].ColumnName);
cn.Close();
}
2、点击“添加“按钮时,触发addbtn_Click事件,向member表中添加一条信息,并在dataGridView中显示,代码如下:
privatevoidaddbtn_Click(objectsender,EventArgse)//添加
{
Stringstr=String.Format("insertintomembervalues('{0}','{1}','{2}','{3}')",addnametxb.Text.Trim(),addcalltxb.Text.Trim(),addpwdtxb.Text.Trim(),addbirtxb.Text.Trim());
SqlCommandcmd=newSqlCommand(str,cn);
try{
cn.Open();
cmd.ExecuteNonQuery();
display();
MessageBox.Show("添加成功!
");
}
catch(SqlExceptionex){
MessageBox.Show(ex.Message);
}
finally{
cn.Close();
}
}
3、点击“修改“按钮时,触发modifybtn_Click事件,修改member表中的某条信息,并在dataGridView中显示,代码如下:
privatevoidmodifybtn_Click(objectsender,EventArgse)//修改
{
Stringstr=String.Format("updatemembersetcall='"+chancalltxb.Text.Trim()+"',pwd='"+chanpwdtxb.Text.Trim()+"',birth='"+chanbirtxb.Text.T