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#教程 目录

相关推荐
NineData1 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师4 小时前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
Ray Liang6 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
全栈老石8 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
倔强的石头_1 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Scout-leaf3 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530143 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba