数据库课设记录

本篇博客为本人数据库实验课的课程设计作业

题目为:商品进货管理系统
记录下来以供日后参考

第一步、设计数据库

1.ER图

数据库课设记录_第1张图片

2.表设计

(1)进货员表

中文字段名	字段类型	长度	主键/外键	字段值约束
职工编号	int		主键	NOT NULL
姓名	nchar	20		NOT NULL
性别	nchar	4		NOT NULL
年龄	int			NULL

(2)用户表

中文字段名	字段类型	长度	主键/外键	字段值约束
帐号	nchar	20	主键	NOT NULL
密码	nchar	20		NOT NULL
权限	int			NOT NULL

(3)商品进货表

中文字段名	字段类型	长度	主键/外键	字段值约束
商品编号	int		主键	NOT NULL
供货商号	int		外键	NOT NULL
名称	nchar	20		NOT NULL
单价	money			NOT NULL
进货数量	int			NOT NULL

(4)供货商表

中文字段名	字段类型	长度	主键/外键	字段值约束
供货商号	int		主键	NOT NULL
名称	nchar	20		NOT NULL
联系电话	nchar	20		NOT NULL
联系地址	nchar	30		NOT NULL

(5)付款表

中文字段名	字段类型	长度	主键/外键	字段值约束
订单号	int		主键	NOT NULL
订单总额	money			NOT NULL
进货员编号	Int		外键	NOT NULL
进货日期	datetime			NOT NULL

(6)库存表

中文字段名	字段类型	长度	主键/外键	字段值约束
商品编号	int	 主键	 NOT NULL
库存数量	int			NOT NULL
仓库名	nchar	20	NOT NULL
仓库编号	int			NOT NULL

3.系统功能及流程设计

系统功能结构图:

数据库课设记录_第2张图片

系统数据流图:
数据库课设记录_第3张图片

二、建立数据库

使用SQL 2017 建立如下数据库,sql语言省略
数据库课设记录_第4张图片
数据库课设记录_第5张图片

建立Windows窗体项目并连接数据库

新建C# windows窗体项目后,连接数据库
数据库课设记录_第6张图片
数据库课设记录_第7张图片
连接服务器后,选择使用的数据库即可。

窗体设计

使用VS的工具箱中的控件,进行对Form的编辑 效果如图
数据库课设记录_第8张图片
数据库课设记录_第9张图片
值得一提的是数据视图(报表)DataGridView控件,在将其拖入窗口中后,选择他,会出现一个小三角,在那里选择数据源。
数据源的建立则是在添加项目数据源中

数据库课设记录_第10张图片
数据库课设记录_第11张图片

数据库课设记录_第12张图片
选择使用的表即可

窗口效果

数据库课设记录_第13张图片
数据库课设记录_第14张图片

数据库课设记录_第15张图片
数据库课设记录_第16张图片
这里只截取部分窗口作为示例。

总计有一个登录页面,一个主页面,五个表查看和操作页面

功能设计

1.用户权限组

权限组分为管理员组(0)和普通员工组(11),管理员组可使用包括增删改查等所有操作,而普通员工组只能查看和查找。事实上权限方面可以再细化到具体功能的权限组,这也非常容易实施,但为了节约时间,省去这部分工作量,若有需求完全可以再加。

2.增删改查

本系统分为五个窗口用来对表进行操作,包括增删改查这几个功能。
这里选择一个窗口的代码进行示例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.VisualBasic;

namespace WindowsFormsApp1
{
    public partial class Form6 : Form
    {
        public Form6(string qxz)
        {
            InitializeComponent();
            if (qxz != "0")
            {
                gy_add.Enabled = false;
                gy_del.Enabled = false;
                gy_updata.Enabled = false;
                gy_save.Enabled = false;
            }
        }

        private void Form6_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“进货管理DataSet.供货商表”中。您可以根据需要移动或删除它。
            this.供货商表TableAdapter.Fill(this.进货管理DataSet.供货商表);

        }

        private void Label1_Click(object sender, EventArgs e)
        {

        }

        private void Gy_add_Click(object sender, EventArgs e) //按下增加按钮
        {
            string gysh = gy_gysh.Text.Trim();
            string mc = gy_mc.Text.Trim();
            string lxdh = gy_lxdh.Text.Trim();
            string lxdz = gy_lxdz.Text.Trim();
            SqlConnection cnn;
            cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
            string sqlstr = " ";
            if (gysh.Length != 0 && mc.Length != 0 && lxdh.Length != 0 && lxdz.Length != 0)
                sqlstr = "insert into 供货商表 values(" + gysh + ",'" + mc + "'," + lxdh + ",'" + lxdz + "')";
            else
                MessageBox.Show("不要留空!");
            SqlCommand sqlcmd = new SqlCommand(sqlstr, cnn);
            cnn.Open();
            sqlcmd.ExecuteNonQuery();
            string find = "select 供货商号,名称,联系电话,联系地址"
                + " from 供货商表";
            SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
            DataSet DS = new DataSet();
            myDa.Fill(DS);
            dataGridView1.DataSource = DS.Tables[0];
            cnn.Close();
        }

