vs2019,C#,MySQL创建图书管理系统3(管理员相关页面的布局和设计实现,图书显示,图书添加)

目录

S1 admin1.cs

①修改界面名称

 ②添加菜单

 ③Label

 S2 图书管理页面

①添加窗口

②修改界面名称

③页面布局

1.DataGridView 

2.button

3.TextBox

 S3图书显示

①点击图书管理后跳转到目标界面

 ②显示图书的所有信息

 S4图书添加

①构造添加的页面

②修改界面名称

③页面布局

1.Label && TextBox &&

 2.Button

 ④添加成功后清空界面框

 ⑤取消button

S5 点击admin2.cs里的“添加图书”跳转到建立的添加图书界面

S6 添加图书按钮的健壮性检查


本系列文章基于B站UP主“面朝星海我心澎湃”的视频P4,P5,时空门:P4 管理员相关页面的布局
P5 图书显示和图书添加区别在:
           ①up主用的SQLserver,但是本文章是MySQL
           ②本文章的数据库表比up主复杂一点,以及表里的内容不一样(本文章无论用户表还是管                   理员表都是海贼王滴,没办法,海米一枚~)

S1 admin1.cs

①修改界面名称

选中窗体,修改属性的Font->Text为”管理员主页面“

 ②添加菜单

工具箱->MenuStrip

 ③Label

加Label进行界面布局,通过属性->Font->字体大小 or 管理员主页面修改布局

 S2 图书管理页面

①添加窗口

添加新的窗口->命名为admin2

②修改界面名称

选中窗体,修改属性的Font->Text为”图书管理页面“

③页面布局

1.DataGridView 

工具箱搜索 DataGridView 
属性->布局->dock 选择你想要的布局,这里是left

 点小三角形->编辑列->添加->添加页眉文本,重复”四“直到添加完你想加的所有属性(这里的属性是你自己设计book表时的属性)添加完全部后点”关闭“-》确定


全部加入后可发现,不是所有的属性都能显示,因此需要修改 属性->布局 的AutoSizeColmnsMode参数,根据喜欢选择一个喜欢的参数

 根据需求,修改以下参数,不懂的参数,自己百度
(属性->行为)AllowUserToAddRows:True->False【禁止用户添加空白行,因此,最后的空白                                                                                            row 不再显示】
                      AllowUserToAddRows:True->False【能否删除】
                      AllowUserToResizeColumns:True->False【禁止用户改变列的列宽】
                      AllowUserToResizeRows:True->False【禁止用户改变行的行高】
                      MultiSelect:True->False【一次能否选择多行】
                      SelectionMode:FullRowSelect【一次可选择一整行,而非一个字段】
(属性->外观)RowHeadersVisible:True->False【使抬头的空白小框看不到,下图2】

2.button

加几个button->属性->font->Text->添加图书...
ps:由于添加的button比较多,所以你可以先添加一个,设置完它的字体大小,字形,再C+V
对了,随便把这几个button的Name改了,方便后续函数的编写

 3.TextBox

拉两个文本框放在“书名查询”和“书号查询”旁边,随便把这几个TextBox的Name改了

 S3图书显示

①点击图书管理后跳转到目标界面

双击admin1.cs里的图书管理,进入函数设置,对private void 图书管理ToolStripMenuItem_Click(object sender, EventArgs e)进行如下填写

 

 private void 图书管理ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            admin2 admin = new admin2();
            admin.ShowDialog();
        }

 ②显示图书的所有信息

即执行 SELECT * FROM ks_book; 这个MySQL语句(PS:这个MySQL语句是直接从navicat里copy过来的)
双击admin2.cs【设计】页面头-->进入admin2.cs的private void admin2_Load(object sender, EventArgs e)函数,进入之后-->在该函数外面写一个用于“从数据库读取数据显示在表格控件中”的名为Table的函数-->编辑Table函数-->rivate void admin2_Load(object sender, EventArgs e)函数中调用Table函数.
最后附带一个整体效果和运行截图,以及全部的代码,还有Table()的另外一种写法(比较清晰但是麻烦,现在这个粗暴但是简单)

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

namespace WindowsFormsApp1
{
    public partial class admin2 : Form
    {
        public admin2()//admin2的构造方法,实例化的时候就会执行,即new admin2()的时候就执行了
        {
            InitializeComponent();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void admin2_Load(object sender, EventArgs e)//当整个窗体构建完了后就会执行这个函数
        {
            Table();
        }

        //从数据库读取数据显示在表格控件中
        public void Table()
        {
            dataGridView1.Rows.Clear();//将控件中已经有的旧数据全部清空
            Dao dao = new Dao();
            string sql = "SELECT * FROM ks_book;";//要执行的sql语句,建议从编译器上copy该语句再黏贴到此处
            IDataReader dc = dao.read(sql);
            while(dc.Read())//当查询结果到达末尾后跳出while循环
            {
                //将读到的数据添加到dataGridView控件中
                //这里几个dc[]取决于你在页面的那里设置了几个属性
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString(), dc[5].ToString(), dc[6].ToString(), dc[7].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }
    }
}

