基于 asp.net家庭财务管理系统设计与实现

博主介绍:专注于Java .net  php phython  小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作


☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟

我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

1 引言

1.1 项目背景

随着计算机技术的飞速发展,计算机在日常管理中应用迅速得到了普及,利用计算机进行家庭日常财务收支的管理无疑是一条行之有效且高效的办法。本系统结合当前实际的家庭收支分配状况,经过实际的需求分析,采用功能强大的Microsoft Visual Studio 2005(Asp.net,c#)作为开发工具而开发出来的网络版家庭财务管理系统。

整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成的家庭收支分类,收入支出记帐,借入借出资金,明细统计等分析过程,经过实际使用证明,本文所设计的家庭财务管理系统可以满足家庭,个人从事财务管理方面的需要。

1.2 研究意义

收支管理是一个家庭、单位和个人日常生活不可缺少一部分,也是财务管理的重要组成部分。它的内容对于财务管理者来说都至关重要,所以家庭财务管理系统应该能够为用户提供完整,正确和灵活的理财信息和快捷的分析手段。但一直以来人们使用传统人工的方式文件、纸张记帐管理模式,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 所以利用计算机实现财务信息的管理的自动化将势在必行。

随着计算机技术的飞速发展,计算机以及计算机控制的自动处理技术已融入人类社会的各个领域并发挥着越来越重要的作用。对于当今的科学信息是一次重大的飞越,为人们的生活、工作、学习带来潜移默化的影响。今天我们使用计算机对家庭财务信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高家庭财务管理的效率。面对目前的实际状况,迫切需要开发一个新系统来适应这一些工作。

1.3 本文所做的工作

家庭财务管理系统是基于B/S体系结构的网络应用系统,其中牵涉到网站设计、网络数据库的连接和基于WEB应用程序开发等相关技术。

为了开发该家庭财务管理系统,并且使系统能够真正达到“适用、好用”的标准,本人认真学习了ASP.NET程序设计(基于C#语言)、数据库搭建、软件工程等诸多相关教程以及构建网站所需技术的理论知识。对于以下网页制作工具:Dreamweaver、 Flash、 SwishMX以及图像处理工具Photoshop做了深入的学习,基本掌握其使用方法与技巧,为网上书店系统的站点设计做好技术的支持。熟练掌握SQL Server中数据库的建立、管理与维护;利用ASP.NET(Active Server Pages)技术访问后台数据库;借助IIS(Internet Information Server)在网上进行信息发布以及对系统性能进行优化等相关技术。 

2 系统解决方案

2.1 相关技术

2.1.1 Visual Studio 2005平台和C#语言介绍

Visual Studio 2005是一个功能强大、高效并且可扩展的编程环境。有许多激动人心的新功能,它提供统一的集成开发环境,支持在同样的开发环境里用Visual Basic、Visual C++、Visual C#、Visual J#和其他数十种编程语言,可以编写、调试和部署各种应用程序。它充分展现了应用程序的开发潜能、并提供了生成应用程序的所需要的工具和技术。这些应用程序给当今的企业、机构提供了强大的支持,为开发下一代以XML Web服务为中心的应用程序而设计,并推动下一代基于XML Web服务软件的发展,是有始以来功能最强大、最受欢迎的软件开发工具。

C#(发音为“C Sharp”)是一门简单、现代、优雅、面向对象、类型安全、平台独立的一门新型组件编程语言。它虽然是一种新语言,但却很难在这种语言中找到新的概念,其语法风格不仅源自C/C++家族,而且融合了Visual Basic的高效和C/C++强大,因此是微软为奠定其下一互联网霸主地位而打造的Microsoft.NET平台的主流语言。依本人看来,优点不外乎以下两方面:

其一,对于花费很多时间学会C、C++语言的程序员来说,可以不必丢弃以前的知识,就可以使用这种新的语言开发程序,尽管C#中有一些新概念、新技术和新函数,但一般而言它的语言及其语法是跟C、C++类似的,而且对于用C++编写好的代码也可被重用,主要原因是C#具有调用已有代码和系统库中的库函数的机制;

其二,组件编程已经成为当今世界软件业面向下一代程序开发的一致选择,是90年代面向对象编程的深度发展。C#生逢其时,占尽天时地利,“第一等的面向组件编程的支持”也决不是简单说说那么轻松。实际上,组件特性已经深深植入C#语言的各个层面,可为是C#锐利(Sharp)之处。

2.1.2 ASP.NET简介

ASP.NET是Microsoft.net的一部分,作为战略产品,不仅仅是 Active Server Page (ASP) 的下一个版本,它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。

ASP.NET 可以用已编译的基于 .NET环境的可以用任何与 .NET 兼容的语言(包括 Visual Basic .NET、C# 和 JScript .NET.)创作应用程序。另外,任何 ASP.NET 应用程序都可以使用整个 .NET Framework,开发人员可以方便地获得这些技术,其中包括托管的公共语言运行库环境、类型安全、继承等等。

ASP.NET 可以无缝地与 WYSIWYG HTML 编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。

因此,对于程序员来说,可以更方便地开发Web应用程序,这些是跟微软为ASP. NET设计的以下策略分不开的:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等。 

2.1.3 SQL Server 2005简介

 SQL Server 2005 是Microsoft 公司2005年推出的SQL Server 数据库管理系统,它是一个杰出的数据库平台,可用于大型联机事务处理、数据仓库以及电子商务等。 其特点有如下几点:

1.真正的客户机/服务器体系结构。

2.图形化用户界面。

3.丰富的编程接口工具。

4.SQL Server与Windows NT完全集成。

5.具有很好的伸缩性。

6.对Web技术的支持。

7.SQL Server提供数据仓库功能。

2.1.4 ADO.NET简介

ADO.NET是由.NET framework为与数据库中的数据进行交互而提供的一组对象类的名称。我们知道,面向对象编程的有关主要优点是可以把各种复杂的功能封装在一个自包含的单元中,接着要处理的就是—个定义好的接口中,它由一些方法和属性组成。

在ADO.NET中,我们将处理断开连接的数据集,在网站的访问者请求数据时,首先建立连接,传送数据,之后关闭连接;接着,访问者就可以修改数据,但这些修改不会在数据源中立即更新(如果需要对访问者所做的修改更新到数据库,必须重新打开连接)。这种断开连接进行访问数据库的最大优点是效率高、可伸缩性好。在以往的数据库访问中必须为用户一直保持连接,直到该用户的会话结束为止,而Web中可能同时处理上千个并行用户,可想而知,如果为每个用户同时保持连接在需要的系统资源是非常昂贵的。因此,使用断开式连接数据可以提高应用程序的执行效率,并能处理更多的工作负载(即它们的伸缩性更好)。

2.2 体系结构

2.2.1 B/S系统介绍

B/S(browser/server,简称B/S)模式,即浏览器/服务器模式,它是基于Intranet 的需求而出现并发展的。

2.2.2 Browser/Server模型工作步骤

B/S模型的工作步骤一般包括以下七步:

1.用户打开浏览器。

2.输入或自动启动主页的URL (Uniform Resource Locator),浏览器生成一个HTTP请求并把它发给指定的Internet服务器。

3.服务器发回主页的HTML (Hypertext Markup Language)页面。浏览器将其显示在屏幕上。

4.用户在主页面上进行操作(如:点击、键入等)。

5.浏览器生成相应的HTTP要求,发送给相应的服务器。

6.服务器收到请求后,查看本站点是否拥有这个文档。如果有,就将它放入响应信息中返回给浏览器。

7.浏览器收到响应,查看头文件的格式,判断能否直接显示。否则,调用对应的帮助应用程序或外挂程序处理显示。

2.3 技术开发方案

我们根据应用系统的有关规范标准和具体业务需求,结合软件开发技术发展状况,选择了以下相应系统软件或工具软件,以确定科学、合理的开发方案。具体如下表所述:

类别

软件名称

软件用途

数据库

SQL Server 2005

后台数据库

Web服务

IIS

后台服务器

开发工具

Visual Studio 2005

后台编码,页面设计

2.4 系统技术平台

硬件:

WEB服务器1台、客户机若干台、网卡、集线器等。

软件:

WEB服务器为Windows2000及以上版本,安装有IIS。

客户机安装Internet Explorer或Netscape Communicator。

相关软件,如:IE、SQL Server 2005、VS2005等等。

3 系统设计说明

3.1. 系统主要功能模块图

家庭财务管理系统由用户管理、基础数据管理、收支管理、存储管理、借还款管理、财务分析组成,如下图所示。

家庭财务管理系统功能模块结构图

3.2系统各功能模块分析

用户管理模块:创建系统用户,修改删除用户的基本信息。

收支管理模块:添加、修改、删除和查询用户的收入支出信息。

存储管理模块:添加、修改、删除和查询用户的银行储蓄信息。

借还款管理模块:添加、修改、删除和查询用户的借款和还款信息。

基本数据管理模块:添加、修改、删除和查询用户的收入项目和支出项目的信息。

注:财务分析模块包含在以上的模块中。

4数据库设计

该系统采用SQL Server2005作为后台数据库进行存储所有与系统相关的数据。根据系统功能需要主要包括以下数据表:用户信息表(family)、收入信息表(ininfo)、支出信息表(outinfo)、收入项目表 (initem)、支出项目表(outitem)、活期存储信息表(liveaccount)、定期存储信息表(fixaccount)、借入表(borrow)和借出表(lend)。

4.1 数据模型

数据模型是对现实世界数据的抽象表示,其主要目的是规划具体事务处理使用到的数据,建立相应的数据库,保持与应用程序开发之间的简洁性,有利于数据库的规范化、性能优化以及数据的简洁性。

4.1.1 E_R模型

ER模型是数据进行第一层抽象的表示方法。它的主要成分包括:实体、联系和属性。使用这三种成分,我们可以建立许多数据库应用系统的E_R模型。

家庭财务管理系统的E-R图如下图所示

4.2 数据表设计

Family表(用户信息表)

列名

数据类型

长度

说明

name

Varchar

10

姓名

uname

Varchar

15

用户名(主键)

pwd

Varchar

20

密码

role

Varchar

8

角色

Birthday

Smalldatetime

4

生日

inInfo表(收入表)

列名

数据类型

长度

说明

inInfoID

Varchar

4

收入编号(主键)

Indate

Smalldatetime

4

入库时间

inType

Varchar

10

资金方式

Inmoney

Int

4

数额

inItem

Varchar

10

收入项目(外键)

Infrom

Varchar

10

资金来源

role

Varchar

8

角色或称呼(外键)

Others

Varchar

30

备注

inItem表(收入项目表)

列名

数据类型

长度

说明

inID

Varchar

4

收入项目编号(主键)

inItem

Varchar

10

收入项目名称

outInfo表(支出表)

列名

数据类型

长度

说明

outInfoID

Varchar

4

支出编号(主键)

outdate

Smalldatetime

4

支出时间

outType

Varchar

10

资金方式

outmoney

Int

4

数额

outItem

Varchar

10

支出项目(外键)

outTo

Varchar

10

支出去路

role

Varchar

8

角色或称呼(外键)

Others

Varchar

30

备注

outItem表(支出项目表)

列名

数据类型

长度

说明

outID

Varchar

4

支出项目编号(主键)

outItem

Varchar

10

支出项目名称

liveAccount表(活期存储表)

列名

数据类型

长度

说明

liveID

Varchar

20

活期银行帐号(主键)

Livename

Varchar

20

活期银行名称

Liveaddress

Varchar

30

活期银行地址

liveDate

Smalldatetime

4

存储时间

Livemoney

Int

4

存储金额

role

Varchar

8

角色或称呼(外键)

State

bit

5

存储状态

fixAccount表(定期存储表)

列名

数据类型

长度

说明

fixID

Varchar

20

定期银行帐号(主键)

fixname

Varchar

20

定期银行名称

fixaddress

Varchar

30

定期银行地址

fixDate

Smalldatetime

4

存储时间

fixmoney

Int

4

存储金额

Year

float

4

存储年限

Lilv

Float

4

利率

role

Varchar

8

角色或称呼(外键)

State

bit

5

存储状态

borrow表(借入表)------家庭成员内的借款

列名

数据类型

长度

说明

borrowID

Varchar

4

借入编号(主键)

Fromname

varchar

10

借入人名称

role

Varchar

8

角色或称呼

borrowDate

Smalldatetime

4

借款日期

borrowmoney

Int

4

借款数额

borrowreason

varchar

30

借款原因

State

bit

5

借款状态

Others

varchar

30

备注

Lend表(借出表)------家庭成员借给外人

列名

数据类型

长度

说明

lendID

Varchar

4

借出编号(主键)

toname

varchar

10

借款人名称

role

Varchar

8

角色或称呼(外键)

lendDate

Smalldatetime

4

借款日期

lendmoney

Int

4

借款数额

lendreason

varchar

30

借款原因

State

bit

5

借款状态

Others

varchar

30

备注

5.数据库连接设计

5.1.实现与数据库连接及操作的方法

(1)建立一个数据库连接类(clsDB.cs),主要代码如下:

public class clsDB

{

    public SqlConnection connection;

public clsDB()

{

        connection = new SqlConnection(connectionstring());

        connection.Open();

}

    public string connectionstring()//获取连接字符串

    {

        return System.Configuration.ConfigurationManager.AppSettings["connectionstring"];

    }

    public SqlDataReader GetResultASDataReader(string strsql)//返回datareader

    {

        SqlCommand cmd = new SqlCommand(strsql, connection);

        if (connection.State == ConnectionState.Closed)

            connection.Open();

        return cmd.ExecuteReader();

    }

    public string ExecuteNoReturn(string strsql, string strtip)

    {

        string strreturn;

        SqlCommand mycommand = new SqlCommand(strsql, connection);

        try

        {

            if (connection.State == ConnectionState.Closed)

                connection.Open();

            mycommand.ExecuteNonQuery();

            strreturn = strtip + "成功";

        }

        catch

        {

            strreturn = strtip + "失败";

        }

        mycommand.Dispose();

        connection.Close();

        return strreturn;

    }

    public void killme()

    {

        connection.Dispose();

    }

    public DataTable readtable(string strsql)//返回一个数据表

    {

        DataTable dt = new DataTable();

        SqlConnection conn = new SqlConnection(connectionstring());

        conn.Open();

        SqlDataAdapter adapter = new SqlDataAdapter(strsql, conn);

        adapter.Fill(dt);

        conn.Close();

        return dt;

       

    }

    public void caozuo(string strsql)//基本的操作

    {

        SqlConnection con = new SqlConnection(connectionstring());

        SqlCommand cmd = new SqlCommand(strsql,con);

        con.Open();

        cmd.ExecuteNonQuery();

        con.Close();

    }

}

此种方法的好处是建立一个数据库连接类,每当需要连接数据库时调用(clsDB.cs)即可,方便、快捷。

(2)在Web配置文件中(Web.config)自定义一个连接字符串,该字符串作为常量被使用,主要代码如下:

<appSettings>

<add key="connectionstring" value="Data Source=.;Initial Catalog=familywealth;Integrated Security=True"/>

</appSettings>每当需要连接字符串时,从文件Web.config中读取连接字符串。主要代码如下:

  public string connectionstring()

    {

        return System.Configuration.ConfigurationManager.AppSettings["connectionstring"];

    }

使用时需要调用域名空间using System.Configuration ;

5.2用户管理模块设计

5.2.1新用户注册模块的实现

主要实现代码如下:

      protected void createuser_Click1(object sender, EventArgs e)

    {

        try

        {

           

            if ((pwd1box.Text == pwd2box.Text )&&( uidbox.Text != "" )&&( rolebox.Text != ""))

            {

                try

                {                  

                        clsDB db = new clsDB();

                        SqlConnection conn = new SqlConnection(db.connectionstring());

                        conn.Open();

                        string insertuser = "insert into family values('" + unamebox.Text.Trim() + "','" + uidbox.Text.Trim() + "','" + pwd1box.Text.Trim() + "','" + rolebox.Text.Trim() + "','" + birthbox.Text.Trim() + "')";

                        SqlCommand cmd = new SqlCommand(insertuser, conn);

                        cmd.ExecuteNonQuery();

                        Response.Write("<script language=javascript>alert('创建成功!!');location='edituser.aspx'</script>");

                        conn.Close();

                    

                }

                catch (Exception ex)

                {

                    Response.Write(ex.Message.ToString());

                }              

                

            }

            else

            {

                Response.Write("<script language=javascript>alert('密码输入不一致或用户名称呼不能为空!')</script>");

            }

           

        }

        catch(Exception ex)

        {

            Response.Write(ex.Message.ToString());

        }

        finally

        {

            unamebox.Text = "";

            uidbox.Text = "";

            rolebox.Text = "";

            birthbox.Text = "";

        }

    }

5.2.2用户登陆模块的实现

用户登陆的实现并用Session["user"]记录用户的用户名,它贯穿于应用程序的整个生命周期,以此来区分权限。主要实现代码如下:

public partial class logon : System.Web.UI.Page

{

    

    //用户身份验证

    public void OnAuthenticate(object sender,AuthenticateEventArgs e)

     {

       

        bool Authenticated = false;

        Authenticated = SiteSpecificAuthenticationMethod(Login1.UserName, Login1.Password);

        e.Authenticated = Authenticated;

    }

    //在数据库中检验

   private bool SiteSpecificAuthenticationMethod(string UserName,string Password)

    {

        string strUserName, strPWD;//用户名,密码

        strUserName = Login1.UserName;

        strPWD = Login1.Password;

        string strsql;

        SqlDataReader myreader;

        strsql = "select uname,pwd from family where uname='" + strUserName + "'";

        clsDB dbo = new clsDB();

        myreader = dbo.GetResultASDataReader(strsql);

        if (myreader.Read())

        {

            //存在用户

            string strUserPwd = myreader["pwd"].ToString();

            if (strPWD == strUserPwd)

            {//密码正确  

              Session["user"] = Login1.UserName.ToString().Trim();//记录用户的用户名

              Response.Redirect("Default.aspx");

              myreader.Close();

              myreader.Dispose();

              dbo.killme();

              return true;

            }

            else

            {

                Login1.FailureText = "密码错误!!!";

                myreader.Close();

                myreader.Dispose();

                dbo.killme();

                return false;

            }

        }

        else

        {

            //用户不存在

            Login1.FailureText = "用户不存在";

            myreader.Close();

            myreader.Dispose();

            dbo.killme();

            return false;

        }

    }

5.2.3搜索模块的实现

string sqlstr="select * from ininfo where role='"+rolebox.SelectedItem.Value.ToString()+"'";

       cha(sqlstr);

public void cha(string sqlstr)

    {

        clsDB db = new clsDB();

        SqlConnection con = new SqlConnection(db.connectionstring());

        con.Open();

        SqlDataAdapter adapter = new SqlDataAdapter(sqlstr, con);

        DataSet myset = new DataSet();

        adapter.Fill(myset);

        if (myset.Tables[0].Rows.Count > 0)

        {

            GridView1.DataSource = new DataView(myset.Tables[0]);

            GridView1.DataBind();

            con.Close();

        }

        else

        {

            Response.Write("<script language=javascript>alert('没有该人员录入的信息!')</script>");

        }

    }

5.2.4 Gridview数据处理的实现

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)//删除数据

    {

        clsDB db = new clsDB();

        string deletestr = "delete from ininfo where ininfoid='" + GridView1.DataKeys[e.RowIndex].Value .ToString () + "'";

        db.caozuo(deletestr);

        GridView1.EditIndex = -1;

        string selectstr = "select * from ininfo order by ininfoid";

        cha(selectstr);

}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)//换页

    {

        GridView1.PageIndex = e.NewPageIndex;

        string selectstr = "select * from ininfo order by ininfoid";

        cha(selectstr);

     }

protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)//第一次载入该页

        {

            this.bind();

        }

}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {//绑定数据行

        if (e.Row.RowType == DataControlRowType.DataRow)

        {

            ((LinkButton)(e.Row.Cells[10].Controls[0])).Attributes.Add("onclick", "return confirm('确定删除吗?')");

            e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#22dd22';this.Style.color='buttontext';this.Style.cursor='default';");

            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='';this.style.color='';");

        }

    }

 protected void bind()//修改数据与数据的绑定

    {

        string id = Request.QueryString["borrowid"].ToString();//数据传递

        string str = "select * from borrow where borrowid='" + id + "'";

        SqlDataReader myreader = db.GetResultASDataReader(str);

        if (myreader.Read())

        {

            idbox.Text = myreader["borrowid"].ToString();

            fromnamebox.Text = myreader["fromname"].ToString();

            rolebox.Text = myreader["role"].ToString();

            datebox.Text = myreader["borrowdate"].ToString();

            jinebox.Text = myreader["borrowmoney"].ToString();

            reasonbox.Text = myreader["borrowreason"].ToString();

            statesbox.Text = myreader["states"].ToString();

            othersbox.Text = myreader["others"].ToString();

        }

        myreader.Close();

    }

