C# 综合示例 库存管理系统20 操作员管理(FormAdmin)

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的

图99A-35 操作员管理窗口设计

增加操作员或者重置密码,密码都设置为默认的"123456",操作员可以登录系统后再修改自己的密码。

全部代码如下:

OleDbConnection connection;

public static void ShowForm()

{

FormAdmin frm = new FormAdmin();

frm.ShowDialog();

}

private void FormAdmin_Load(object sender, EventArgs e)

{

connection = new OleDbConnection(classMod.databaseConnString);

//打开数据连接

connection.Open();

fillLv();

}

//填充数据选项,主要是 lvUser

private void fillLv()

{

lvUser.Items.Clear();

//新建OleDbCommand对象实例

OleDbCommand command = new OleDbCommand();

//=========填充用户列表==================

//要执行的SQL查询

command.CommandText = "select ID,姓名,是否停用 from 操作员 where id<>0";

//设置OleDbCommand的数据连接为OleDbConnection

command.Connection = connection;

//声明OleDbDataReader对象

OleDbDataReader odReader;

//通过OleDbCommand的ExecuteReader方法获得OleDbDataReader对象实例。

odReader = command.ExecuteReader();

//如果OleDbDataReader中包含数据

if (odReader.HasRows)

{

//循环读取每一行数据,直到Read方法返回False

while (odReader.Read())

{

ListViewItem lvi = new ListViewItem(odReader.GetValue(0).ToString());

lvi.SubItems.Add(odReader.GetValue(1).ToString());

lvi.SubItems.Add(odReader.GetValue(2).ToString());

lvUser.Items.Add(lvi);

}

}

odReader.Close();

//关闭数据读取器

odReader.Close();

}

//增加操作员

private void btnAdd_Click(object sender, EventArgs e)

{

string newUser = InputBox.ShowDialog("请输入操作员姓名:\r\n(新建操作员默认密码为:123456)", "增加操作员");

if (newUser.Trim() == "")

{

MessageBox.Show("取消操作");

return;

}

//关于加密,请参看教程第11章

//这里使用简单的md5加密

string pass = "123456";

string passMd5 = ClassMd5.toMD5(pass);

OleDbCommand command = new OleDbCommand();

command.CommandText = "select top 1 ID from 操作员 order by ID desc";

command.Connection = connection;

OleDbDataReader odReader;

int userid;

odReader = command.ExecuteReader(CommandBehavior.SingleResult);

odReader.Read();

userid = (int)odReader.GetValue(0) + 1;

odReader.Close();

command.CommandText = "insert into 操作员(ID,姓名,密码,是否停用) values(" + userid + ",'" + newUser + "','" + passMd5 + "','否')";

command.ExecuteNonQuery();

//刷新lvUser中的显示

fillLv();

}

//修改操作者的姓名

private void btnEdit_Click(object sender, EventArgs e)

{

if (lvUser.SelectedItems.Count < 1)

{

MessageBox.Show("请先选择需要修改的操作员");

return;

}

int UserID = int.Parse(lvUser.SelectedItems0.Text);

string userNameOld = lvUser.SelectedItems0.SubItems1.Text;

string userNameNew;

userNameNew = InputBox.ShowDialog("请输入操作员姓名:", "修改操作员姓名");

if (userNameNew.Trim() == "")

{

MessageBox.Show("取消操作");

return;

}

if (MessageBox.Show("确实要将操作员姓名从 " + userNameOld + " 替换为 " + userNameNew + " 吗?", "修改姓名", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)

{

return;

}

//从数据库中修改

//新建OleDbCommand对象实例

OleDbCommand command = new OleDbCommand();

//设置OleDbCommand的数据连接为OleDbConnection

command.Connection = connection;

command.CommandText = "update 操作员 set 姓名='" + userNameNew + "' where ID=" + UserID;

command.ExecuteNonQuery();

//刷新lvUser中的显示

fillLv();

}

//启用或停用操作者

//如果直接删除,可能会导致已经保存的数据出现问题

private void btnUnable_Click(object sender, EventArgs e)

{

if (lvUser.SelectedItems.Count < 1)

{

MessageBox.Show("请先选择需要修改的操作员");

return;

}

int UserID = int.Parse(lvUser.SelectedItems0.Text);

string userNameOld = lvUser.SelectedItems0.SubItems1.Text;

string isUseOld = lvUser.SelectedItems0.SubItems2.Text;

string isUseNew = isUseOld == "否" ? "是" : "否";

string operation = isUseOld == "否" ? "停用" : "启用";

if (MessageBox.Show("确实要" + operation + "操作员 " + userNameOld + " 吗?", operation + "操作员", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)

return;

OleDbCommand command = new OleDbCommand();

command.Connection = connection;

command.CommandText = "update 操作员 set 是否停用='" + isUseNew + "' where ID=" + UserID;

command.ExecuteNonQuery();

//刷新lvUser中的显示

fillLv();

}

//重置密码

private void btnPass_Click(object sender, EventArgs e)

{

if (lvUser.SelectedItems.Count < 1)

{

MessageBox.Show("请先选择需要修改的操作员");

return;

}

int UserID = int.Parse(lvUser.SelectedItems0.Text);

string userNameOld = lvUser.SelectedItems0.SubItems1.Text;

if (MessageBox.Show("确实要重置操作员 " + userNameOld + " 的密码吗?\r\n(重置后的密码为:123456)", "重置密码", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)

return;

string passMd5 = ClassMd5.toMD5("123456");

OleDbCommand command = new OleDbCommand();

command.Connection = connection;

command.CommandText = "update 操作员 set 密码='" + passMd5 + "' where ID=" + UserID;

command.ExecuteNonQuery();

}

private void btnClose_Click(object sender, EventArgs e)

{

Close();

}

private void FormAdmin_FormClosing(object sender, FormClosingEventArgs e)

{

connection.Close();

}

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

相关推荐
SKH.1 分钟前
网络(5)数据库
jvm·数据库
疯狂打码的少年13 分钟前
【计算机网络】OSI/RM七层模型(层次结构、各层功能速览)
开发语言·笔记·计算机网络·php
小灰灰搞电子14 分钟前
Rust+Slint 实现ModbusRTU从机调试助手源码分享
开发语言·rust·modbusrtu
程序喵大人15 分钟前
【C++入门】值类别与表达式 - 03 引用绑定:为什么有些参数能接住临时对象
开发语言·c++·引用绑定
kyrie_sakura18 分钟前
MySQL数据库学习笔记3--关联(联合)查询
数据库·学习·mysql
子非鱼a24 分钟前
【WEB】[RoarCTF 2019]Easy Java
java·开发语言
软件黑马王子29 分钟前
19.资源加载模块:主要作用和基本原理
开发语言·前端框架·c#
陈皮波比茶43 分钟前
计算机二级MySQL笔记
java·数据库
行业研究员1 小时前
腾讯云数据库 PostgreSQL 让相关子查询跑上多核
数据库·postgresql·腾讯云