 S4图书添加

①构造添加的页面

添加新的窗口->命名为admin21(即admin2下的一个子窗体)

②修改界面名称

选中窗体,修改属性的Font->Text为”添加图书“

③页面布局

1.Label && TextBox &&

工具箱搜索Label-->根据你的insert语句里的属性数量添加相应的Label 和 TextBox 数
      【INSERT INTO ks_book VALUES
         (1007,'VStest','龙','革命军',NULL,NULL,59.0,'在馆');】
     【书号,书名,作者,出版社,ISBN ,Catalog,价格,在馆情况】
可见,需要添加8个label && TextBox,可先弄好一组的字形,大小,Font->Text再CV
(PS:这几个TextBox的名字你可以改,我这里没改,因为懒,不过如果你不改你就得记得这几个TextBox各自代表什么,虽然通过单击就能看到他的名字了)

 2.Button

加2个button Font->Text分别为“添加图书”和“取消”,其Name分别为:“button_add_book” ,“button_empty”

 双击“添加图书”的button,进入admin21.cs的private void button_add_book_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码->运行(可进入Program.cs修改Application.Run(new login());函数,使现在编辑的admin21.cs窗体直接执行),注意,由于在设计ks_book表的bkStatus属性时设置为 char(2),因此可添加的内容只能是两个字(数字)以内,否则会报错,因此在“在馆情况”下弄一个label提示只能填“在馆”或者“不在”,避免报错,以下为使 现在编辑的admin21.cs窗体直接执行的函数修改 和 因填入超过2个字符引发的报错  和  成功运行的界面(也可在编译器navicat里查询看自己是否添加成功)以及private void button_add_book_Click(object sender, EventArgs e)函数编辑代码

 //Application.Run(new login());
            Application.Run(new admin21());//指定从那个窗体启动


 

private void button_add_book_Click(object sender, EventArgs e)//添加图书按钮的事件
        {
            Dao dao = new Dao();
            string sql = $"INSERT INTO ks_book VALUES('{textBox1.Text}','{textBox2.Text}','{textBox3.Text}','{textBox4.Text}','{textBox5.Text}','{textBox6.Text}',{textBox7.Text},'{textBox8.Text}');";
            int n=dao.Execute(sql);//dao.Execute(sql)返回受影响的行数
            if(n>0)//受影响行数大于1,即添加成功
            {
                MessageBox.Show("Added successfully!");
            }
            else//受影响行数小于1,即添加失败
            {
                MessageBox.Show("I am sorry,but you fail~~");
            }
        }

 ④添加成功后清空界面框

就在刚刚完成的private void button_add_book_Click(object sender, EventArgs e)函数里的else下面写
法一:遍历所有TextBox,将其赋值为空
法二:一条一条写,赋值为空

//添加成功后清空界面框
            //法1 遍历所有TextBox,将其赋值为空
            foreach (System.Windows.Forms.Control control in this.Controls)
            {
                if (control is System.Windows.Forms.TextBox)
                {
                    System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;
                    tb.Text = String.Empty;
                }
            }

            //法2 一条一条写,赋值为空 
            /*textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
            textBox7.Text = "";
            textBox8.Text = "";*/

 ⑤取消button

双击“取消”button,在其中输入清空界面框的代码(上一条),法一或者法二都可以

S5 点击admin2.cs里的“添加图书”跳转到建立的添加图书界面

双击admin2.cs【设计】里的“添加图书”,进入admin2.cs的private void button_add_book_Click(object sender, EventArgs e)函数在里加入如下代码

private void button_add_book_Click(object sender, EventArgs e)
        {
            admin21 a = new admin21();
            a.ShowDialog();
        }

S6 添加图书按钮的健壮性检查

即输入不能为空(因为有些属性是主码,为空会报错)
方法:把private void button_add_book_Click(object sender, EventArgs e)函数里的内容加到if里else里为:MessageBox.Show("鼠鼠我呀,不喜欢输入为空呢");
 

 private void button_add_book_Click(object sender, EventArgs e)//添加图书按钮的事件
        {
            if(textBox1.Text!=""&& textBox2.Text != ""  )
            {
                Dao dao = new Dao();
                textBox8.Text = "";
                textBox7.Text = "0";
                string sql = $"INSERT INTO ks_book VALUES('{textBox1.Text}','{textBox2.Text}','{textBox3.Text}','{textBox4.Text}','{textBox5.Text}','{textBox6.Text}',{textBox7.Text},'{textBox8.Text}');";
                int n = dao.Execute(sql);//dao.Execute(sql)返回受影响的行数
                if (n > 0)//受影响行数大于1,即添加成功
                {
                    MessageBox.Show("Added successfully!");
                }
                else//受影响行数小于1,即添加失败
                {
                    MessageBox.Show("I am sorry,but you fail~~");
                }
                //添加成功后清空界面框
                //法1 遍历所有TextBox,将其赋值为空
                foreach (System.Windows.Forms.Control control in this.Controls)
                {
                    if (control is System.Windows.Forms.TextBox)
                    {
                        System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;
                        tb.Text = String.Empty;
                    }
                }

                //法2 一条一条写,赋值为空 
                /*textBox1.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
                textBox4.Text = "";
                textBox5.Text = "";
                textBox6.Text = "";
                textBox7.Text = "";
                textBox8.Text = "";*/
            }
            else
            {
                MessageBox.Show("鼠鼠我呀,不喜欢输入为空呢");
            }

            

        }

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值