protected void alter_Click(object sender, EventArgs e)//修改数据

    {

      

        try

        {

            string id =Request.QueryString["borrowid"].ToString();

            if (statesbox.Checked)

            {

                statesbox.Text = "true";

            }

            else

            {

                statesbox.Text = "false";

            }

            string updatestr = "update borrow set fromname='" + fromnamebox.Text.Trim() + "',role='" + rolebox.SelectedValue.ToString().Trim() + "',borrowdate='" + datebox.Text.Trim() + "',borrowmoney='" + jinebox.Text.Trim() + "',borrowreason='" + reasonbox.Text.Trim() + "',states='" + statesbox.Text.Trim() + "',others='" + othersbox.Text.Trim() + "'where borrowid='"+id+"' ";

            db.caozuo(updatestr);

            Response.Write("<script language=javascript>alert('信息修改成功!');location='borrow.aspx'</script>");

           

        }

        catch (Exception ex)

        {

            Response.Write(ex.Message.ToString());

        }

    }

  

6 测试运行情况

6.1 测试运行情况

任一系统的正确运行都是建立在多次测试基础上的,只有经过多次测试才可以发现系统存在的不足或逻辑错误。本文的家庭财务管理系统在不断的调试过程中也或多或少地遇到一些问题,但最终基本一一解决,主要归纳为以下2点:

1、实时性问题,由于本系统是B/S模式的,所以系统的响应速度是很重要的,当有大量的用户同时访问时,这样系统的响应速度必然下降。本系统在设计阶段就考虑了这方面的问题,其中最主要的解决方法就是尽量减少客户端和服务器间的通信,把一些能在客户端完成的验证都放在客户端验证,尽可能多的使用本地的脚本语言,这样客户端和服务器端的通信量就会大大减少,服务器的响应效率会提高很多。在本系统中开始时把一些验证信息放在了服务器端,这样每点一个按钮就向服务器发出一次请求,从而使服务器响应速度很慢,后来把一些控件的验证都放在了客户端,这样就减少了客户端和服务器端的通信,服务器的响应速度大大提高。

2、系统的安全性问题,后台管理界面不能让一些不具有管理员身份的人登陆,在本系统中应用了Session机制来验证用户,只有登陆了系统才能对系统后台进行操作,没有登陆的用户是不能够登陆后台管理界面的。即使用户输入后台管理的网址,系统会自动跳转到提示为登陆错误的页面,且要求用户登陆。同样,即使是合法的用户登录,他也不可以进入到管理员的操作的界面,因为管理员或客户合法登录后,他们被赋予不同的Session标记,这样系统的安全性相对大大提高。在开发即将完成的时候还没有实现这个功能,后发现直接输入管理界面的链接地址就能登陆后台,最终在系统中的后台每个界面都应用了Session机制后,才解决了这个问题。

