资源描述
项目名称:家庭财务管理系统
专业班级
13级软2
学号
姓名
辜建波
完成日期
12月29日
指导老师
孔世明
软件工程学院
目录
一、设计目标 4
二、需求分析 6
三、模块分析及设计 8
(一)登陆管理模块 9
(二)家庭组员管理 10
(三)收支项目管理 10
四、数据库设计说明 12
4. 1数据表 12
(1)family表 12
(3)borrow表 13
4.2数据库完整性和安全性 13
五、制作过程及关键点 15
登录界面 15
管理界面 24
主页界面 25
家庭组员管理界面 25
家庭组员管理-添加界面 26
家庭项目管理界面 27
家庭项目管理-添加界面 28
收支报表管理界面 29
六、实现管理系统模块代码 34
七、设计测试及总结 66
八、参考文件 68
一、设计目标
社会发展越来越快,大家收入增加和家庭资产种类增多,再加上市场经济多种不确定性原因越来越大,以至于影响到家庭各项活动,家庭理财普遍得到了大家重视。伴随计算机、网络技术高速发展,怎样做好家庭理财又有了新方法方法,利用电脑管理个人财产,包含银行存款、信用卡、现金、借款和股票、投资等。可方便于管理多种资金流入和流出,家庭资产增加和降低,金融投资项目标买入和卖出,使用户能更完整更清楚了解自己家庭财务情况和资产、投资变动情况,帮助用户轻而易举管理自己家庭财务,再将这项技术利用到智能移动设备上面,就更能对家庭财务情况随时掌控和管理。在现代财务管理中借助Intranet/Internet为个人及家庭建立一个财务管理系统,将大大提升财务管理水平,这也是当初选择将家庭财务管理系统做为此次毕业设计初衷。本系统目标是处理个人或家庭财务管理需求,能够根据用户要求进行高效计算、统计,显示等任务,为用户日常生活中财务管理提供便利。 本系统属于家庭财务管理系统,能够满足个人和家庭财务管理需求,提供收入支出信息统计,分类统计各项收支账户管理等功效。系统实现在技术上充足采取Java Web组件技术,方便开发、维护和升级。本系统是针对用户要求用计算机,对自己财务收入、支出和相关多种信息,进行统计、修改、添加、删除而设计一个现代化管理软件。本财务管理系统需要含有以下功效:能够实现个人财务管理方面各项功效,能成功对用户多种信息进行管理、查询、修改、删除、添加数据方便,数据稳定性和可靠性好,良好人机交互界面,对于没有专业计算机基础人员,经过简单介绍后能够快速掌握和熟练操作,在实际应用过程中便于信息内容管理和维护。
经过设计达成熟练掌握.NET基础结构和C#语言基础知识和技能;基础掌握面向对象程序开发基础思绪和方法;掌握ADO.NET数据库开发基础知识;能够利用所学基础知识和技能,进行简单数据库应用程序设计。
依据题目标要求,给出处理问题方案,经过分析问题、分解问题来处理问题,最终达成熟练掌握C#语言利用和Visual Studio工具使用。
二、需求分析
家庭财务管理系统是针对家庭财务软件,她能轻松帮你完成记帐和理财计划。用户能够自由设置收支类型(如生活费、通讯费、交通费、水电费、医药费等类型),能够制订每个月收入支出预算,还能够具体统计出各项家庭财务指标,便于您分析自己财务。其它功效如:家庭亲友通讯录、家庭备忘录、家庭关键信息等。具体模块应包含:记账、资产管理、负债管理、投资理财管理、计划和提醒、家庭信息管理、统计报表(比如现金流报表、资产负债报表等)等模块。
本系统需要完成功效有:
1.登陆管理
系统管理员能够设置家庭组员,修改或删除。家庭组员应该包含“姓名,登录密码”等。家庭组员能够用姓名和登录密码登录家庭财务管理系统进行记账管理。
2. 家庭组员管理
以设置家庭组员,修改或删除。家庭组员应该包含“姓名,登录密码”等。家庭组员能够用姓名和登录密码登录家庭财务管理系统进行记账管理。
3. 收支项目管理
能够设置收支项目,修改或删除。收支项目要求分为两层,比如“车辆维护-保养费”;任意一层次全部可作为收支项目记账,用户在不清楚支出是否属于“保养费”时候,能够选择大类“车辆维护”作为支出项。
4.家庭组员收支报表管理
统计家庭组员一定时间内收支情况。
5.退出管理
三、模块分析及设计
此次设计关键分为四个模块:登陆管理模块、家庭组员管理模块、收支项目管理模块、家庭组员收支报表管理模块,具体能够参考下图:
(一)登陆管理模块
使用者:用户
目标:使用不一样角色进行登陆管理操作 基础事件流:
1、进入登陆界面,本用例开始
2、一般用户经过注册后进入系统进行操作。
3、超级用户进入系统后进行管理操,用例结束。
(二)家庭组员管理
1.增加家庭组员
使用者:管理员
目标:增加家庭组员
基础事件流:
1.1、用户进入增加家庭组员管理界面,本用例开始
1.2、系统显示家庭组员信息输入界面,用户输入家庭组员姓名、性别、出身日期、年纪,身高,体重。
1.3、用户确定输入信息,系统确定姓名是否唯一,若唯一,则增加组员信息,本用例结束。不然,提醒该用户已存在。
2.修改家庭组员信息
3.删除家庭组员信息
(三)收支项目管理
1.查看收支项目
使用者:用户
目标:查看收支具体信息
基础事件流:
1、进入收支项目管理界面,点击查看,本用例开始。
2、查看具体项目收支情况。
3、点击确定,用例结束。
2.编辑收支项目
使用者:用户
目标:编辑收支条目
基础事件流:
1、进入收支项目管理界面,点击编辑,用例开始。
2、对目前选中收支条目进行修改编辑。
3、编辑完后点确定,用例结束。
3.删除收支项目
使用者:用户
目标:删除条目
基础事件流:
1、进入收支项目管理界面,点击删除,本用例开始。
2、对目前选中收支条目进行删除操作。
3、点击确定删除,用例结束。
四、数据库设计说明
4. 1数据表
(1)family表
家庭表也是对系统登录权限操作,此表用来统计家庭组员信息,方便家庭组员登录程序。
表1 家庭组员信息表
字段名
字段类型
非空
说明
姓名
整型
姓名
账号
文本
账号
密码
文本
密码
身份
文本
是
身份
生日
文本
生日
(2)item表
收入信息表,此表用来存放该家庭财务收入信息。
表2 功效信息表
字段名
字段类型
非空
说明
编号
自动编号
是
自动编号
日期
文本
入账日期
金额
货币
收入金额
人员
文本
提议统计者
身份
文本
身份
项目
文本
项目
说明
文本
说明
(3)borrow表
字段名
字段类型
非空
说明
Borrowed
自动编号
是
自动编号
Fromname
文本
姓名
Role
文本
身份
Borrwmoney
货币
借出金额
Borrwdate
日期/时间
借出时间
Borrwreason
文本
借出理由
4.2数据库完整性和安全性
数据库安全性是指保护数据库以预防不正当使用所造成数据泄露,更改,或破坏.安全性问题不是数据库系统所独有,全部计算机系统全部有这个问题,只是在数据库系统中大量数据集中存放,而且为很多最终用户直接共享,从而使安全笥问题更为突出,系统安全保护方法是否有效是数据库系统关键指标之一.
数据库完整性是指数据正确性和相容性.比如本系统中;学生学号必需唯一;性别只能是男或女;学生所在系统必需是学校已开设系.等.数据库是否含有完整性关系到数据库系统能否真实地反应现实世界,所以维护数据库完事性是很关键.
五、制作过程及关键点
登录界面
特点描述:
1.和常见账号设置不一样,我用户名用是组合框(comboBox)来装载,登入框架一载入,则从数据库里读入用户名,方便用户体验。
2.取消注册功效,原因是本系统预防任意人员注册即可使用本系统。假如需要添加登录用户,需要进入系统才能添加,或数据库添加。
3.实现身份字段控制权限访问。关键分系统管理员和非系统管理员。系统管理员最高权限,以后者只限于查找和修改个人密码。
FormLogin.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class FormLogin : Form
{
string ConnectionString = "Data Source=(local); " +
"Initial Catalog=家庭财务管理系统;Persist Security Info=True; " +
"User ID=sa;Password=xyz614848";
//封装链接字符串,协调统一数据库链接信息
public string getCS()
{
return ConnectionString;
}
SqlConnection conn;
string strSQL;
SqlCommand Command;
SqlDataReader reader;
public FormLogin()
{
InitializeComponent();
}
static string Uname = "";
//封装登录用户名,便于登录后显示
private void setUname(string s)
{
Uname = s;
}
public string getUname()
{
return Uname;
}
static string Role = "";
//封装用户身份
private void setRole(string s)
{
Role = s;
}
public string getRole()
{
return Role;
}
//初始化参数
private void FormLogin_Load(object sender, EventArgs e)
{
//取出系统全部用户名
//显示在下拉列表,这么用户登录时候
//选择用户名就能够了,不用再输入用户名了
conn = new SqlConnection(ConnectionString);
strSQL = "SELECT 账号 FROM family";
try
{
Command = new SqlCommand(strSQL, conn);
conn.Open();
reader = Command.ExecuteReader();//结果集放到reader对象中
int flag = 0;
//把数据库账号加载到组合框中
while (reader.Read())
{
boBox1.Items.Add(reader[0].ToString());
//假如能加载账号,则选中密码框
if (flag == 0)
{
textBox1.Focus();
textBox1.Select();
}
flag++;
}
//假如系统存在用户,则默认选中第一个用户
if (flag > 0)
boBox1.SelectedIndex = 0;
}
catch (Exception ex)
{
ex.GetBaseException();
}
finally
{
reader.Close();
Command.Dispose();
}
}
//确定,完成登陆
private void button1_Click(object sender, EventArgs e)
{
int flag = 0;
if (textBox1.Text == "" || comboBox1.Text == "")
{
showError("账号或密码为空!");//第一个错误,账号或密码为空
return;
}
flag = check();
if (flag == 1)
{
setUname(comboBox1.Text);
FormManage fr2 = new FormManage();
this.Hide();
fr2.ShowDialog();
this.Close();
}
else
{
showError("账号或密码不正确!");//第二种错误,账号或密码不正确
}
}
//验证账号密码方法
private int check()
{
try
{
conn = new SqlConnection(ConnectionString);
strSQL = "SELECT * FROM family";
Command = new SqlCommand(strSQL, conn);
conn.Open();
reader = Command.ExecuteReader();//结果集放到reader对象中
object[] row = new object[reader.FieldCount];
while (reader.Read() == true)
{
reader.GetValues(row); //获取结果集目前行
if (comboBox1.Text == row[0].ToString() && textBox1.Text == row[2].ToString())
{
//存入登录成功用户身份
Command.CommandText = "SELECT 身份 FROM family where 账号=" + comboBox1.Text+"";
conn.Close();
conn.Open();
setRole(Command.ExecuteScalar().ToString());
return 1;
}
}
}
catch (Exception e)
{
e.GetBaseException();
return 0;
}
return 0;
}
//弹犯错误框
private void showError(string errorInfo){
textBox1.Text = "";
comboBox1.Text = "";
FormWarn fw = new FormWarn(errorInfo);
fw.ShowDialog();
}
//取消按钮
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = "";
comboBox1.Text = "";
this.Close();
}
}
}
管理界面
设计界面
特点:
1.我管理界面采取panel重合和显示隐藏结构。红色框区域属于可变区域。
2.避免反复关闭和加载窗体,实现管只需加载一次。
主页界面
特点:
1.第一红框实现时间显示
2.第二红框实现登录名显示PS登录模块中封装了登录成功用户名
家庭组员管理界面
家庭组员管理-添加界面
家庭项目管理界面
家庭项目管理-添加界面
特点:
其中家庭组员管理-添加界面和家庭项目管理-添加界面是同一个界面,只是控制了labeltext属性和显示单选框和多行属性文本框。
收支报表管理界面
特点:
除了简单月,年,总分别统计外,还加入了网上找静态圆饼图,不过经我给该图方法加了两个形参后,已经和数据库连接,实现动态显示效果
最终手工部分,我加入了简单菜单工具栏。
当然,假如是非系统管理员,则界面被限制
六、实现管理系统模块代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Windows.Forms.DataVisualization.Charting;//chart命令空间
namespace WindowsFormsApplication1
{
public partial class FormManage : Form
{
//初始化参数
string ConnectionString="";
private SqlConnection conn = null;
private SqlDataAdapter DataAdapter = null;
private DataSet dataset = null;
private SqlCommand cmd = null;
string curNo;
public FormManage()
{
InitializeComponent();
}
/*-----界面转换方法开始!!-----*/
//显示主页背景
private void pIndex_Click(object sender, EventArgs e)
{
checkPage("主页");
}
//pFmyMng2取消按钮,跳转到pShowData
private void addMemCancel_Click(object sender, EventArgs e)
{
if (lAddData.Text == "添加组员")
{
checkPage("家庭组员管理");
}
if (lAddData.Text == "添加项目")
{
checkPage("收支项目管理");
}
}
//家庭组员管理
private void iFmyMng_Click(object sender, EventArgs e)
{
checkPage("家庭组员管理");
}
//重新登录
private void reLoad_Click(object sender, EventArgs e)
{
this.Hide();
(new FormLogin()).ShowDialog();
this.Close();
}
//安全退出
private void exist_Click(object sender, EventArgs e)
{
Application.Exit();
}
//添加组员按钮,跳转到pFmyMng2
private void iAddMem_Click(object sender, EventArgs e)
{
checkPage("添加组员");
}
//账目收支管理
private void iItemMng_Click(object sender, EventArgs e)
{
checkPage("收支项目管理");
}
//收支报表管理
private void iGraphMng_Click(object sender, EventArgs e)
{
checkPage("收支报表管理");
}
//添加项目
private void pAddItem_Click(object sender, EventArgs e)
{
checkPage("添加项目");
}
//页面转换方法
private void checkPage(String str) {
//关闭全部页面显示PANEL
pFmyMng.Visible = false;
pFmyMng1.Visible = false;
pAddData.Visible = false;
pShowData.Visible = false;
PitemMng1.Visible = false;
pTableMng.Visible = false;
switch (str) {
case "家庭组员管理":
{
pFmyMng.Visible = true;
pShowData.Visible = true;
if ((new FormLogin()).getRole() == "系统管理员")
{
pFmyMng1.Visible = true;
}
itemText.Text = str;
showData(str);
break;
}
case "添加组员":
{
pFmyMng.Visible = true;
pAddData.Visible = true;
pFmyMng1.Visible = true;
groupBox1.Visible = false;
lAdd6.Visible = false;
tbAdd6.Visible = false;
lAdd1.Text = "账号:";
lAdd2.Text = "密码:";
lAdd3.Text = "姓名:";
lAdd4.Text = "生日:";
lAddData.Text = str;
break;
}
case "收支项目管理":
{
pFmyMng.Visible = true;
pShowData.Visible = true;
if ((new FormLogin()).getRole() == "系统管理员")
{
PitemMng1.Visible = true;
}
itemText.Text = str;
showData(str);
break;
}
case "收支报表管理":
{
//pFmyMng.Visible = true;
//pShowData.Visible = true;
pFmyMng.Visible = true;
pTableMng.Visible = true;
listView1.Clear();
chart1.Visible=false;
break;
}
case "添加项目":
{
pFmyMng.Visible = true;
pAddData.Visible = true;
groupBox1.Visible = true;
lAdd6.Visible = true;
tbAdd6.Visible = true;
lAddData.Text = str;
lAdd1.Text = "项目:";
lAdd2.Text = "人员:";
lAdd3.Text = "金额:";
lAdd4.Text = "日期:";
break;
}
default: break;
}
}
/*-----界面转换方法结束!!-----*/
/********************************/
/*-----功效模块方法开始!!-----*/
//载入相关参数
private void FormManage_Load(object sender, EventArgs e)
{
展开阅读全文