CS架构整合SQLserver数据库实现C#财务管理系统,报表分析系统

2022-12-02 15:30:44 浏览数 (1)

系统架构设计

主要界面设计

1.系统登陆界面:

用户注册

用户登录

2.UI主要实现功能:

个人收入或支出查询.

个人收入及支出录入

个人收入及支出更改以及删除

主要细节

3.与数据库交互。实现(添加,删除,更新)

个人收入录入/个人支出录入

收入或支出信息的更新

收入或支出信息删除

系统模块实现

用户登录

在这里插入图片描述在这里插入图片描述

修改密码

在这里插入图片描述在这里插入图片描述

收支模块

在这里插入图片描述在这里插入图片描述

出纳模块

在这里插入图片描述在这里插入图片描述

其他模块

在这里插入图片描述在这里插入图片描述

系统表结构设计

财务管理数据库financialMS设计表:

(1)表名:users(用户表),如表1所示。

|字段名称| 数据类型 |字段说明 |字段属性|

| -------- | :---- | :---- |

|userName | Varchar(20) |用户名 |主键|

|password | Varchar(20) |密码 |不能为空|

|juese |Varchar(20) |角色 |扩展功能用,可以先设置为空|

(2)表名:income(收入详细表),如表2所示。

|字段名称 |数据类型 |字段说明 |字段属性|

| -------- | :---- | :---- |

|incomeID |int |收入ID |主键、自动增长值为1|

|incomeName |Varchar(20) |收入人姓名 |不能为空|

|incomeNum |int |收入金额 |不能为空|

|incomeDep |Varchar(100) |收入内容描述 |可以为空|

|incomeDate |DateTime |收入时间 |不为空|

(3)表名:spend(支出详细表),如表3所示

|字段名称 |数据类型 |字段说明 |字段属性

| -------- | :---- | :---- |

|spendID |int |支出ID |主键、自动增长值为1

|spendName |Varchar(20) |支出人姓名 |不能为空

|spendNum |int |支出金额 |不能为空

|spendDep |Varchar(100) |支出内容描述 |可以为空

|receiveName |Varchar(20) |接收人姓名 |不能为空

|spendAdd |Varchar(20) |支出地点 |可以为空

|spendDate |DateTime |支出时间 |不为空

系统数据库操作实现

一、连接数据库 Connection对象

Connection对象:是一个连接对象,主要功能是建立于物理数据库的连接,主要包括4中访问数据库的对象类,如下:

1)SQL Server数据提供程序,位于System.Data.SqlClient命名空间 相对应:SqlConnection

2)ODBC数据提供程序,位于System.Data.Odbc命名空间 相对应:OdbcConnection

3)OLEDB数据提供程序,位于System.Data.OleDb命名空间 相对应:OleDbConnection

4)Oracle数据提供程序,位于System.Data.OracleClient命名空间 相对应:OracleConnection

打开连接为: .Open() 关闭连接为:.Close()

二、执行SQL语句Command对象

Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改的SQL语句。Command对象主要有以下几种方式(与一相对应):

1)SqlCommand :向SQL Server数据库发送SQL语句

2)OdbcCommand:向使用ODBC公开的数据库发送SQL语句

3)OleDbCommand:向使用OLEDB公开的数据库发送SQL语句,如Access数据库和MySql数据库

4)OracleCommand:向使用ORACLE公开的数据库发送SQL语句

方法:

1)ExecuteNonQuery方法:用于向数据库发送增、删、改命令。返回值:受影响的行数

2)ExecuteReader方法:执行SQL语句,并生成一个包含数据的SqlDataReader对象的实例 返回值:一个SqlDataReader对象【详见三】

例:

SqlCommand cmd = new SqlCommand(strSql,conn); 或者【 SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;cmd.CommandText=strSql;cmd.CommandType=CommandType.Text; 】

SqlDataReader sdr = cmd.ExecuteReader();

while (sdr.Read())

{

listView1.Items.Add(sdr1.ToString());

}

3)ExecuteScalar方法:执行SQL语句,返回结果集中的第一行的第一列

三、读取数据:DataReader对象