6.2 程序有待改进方面

虽然,经过1个星期的不断努力,基本搭建起一个功能较完备、符合实际运用情况的家庭财务管理系统,但是也存在着有待完善或改进的方面,主要包括:

1、在得到查询的结果,没能实现将其导入到Excel表中,没有提供打印功能。

2、没有涉及运用到数据挖掘算法为用户提供个性化推荐服务,以提高系统的服务质量;

以上都是本系统以后将要着重改进的地方。

结 论

本人从构想到功能需求分析以及数据库设计和编程实现,创建了一个家庭财务管理系统。该系统已经完成了所有的功能模块,并且经过测试,系统的正确性与健壮性都得到了巩固与增强。只要有服务器资源,本系统可以立即投入使用。

该家庭财务管理系统出于安全考虑,必须要求用户进行身份验证,方可进行数据的修改,相应的系统中提供了用户注册和登录页面,普通用户只有浏览数据的权限。

当然本系统还有很多不足之处,由于时间关系,本人对很多实际中会出现的问题还没有加以充分考虑,对整个系统的模型也做了很大的简化,还有网络安全方面的技术也没有涉及很多。

参考文献

[1]张微,刘任凭.Dream weaver 8完美网页设计[M],中国青年电子出版社,2006-7:392-396;

[2]陈伟,SQL Server 2005数据库应用与开发教程,清华大学出版社,2007-9:978-7-302-16021-2;

