用vs2019使用C#连接MySQL创建图书管理系统8(功能优化3--用户界面user1)

目录

一:要做的

二:退出登录,进入登录界面

①新增加

 ②删除旧的

三:进入“图书查看和借阅”、“当前借阅和归还界面”后,返回上一层

四:进入“图书查看和借阅”、“当前借阅和归还界面”后,隐藏上一层,并且对上一层无法进行操作

五:显示/修改个人信息

①构造添加的页面

②修改界面名称

③页面布局

1.DataGridView 

         1.2 . DataGridView ---显示读者信息

2.修改界面布局

3 .修改、确认、退出button

        3.1  修改button

          3.2    确认button

          3.3  退出button

④ 跳转界面

ps:传入变量扩展

六:数据库


一:要做的

①显示/修改个人信息:读者号、姓名、性别、所在单位、电话、邮箱地址、办证日期、照片、已借书数量、密码(修改完后重新登录)、读者类别号【相关资料可在最下面看】
②退出登录,进入登录界面
③进入“图书查看和借阅”、“当前借阅和归还界面”后,没办法返回上一层
④修改个人所有信息
⑤系统下面的“联系管理员”
⑥密码修改(修改完后重新登录,有弹窗提示十分确认修改)【升级的 ×】

二:退出登录,进入登录界面

之前已经实现了,在系统里,现在把它挪到主界面,并且增加判断:

①新增加

双击user1.cs【设计】“退出”的button,进入user1.cs的 private void 退出ToolStripMenuItem1_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码->运行

