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.SelectedItems[0].Text);

string userNameOld = lvUser.SelectedItems[0].SubItems[1].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.SelectedItems[0].Text);

string userNameOld = lvUser.SelectedItems[0].SubItems[1].Text;

string isUseOld = lvUser.SelectedItems[0].SubItems[2].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.SelectedItems[0].Text);

string userNameOld = lvUser.SelectedItems[0].SubItems[1].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#教程 目录

相关推荐
薛定谔的算法7 分钟前
phoneGPT:构建专业领域的检索增强型智能问答系统
前端·数据库·后端
Databend1 小时前
Databend 亮相 RustChinaConf 2025,分享基于 Rust 构建商业化数仓平台的探索
数据库
得物技术2 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
小码编匠3 小时前
WPF 中的高级交互通过右键拖动实现图像灵活缩放
后端·c#·.net
Raymond运维7 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb
沢田纲吉7 小时前
🗄️ MySQL 表操作全面指南
数据库·后端·mysql
唐青枫10 小时前
C#.NET 定时任务与队列利器:Hangfire 完整教程
c#·.net
hez201016 小时前
Runtime Async - 步入高性能异步时代
c#·.net·.net core·clr
RestCloud1 天前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud1 天前
为什么说零代码 ETL 是未来趋势?
数据库·api