[3]孙家广,软件工程,高等教育出版社,2005-7:978-7-04-016308-7;

[4]网络资源。

致谢

在这为期一周的数据库课程设计中,我得到了许多人的帮助。首先我要感谢我的指导老师张巍老师在课程设计上给予我的指导、提供给我的支持和帮助,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计的难题。同时也感谢学院为我提供良好的做课程设计的环境。

最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。

免费下载地址:https://download.csdn.net/download/qq_41221322/89548227

其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/380665.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XLua原理(一)

项目中活动都是用xlua开发的&#xff0c;项目周更热修也是用xlua的hotfix特性来做的。现研究底层原理&#xff0c;对于项目性能有个更好的把控。 本文认为看到该文章的人已具备使用xlua开发的能力&#xff0c;只研究介绍下xlua的底层实现原理。 一.lua和c#交互原理 概括&…

Github报错:Kex_exchange_identification: Connection closed by remote host

文章目录 1. 背景介绍2. 排查和解决方案 1. 背景介绍 Github提交或者拉取代码时&#xff0c;报错如下&#xff1a; Kex_exchange_identification: Connection closed by remote host fatal: Could not read from remote repository.Please make sure you have the correct ac…

【Qt】常用控件 Q widget的enabled属性,geometry属性

Qt是一个实现图形化程序的程序。为了便于我们开发&#xff0c;Qt为我们提供了许多“控件”。我们需要熟悉并掌握这些控件的使用。 一.什么是控件 控件是构成⼀个图形化界⾯的基本要素. 示例一&#xff1a; 像上述⽰例一中的,按钮,列表视图,树形视图,单⾏输⼊框,多⾏输⼊框,滚动…