private void 退出ToolStripMenuItem1_Click(object sender, EventArgs e)//用户主页面退出
        {
            DialogResult dr = MessageBox.Show("确认退出咩?", "消息提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (dr == DialogResult.OK)
            {
                this.Close();
            }
        }

 ②删除旧的

鼠标移到“系统”->移到“系统-”下的 “退出” ->右击->删除

三:进入“图书查看和借阅”、“当前借阅和归还界面”后,返回上一层

①在user2.cs【设计】里将已经有的“借出图书”C V,修改text=退出,name=button_user2_exit
②双击user2.cs【设计】“退出”的button,进入user2.cs的 private void 退出ToolStripMenuItem1_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码->运行
(PS:user3.cs 的方法一样,只不过button的name=button_reBK_exit)

private void button_user2_exit_Click(object sender, EventArgs e)//user2 图书查看和借阅 退出
        {
            DialogResult dr = MessageBox.Show("确认退出咩?", "消息提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (dr == DialogResult.OK)
            {
                this.Close();
            }
        }

四:进入“图书查看和借阅”、“当前借阅和归还界面”后,隐藏上一层,并且对上一层无法进行操作

双击user1.cs【设计】的“图书查看和借阅窗口”,进入user1.cs的  private void 图书借阅ToolStripMenuItem_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码->运行
(PS1:“当前借阅和归还界面”方法一样,代码如下)
(PS2:把之前的show()全改成了u3.ShowDialog();,这样可以避免一些奇奇怪怪的错误)

图书查看和借阅:
private void 图书借阅ToolStripMenuItem_Click(object sender, EventArgs e)//user2 图书查看和借阅窗口跳转
        {
            user2 u2 = new user2();
            this.Hide();//隐藏user1 窗体
            //u2.Show();
            u2.ShowDialog();
            this.Show();
        }
图书归还:
 private void 当前借阅和归还情况ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            user3 u3 = new user3();
            this.Hide();
            //u3.Show();
            u3.ShowDialog();
            this.Show();
        }

五:显示/修改个人信息

读者号、姓名、性别、所在单位、电话、邮箱地址、办证日期、照片、已借书数量、密码(修改完后重新登录)、读者类别号【相关资料可在最下面看】

参照admin22.cs【修改图书】

①构造添加的页面

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

②修改界面名称

选中窗体,修改属性的Font->Text为”显示/修改个人信息“

③页面布局

1.DataGridView 

 法一:把admin2.cs【设计】的C,V到user1_4
法二:按照之前文章的【MySQL创建图书管理系统3】“S2 图书管理页面->③页面布局->1.DataGridView”步骤做一遍,这里不再赘述,传送门:页面布局

控件安装完毕后,把DataGridView里的值按照顺序修改为以下sql里的属性
SELECT rdID,rdName,rdSex,rdPwd,rdPhone FROM ks_reader;

         1.2 . DataGridView ---显示读者信息

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

//从数据库读取数据显示在表格控件中
        public void Table()
        {
            dataGridView1.Rows.Clear();//将控件中已经有的旧数据全部清空
            Dao dao = new Dao();
            string sql = "SELECT rdID,rdName,rdSex,rdPwd,rdPhone FROM ks_reader;";//要执行的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.Close();
            dao.DaoClose();
        }


        private void user1_4_Load(object sender, EventArgs e)//uesr1_4  窗体构造完了就会运行这个函数
        {
            Table();
        }

 

2.修改界面布局

法一:把admin22的全选C,V到user1_4
法二:按照之前文章的“S4 图书添加->③页面布局”步骤做一遍,这里不再赘述,传送门:页面布局

控件安装完毕后,把label里的值按照顺序修改为以下sql里的属性
INSERT INTO ks_reader(rdID,rdName,rdSex,rdPwd,rdPhone)VALUES
(11,'test','女','123','15171118787');

3 .修改、确认、退出button

“添加图书”button的Text->“修改”,name改为:button_alter_reader
“清空”button的Text->“确认”,name改为:confirm
再C V一个button,该button的Text->“退出”,name改为:exit

        3.1  修改button

双击“修改”的button,进入user1_4.cs的private void button_alter_reader_Click(object sender, EventArgs e)函数编辑页面-->在该函数创建一个名为ID的string变量,赋值为空,再在该private void button_alter_reader_Click(object sender, EventArgs e)如下代码->

//全局变量 ID
string ID = "";//学生ID是主键,用于修改学生的相关信息


 private void button_alter_reader_Click(object sender, EventArgs e)//修改读者个人信息的button
        {
            try//双击tab  可直接补全
            {
                //获取控件上的信息
                //rdID,rdName,rdSex,rdPwd,rdPhone
                string id1 = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                string name1 = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
                string sex1 = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
                string pwd1 = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
                string phone1 = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();

                //传值:将控件上的值传到 修改的 textbox里
                //label1_Click(id1, name2, sex3, pwd4, phone5);
                /* admin22 a2 = new admin22(id, name, author, press, ISBN, catalog, price, status);//连接admin2【图书管理页面】和admin22【修改图书信息】,实现界面跳转
                 a2.ShowDialog();*/
                ID = textBox1.Text = id1;//id实际上是int
                textBox2.Text = name1;
                textBox3.Text = sex1;
                textBox4.Text = pwd1;
                textBox5.Text = phone1;    
            }
            catch (Exception)
            {
                MessageBox.Show("鼠鼠我呀,觉得你应该是修改button的赋值错了\n可能是sql语句\n\t哈哈哈~~");
            }

        }

          3.2    确认button

双击“确认”的button,进入user1_4.cs的private void confirm_Click(object sender, EventArgs e)函数编辑页面-->在该函数填入如下代码->

private void confirm_Click(object sender, EventArgs e)//确认修改的按钮
        {
            // 进行修改
            //pt:下面的sql语句是直接从编译器navicat上C V的
            string sql = $"UPDATE ks_reader SET rdID='{textBox1.Text}',rdName='{textBox2.Text}',rdSex='{textBox3.Text}',rdPwd='{textBox4.Text}',rdPhone='{textBox5.Text}' WHERE rdID='{ID}';";
            Dao dao = new Dao();
            if (dao.Execute(sql) > 0)
            {
                MessageBox.Show("Alter successfully");
                //this.Close();
            }
            Table();//刷新数据
        }

          3.3  退出button

双击“退出”的button,进入user1_4.cs的 private void reader_show_exit_Click(object sender, EventArgs e)函数编辑页面-->在该函数填入如下代码->

private void reader_show_exit_Click(object sender, EventArgs e)//退出用户修改信息界面  含退出提示
        {
            //this.Close();
            DialogResult dr = MessageBox.Show("确认退出咩?", "消息提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (dr == DialogResult.OK)
            {
                this.Close();
            }
        }

④ 跳转界面

连接user1【用户主界面】和user1_4【显示和修改用户信息】,实现界面跳转
双击user1.cs【设计】的“显示和修改用户信息”的,进入user1.cs的 private void 显示和修改个人信息ToolStripMenuItem_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码

private void 显示和修改个人信息ToolStripMenuItem_Click(object sender, EventArgs e)//界面调整,连接用户主页面【user1】和显示及修改用户个人信息界面【user1_4】
        {
            user1_4 u1_4 = new user1_4();
            this.Hide();
            u1_4.ShowDialog();
            this.Show();
        }

ps:传入变量扩展

在修改时有以下4种方法【看得懂就看,看不懂下次来看我可能因为心血来潮就把方法写正规了】,其中注意数据库里的ID是int,但是VS里我弄的都是string【虽然结果没有影响】

法一:这个【显示和修改】界面改一下,按照admin2和admin22的来改,user1_4【用于显示,把那个控件拉在释放,小一点就行啦】对应andin2,再建一个对应user1_41【用于修改】对应admin22,

法二:在user1_4 上面拉一个 那个显示一排的控件,里面显示读者相关消息,然后把控件里的内容传到现在几个textbox里

法三:跳过那个大格子控件  直接sql与user14的lebelbox连

法四:user1-04与admin2对接,user1-4与admin22对接

六:系统下面的“联系管理员”

双击user1.cs【设计】“系统’,进入user1.cs的 private void 联系管理员ToolStripMenuItem_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码->运行

private void 联系管理员ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //先随便弹个窗意思意思
            MessageBox.Show("V鼠鼠50,鼠鼠帮你联系管理员");
        }

七:数据库

CREATE TABLE KS_Reader
(
 rdID int PRIMARY KEY,
 rdName VARCHAR(20),
 rdSex CHAR(1),
 rdType SMALLINT REFERENCES KS_ReaderType(rdType),
 rdDept VARCHAR(20),
 rdPhone VARCHAR(25),    -- 1
 rdEmail VARCHAR(25),  -- 1
 -- rdDateReg datetime DEFAULT getdate(),
 -- rdPhoto image,
 rdStatus CHAR(2) DEFAULT'有效',  -- 1
 rdBorrowQty int DEFAULT 0,   -- 1
 rdPwd VARCHAR(20),
 rdAdminRoles SMALLINT DEFAULT 0
)

show TABLES; -- 查看所有表
DESC KS_Reader; -- 查看数据表的结构


INSERT INTO ks_reader(rdID,rdName,rdPwd,rdType,rdDept,rdAdminRoles)VALUES
(1,'路飞','123',10,'图书馆',8),  -- 系统管理员
(2,'索隆','123',10,'图书馆',1),  -- 读者(借书证)管理员
(3,'乔巴','123',10,'图书馆',2),  -- 图书管理员
(4,'娜美','123',10,'图书馆',4),  -- 接还书管理员
(5,'乌索普','123',10,'图书馆',6),  -- 图书、接还书管理员
(6,'香吉士','123',10,'图书馆',7),  -- 读者、图书、接还书管理员
(7,'骷髅','123',10,'图书馆',15);  -- 读者、图书、接还书、系统管理员
SELECT * FROM ks_reader;

-- INSERT INTO ks_reader(rdID,rdName,rdPwd,rdSex,rdType,rdDept)VALUES
-- (100,'白胡子','123','男',10,'计科院'),   -- 读者,教师
-- (101,'红发','123','男',20,'计科11001班'),   -- 读者,本科生
-- (102,'凯多','123','男',30,'硕计11201班'),   -- 读者,硕士研究生
-- (103,'夏洛特.玲玲','123','女',20,'计科11001班');  -- 读者,本科生

-- 读者表测试
INSERT INTO ks_reader(rdID,rdName,rdSex,rdPwd,rdPhone)VALUES
(11,'test','女','123','15171118787');


SELECT rdID,rdName,rdSex,rdPwd,rdPhone FROM ks_reader;

UPDATE ks_book SET bkCode='1008',bkName='VStest',bkAuthor='龙',bkPress='革命军',bkISBN='',bkCatalog='',bkPrice=99,bkStatus='在馆' WHERE bkCode='1007';

UPDATE ks_reader SET rdID='1',rdName='路飞',rdSex='男',rdPwd='123',rdPhone='9756' WHERE rdID='1';

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值