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

相关推荐
旺仔学长 哈哈10 分钟前
Spring Boot 智能停车场管理系统---附源码+数据库文档
数据库·spring boot·后端·智能停车场
ClickHouseDB27 分钟前
ClickHouse托管Postgres:OLTP+OLAP,新能力解锁最佳数据平台
java·前端·数据库
霸道流氓气质29 分钟前
Java中集成Smile 技术教程:从入门到工程实践
java·开发语言
BerrySen1781 小时前
迈向 Next-Gen Java:企业级高并发架构演进与大模型 Agent 落地深度实战
java·开发语言·架构
数智化管理手记1 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
吴声子夜歌1 小时前
MongoDB 4.2——选择片键
数据库·mongodb
Nebula_g2 小时前
Java实现本地Socket通信(三)
java·开发语言·学习·socket·可视化
一水2 小时前
java运行排错,新码旧jar
java·开发语言·jar
天天进步一点点2 小时前
QSqlQuery删除sqlite数据库执行drop数据表报错database table is locked unable to fetch row问题
数据库·oracle·sqlite
音视频工程实战2 小时前
PromptQL 新手入门与实战指南
数据库·sql·算法