OPC UA边缘计算耦合器BL205工业通信的最佳解决方案

OPC UA耦合器BL205是钡铼技术基于下一代工业互联网技术推出的分布式、可插拔、结构紧凑、可编程的IO系统&#xff0c;可直接接入SCADA、MES、MOM、ERP等IT系统&#xff0c;无缝链接OT与IT层&#xff0c;是工业互联网、工业4.0、智能制造、数字化转型解决方案中IO系统最佳方案。…

硅谷裸机云多IP服务器怎么样?

硅谷裸机云多IP服务器是一种在硅谷地区提供的、具有多个IP地址的裸机云服务器。这种服务器结合了裸机服务器的高性能和云服务器的灵活性&#xff0c;同时提供了多个IP地址&#xff0c;为用户的各种需求提供了支持。以下是关于硅谷裸机云多IP服务器的一些详细信息&#xff0c;ra…

智能硬件——0-1开发流程

文章目录 流程图1. 市场分析具体分析 2. 团队组建2. 团队组建早期团队配置建议配置一&#xff1a;基础型团队 (4人)配置二&#xff1a;扩展型团队 (6人)配置三&#xff1a;全面型团队 (7人) 3. 产品需求分析4. ID设计&#xff08;Industrial Design, 工业设计&#xff09;5. 结…

智慧监狱整体解决方案

智慧监狱整体解决方案摘要&#xff1a; 对智慧监狱的理解 智慧监狱通过集成监控图像资源、报警信息、安防信息和业务信息&#xff0c;实现资源共享和信息互通。构建三级警戒架构&#xff0c;实现分监区、监狱和局级监狱管理局的应急指挥和管理。 发展历程 从2006年至2021年&am…

华为云.VPC关联概念与对等连接实践

云计算.华为云 VPC关联概念与对等连接实践 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/q…

LeNet实验 四分类 与 四分类变为多个二分类

目录 1. 划分二分类 2. 训练独立的二分类模型 3. 二分类预测结果代码 4. 二分类预测结果 5 改进训练模型 6 优化后 预测结果代码 7 优化后预测结果 8 训练四分类模型 9 预测结果代码 10 四分类结果识别 1. 划分二分类 可以根据不同的类别进行多个划分&#xff0c;以…

新时代多目标优化【数学建模】领域的极致探索——数学规划模型

目录 例1 1.问题重述 2.基本模型 变量定义&#xff1a; 目标函数&#xff1a; 约束条件&#xff1a; 3.模型分析与假设 4.模型求解 5.LINGO代码实现 6.结果解释 ​编辑 7.敏感性分析 8.结果解释 例2 奶制品的销售计划 1.问题重述 ​编辑 2.基本模型 3.模…