        private void Gy_select_Click(object sender, EventArgs e)//按下查找按钮
        {
            string gysh = gy_gysh.Text.Trim();
            string mc = gy_mc.Text.Trim();
            string lxdh = gy_lxdh.Text.Trim();
            string lxdz = gy_lxdz.Text.Trim();
            SqlConnection cnn;
            cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
            cnn.Open();
            string find = "select 供货商号,名称,联系电话,联系地址"
                + " from 供货商表";
            if (gysh.Length != 0 || mc.Length != 0 || lxdh.Length != 0 || lxdz.Length != 0)
            {
                find += " where 供货商号=供货商号 ";
                if (gysh.Length != 0)
                    find += " AND 供货商号=" + gysh;
                if (mc.Length != 0)
                    find += "AND 名称= '"+ mc +"'";
                if (lxdh.Length != 0)
                    find += " AND 联系电话=" + lxdh;
                if (lxdz.Length != 0)
                    find += " AND 联系地址='" + lxdz +"'";
            }
            SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
            DataSet DS = new DataSet();
            myDa.Fill(DS);
            dataGridView1.DataSource = DS.Tables[0];
            cnn.Close();
        }

        private void Gy_del_Click(object sender, EventArgs e)//按下删除按钮
        {
            string gysh = gy_gysh.Text.Trim();
            string mc = gy_mc.Text.Trim();
            string lxdh = gy_lxdh.Text.Trim();
            string lxdz = gy_lxdz.Text.Trim();
            SqlConnection cnn;
            cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
            string sqlstr = " ";
            if (gysh.Length != 0 || mc.Length != 0 || lxdh.Length != 0 || lxdz.Length != 0)
            {
                sqlstr += "delete from 供货商表"
                + (" where 供货商号 != -1");
                if (gysh.Length != 0)
                    sqlstr += " AND 供货商号= " + gysh;
                if (mc.Length != 0)
                    sqlstr += " AND 名称= '" + mc + "'";
                if (lxdh.Length != 0)
                    sqlstr += " AND 联系电话 = " + lxdh;
                if (lxdz.Length != 0)
                    sqlstr += " AND 联系地址 = '" + lxdz + "'";
            }
            SqlCommand sqlcmd = new SqlCommand(sqlstr, cnn);
            cnn.Open();
            sqlcmd.ExecuteNonQuery();
            string find = "select 供货商号,名称,联系电话,联系地址"
              + " from 供货商表";
            SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
            DataSet DS = new DataSet();
            myDa.Fill(DS);
            dataGridView1.DataSource = DS.Tables[0];
            cnn.Close();
        }

        private void Gy_updata_Click(object sender, EventArgs e)//按下修改按钮
        {
            string gysh = gy_gysh.Text.Trim();
            string mc = gy_mc.Text.Trim();
            string lxdh = gy_lxdh.Text.Trim();
            string lxdz = gy_lxdz.Text.Trim();
            SqlConnection cnn;
            cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
            string sqlstr = " ";
            string str = Interaction.InputBox("请输入要改动的内容,格式为列名='XX'", "修改", "", 100, 100);
            if (gysh.Length != 0 || mc.Length != 0 || lxdh.Length != 0 || lxdz.Length != 0)
            {
                sqlstr += "update 供货商表 set "
                +(" ")+str
                + (" where 供货商号=供货商号");
                if (gysh.Length != 0)
                    sqlstr += " AND 供货商号= " + gysh;
                if (mc.Length != 0)
                    sqlstr += " AND 名称= '" + mc + "'";
                if (lxdh.Length != 0)
                    sqlstr += " AND 联系电话 = " + lxdh;
                if (lxdz.Length != 0)
                    sqlstr += " AND 联系地址 = '" + lxdz + "'";
            }
            SqlCommand sqlcmd = new SqlCommand(sqlstr, cnn);
            cnn.Open();
            sqlcmd.ExecuteNonQuery();
            string find = "select 供货商号,名称,联系电话,联系地址"
              + " from 供货商表";
            SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
            DataSet DS = new DataSet();
            myDa.Fill(DS);
            dataGridView1.DataSource = DS.Tables[0];
            cnn.Close();
        }

        private void Gy_cancel_Click(object sender, EventArgs e)//按下取消按钮
        {
            gy_gysh.Clear();
            gy_mc.Clear();
            gy_lxdh.Clear();
            gy_lxdz.Clear();
        }

        private void Gy_back_Click(object sender, EventArgs e)//按下返回上一层按钮
        {
            this.Close();
        }
    }
}
3.统计

数据库课设记录_第17张图片预计做这几个统计功能
因为统计功能的实质其实就是简单的SQL语言查询,所以并不打算花太大精力搞,还是那句话,有需求就能实现。
效果如下
数据库课设记录_第18张图片
数据库课设记录_第19张图片
数据库课设记录_第20张图片
数据库课设记录_第21张图片
数据库课设记录_第22张图片

5.优化界面

利用Form.BackgroundImage,给窗体添加背景。

效果图
数据库课设记录_第23张图片
数据库课设记录_第24张图片

总结

本次课设难度不高,也只是简单的做了一个管理系统,所以没什么总结。
值得一提的是多个Form之间传递数据的方法最方便的是在Form构造函数处添加一个变量,即让Form类需求一个外部参数,我本次的权限功能就是这样实现的。

你可能感兴趣的:(学习笔记)