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

该博客介绍了系统架构设计,包括用户登录、个人财务管理和数据库操作。系统包含用户登录、密码修改、收支模块和出纳模块。数据库设计涉及用户表、收入表和支出表,使用SQL数据提供程序进行交互。通过Command对象执行SQL语句,使用DataReader和DataAdapter对象读取和处理数据。此外,还展示了用户登录校验的实现代码。
摘要由CSDN通过智能技术生成

系统架构设计

主要界面设计
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())
{
//myreader中有数据,表示给出的用户名和密码在数据库中有匹配记录
MessageBox.Show(“登录成功”);
//如果登录成功则取出用户名和等级填入下面的文本框中
textBox3.Text = myreader[“username”].ToString();
textBox4.Text = myreader[“level”].ToString();
}
else
{
//myreader中没有数据,表示给出的用户名和密码至少有一个是错的
MessageBox.Show(“登录失败!!”);
}

四、数据适配器: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();

用户登录校验实现

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)
        {
        }
    }
}

源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值