Python酷库之旅-第三方库Pandas(036)

目录 一、用法精讲 111、pandas.Series.item方法 111-1、语法 111-2、参数 111-3、功能 111-4、返回值 111-5、说明 111-6、用法 111-6-1、数据准备 111-6-2、代码示例 111-6-3、结果输出 112、pandas.Series.xs方法 112-1、语法 112-2、参数 112-3、功能 112-…

基于Centos7搭建rsyslog服务器

一、配置rsyslog可接收日志 1、准备新的Centos7环境 2、部署lnmp环境 # 安装扩展源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 安装扩展源 yum install nginx -y# 安装nginx yum install -y php php-devel php-fpm php-mysql php-co…

mac二进制安装operator-sdk

0. 前置条件 1. 安装go 安装步骤略。 1. 下载operator-sdk源码包 https://github.com/operator-framework/operator-sdk 1.1 选择适合当前go版本的operator版本&#xff0c;在operator-sdk/go.mod文件中可以查看Operator-sdk使用的go版本。 2. 编译 源码包下载后&#x…

【从零开始实现stm32无刷电机FOC】【实践】【5/7 stm32 adc外设的高级用法】

目录 采样时刻触发采样同步采样 点击查看本文开源的完整FOC工程 本节介绍的adc外设高级用法用于电机电流控制。 从前面几节可知&#xff0c;电机力矩来自于转子的q轴受磁力&#xff0c;而磁场强度与电流成正比&#xff0c;也就是说电机力矩与q轴电流成正相关&#xff0c;控制了…

UDP网口(1)概述

文章目录 1.计算机网络知识在互联网中的应用2.认识FPGA实现UDP网口通信3.FPGA实现UDP网口通信的方案4.FPGA实现UDP网口文章安排5.传送门 1.计算机网络知识在互联网中的应用 以在浏览器中输入淘宝网为例&#xff0c;介绍数据在互联网是如何传输的。我们将要发送的数据包称作A&a…

SpringAI简单使用(本地模型+自定义知识库)

Ollama 简介 Ollama是一个开源的大型语言模型服务工具&#xff0c;它允许用户在本地机器上构建和运行语言模型&#xff0c;提供了一个简单易用的API来创建、运行和管理模型&#xff0c;同时还提供了丰富的预构建模型库&#xff0c;这些模型可以轻松地应用在多种应用场景中。O…

为 android编译 luajit库、 交叉编译

时间&#xff1a;20200719 本机环境&#xff1a;iMac2017 macOS11.4 参考: 官方的文档&#xff1a;Use the NDK with other build systems 写在前边&#xff1a;交叉编译跟普通编译类似&#xff0c;无非是利用特殊的编译器、链接器生成动态或静态库; make 本质上是按照 Make…

哈默纳科HarmonicDrive减速机组装注意事项

在机械行业中&#xff0c;精密传动设备HarmonicDrive减速机对于维持机械运作的稳定性和高效性起着至关重要的作用。然而在减速机的组装过程中&#xff0c;任何一个细微的错误都可能导致其运转时出现振动、异响等不良现象&#xff0c;严重时甚至可能影响整机的性能。因此&#x…

Python+Django+MySQL的新闻发布管理系统【附源码,运行简单】

PythonDjangoMySQL的新闻发布管理系统【附源码&#xff0c;运行简单】 总览 1、《新闻发布管理系统》1.1 方案设计说明书设计目标工具列表 2、详细设计2.1 登录2.2 程序主页面2.3 新闻新增界面2.4 文章编辑界面2.5 新闻详情页2.7 其他功能贴图 3、下载 总览 自己做的项目&…

Flink调优详解:案例解析(第42天)

系列文章目录 一、Flink-任务参数配置 二、Flink-SQL调优 三、阿里云Flink调优 文章目录 系列文章目录前言一、Flink-任务参数配置1.1 运行时参数1.2 优化器参数1.3 表参数 二、Flink-SQL调优2.1 mini-batch聚合2.2 两阶段聚合2.3 分桶2.4 filter去重&#xff08;了解&#xf…