DataReader对象是数据读取器对象,提供只读向前的游标,如果只是需要快速读取数据,并不需要修改数据,那么就可以使用DataReader对象进行读取,对于不同的数据库连接,有不同的DataReader类型,如下:

1)在System.Data.SqlClient命名空间下,可以调用SqlDataReader类

2)在System.Data.Odbc命名空间下,可以调用OdbcDataReader类

3)在System.Data.OleDb命名空间下,可以调用OleDbDataReader类

4)在System.Data.OracleClient命名空间下,可以调用OracleDataReader类

实例:

if (myreader.Read())

代码语言:txt复制
   {
代码语言:txt复制
            //myreader中有数据,表示给出的用户名和密码在数据库中有匹配记录
代码语言:txt复制
            MessageBox.Show("登录成功");
代码语言:txt复制
            //如果登录成功则取出用户名和等级填入下面的文本框中
代码语言:txt复制
            textBox3.Text = myreader["username"].ToString();
代码语言:txt复制
            textBox4.Text = myreader["level"].ToString();
代码语言:txt复制
    }
代码语言:txt复制
   else
代码语言:txt复制
   {
代码语言:txt复制
            //myreader中没有数据,表示给出的用户名和密码至少有一个是错的
代码语言:txt复制
            MessageBox.Show("登录失败!!");
代码语言:txt复制
    }

四、数据适配器:DataAdapter对象

DataAdapter对象是一个数据适配器对象,是DataSet与数据源之间的桥梁。DataAdapter对象对象提供了4个属性,实现与数据源之间的互通:

1)SelectCommand属性

2)DeleteCommand属性

3)InsertCommand属性

4)UpdateCommand属性

实例:

string strConn="uid=账号;pwd=密码;database=数据库;server=服务器";//SQL Server链接字符串

SqlConnection ConnSql=new SqlConnection (strConn); //Sql链接类的实例化

ConnSql.Open ();//打开数据库

string strSQL="SELECT * FROM 表名1 "; //要执行的SQL语句

SqlDataAdapter da=new SqlDataAdapter(strSQL,ConnSql); //创建DataAdapter数据适配器实例

DataSet ds=new DataSet();//创建DataSet实例

da.Fill(ds,"自定义虚拟表名");//使用DataAdapter的Fill方法(填充),调用SELECT命令

ConnSql.Close ();//关闭数据库

五、数据集DataSet对象

DataSet对象就像存放于内容中的小型数据库。它可以包含数据表、数据列、数据行、视图、约束以及关系。

1)合并DataSet内容 方法为:Merge(dataSet将合并的数据和架构的dataSet名,preserveChanges是否保留当前DataSet中的更改,missingSchemaAction枚举值之一);

2)复杂DataSet内容 方法为:Copy 例:DataSet ds1 =ds.Copy();

用户登录校验实现

代码语言:java复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Diagnostics;

namespace fms
{
    public partial class FormLogin : Form
    {
        public FormLogin()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
                SQLHelper dbhelp = new SQLHelper();//dbhelp为访问sqlhelper的对象,即在登陆窗体中让sqlhelper类实例化。
                string name = tdname.Text.Trim();//获取用户名控件文本,且去掉空格
                string pwd = tdpwd.Text.ToString().Trim();//获取密码控件文本,且去掉空格

                int n = dbhelp.checklogin(name, pwd);//调用类中的checklogin方法。
                if (n>0)
                {
                    MessageBox.Show("登陆成功");
                    FromMain zhujiemian = new FromMain();//主窗体,对象实例化
                    zhujiemian.Show();//显示主窗体
                    this.Hide();//隐藏登陆窗体
                }
                else
                {
                    MessageBox.Show("用户/密码错误,登陆失败","错误信息框",MessageBoxButtons.OK);
                }
        }
        private void linkLabel_Regist_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            FormRegistNewUser newusers = new FormRegistNewUser(); //类作为对象的实例化。
            newusers.Show(); //对象的属性,简而言之就是让超级赛亚人附体的意思。
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void FormLogin_Load(object sender, EventArgs e)
        {
        }
    }
}

0 人点赞