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

news2025/7/16 5:02:04

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2372722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[JAVAEE]HTTP协议(2.0)

响应报文格式 响应报文格式由首行&#xff0c;响应头&#xff08;header&#xff09;&#xff0c;空行&#xff0c;正文&#xff08;body&#xff09; 组成 响应报文首行包括 1.版本号 如HTTP/1.1 2.状态码(如200) 描述了请求的结果 3.状态码描述(如OK) 首行——状态码…

VUE+ElementUI 使用el-input类型type=“number” 时,取消右边的上下箭头

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中有时候需要输入框的type“number”&#xff0c;这个时候&#xff0c;输入框的右边就会出现两个按钮&#xff0c;这两个按钮可以递增/递减&#xff0c;但是这样输入框看上去就不太美观&#x…

计算机视觉——MedSAM2医学影像一键实现3D与视频分割的高效解决方案

引言 在乡村医院的傍晚高峰时段&#xff0c;扫描室内传来阵阵低沉的嗡鸣声&#xff0c;仿佛一台老旧冰箱的运转声。一位疲惫的医生正全神贯注地检查着当天的最后一位患者——一位不幸从拖拉机上摔下的农民&#xff0c;此刻正呼吸急促。CT 机器飞速旋转&#xff0c;生成了超过一…

垃圾分类宣教小程序源码介绍

随着环保意识的提升&#xff0c;垃圾分类已成为我们生活中不可或缺的一部分。为了更好地宣传和教育大众关于垃圾分类的知识&#xff0c;一款基于ThinkPHP、FastAdmin和UniApp开发的垃圾分类宣教小程序应运而生。 该小程序源码结合了ThinkPHP的强大后台功能、FastAdmin的高效管…

【wpf】12 在WPF中实现HTTP通信:封装HttpClient的最佳实践

一、背景介绍 在现代桌面应用开发中&#xff0c;网络通信是不可或缺的能力。WPF作为.NET平台下的桌面开发框架&#xff0c;可通过HttpClient轻松实现与后端API的交互。本文将以一个实际的HttpsMessages工具类为例&#xff0c;讲解如何在WPF中安全高效地封装HTTP通信模块。 二、…

【Hive入门】Hive安全管理与权限控制:用户认证与权限管理深度解析

目录 引言 1 Hive安全管理体系概述 2 Hive用户认证机制 2.1 Kerberos集成认证 2.1.1 Kerberos基本原理 2.1.2 Hive集成Kerberos配置步骤 2.1.3 Kerberos认证常见问题排查 2.2 LDAP用户同步 2.2.1 LDAP协议概述 2.2.2 Hive集成LDAP配置 2.2.3 LDAP与Hive用户同步架构…

解决 Builroot 系统编译 perl 编译报错问题

本文提供一种修复 Builroot 系统编译 perl 编译报错途径 2025-05-04T22:45:08 rm -f pod/perl5261delta.pod 2025-05-04T22:45:08 /usr/bin/ln -s perldelta.pod pod/perl5261delta.pod 2025-05-04T22:45:08 /usr/bin/gcc -c -DPERL_CORE -fwrapv -fpcc-struct-return -pipe -f…

强化学习PPO算法学习记录

1. 四个模型&#xff1a; Policy Model&#xff1a;我们想要训练的目标语言模型。我们一般用SFT阶段产出的SFT模型来对它做初始化。Reference Model&#xff1a;一般也用SFT阶段得到的SFT模型做初始化&#xff0c;在训练过程中&#xff0c;它的参数是冻结的。Ref模型的主要作用…

从零开始:用PyTorch构建CIFAR-10图像分类模型达到接近1的准确率

为了增强代码可读性&#xff0c;代码均使用Chatgpt给每一行代码都加入了注释&#xff0c;方便大家在本文代码的基础上进行改进优化。 本文是搭建了一个稍微优化了一下的模型&#xff0c;训练200个epoch&#xff0c;准确率达到了99.74%&#xff0c;简单完成了一下CIFAR-10数据集…

初学Python爬虫

文章目录 前言一、 爬虫的初识1.1 什么是爬虫1.2 爬虫的核心1.3 爬虫的用途1.4 爬虫分类1.5 爬虫带来的风险1.6. 反爬手段1.7 爬虫网络请求1.8 爬虫基本流程 二、urllib库初识2.1 http和https协议2.2 编码解码的使用2.3 urllib的基本使用2.4 一个类型六个方法2.5 下载网页数据2…

【办公类-99-05】20250508 D刊物JPG合并PDF便于打印

背景需求 委员让我打印2024年2025年4月的D刊杂志&#xff0c;A4彩打&#xff0c;单面。 有很多JPG&#xff0c;一个个JPG图片打开&#xff0c;实在太麻烦了。 我需要把多个jpg图片合并成成为一个PDF&#xff0c;按顺序排列打印。 deepseek写Python代码 代码展示 D刊jpg图片合…

相机的方向和位置

如何更好的控制相机按照我们需要来更好的观察我们需要的地貌呢? 使用 // setview瞬间到达指定位置,视角//生成position是天安门的位置var position Cesium.Cartesian3.fromDegrees(116.397428,39.90923,100)viewer.camera.setView({//指定相机位置destination: position, 在…

suna界面实现原理分析(二):浏览器工具调用可视化

这是一个基于React的浏览器操作可视化调试组件&#xff0c;主要用于在AI开发工具中展示网页自动化操作过程&#xff08;如导航、点击、表单填写等&#xff09;的执行状态和结果。以下是关键技术组件和功能亮点的解析&#xff1a; 一、核心功能模块 浏览器操作状态可视化 • 实时…

操作系统面试问题(4)

32.什么是操作系统 操作系统是一种管理硬件和软件的应用程序。也是运行在计算机中最重要的软件。它为硬件和软件提供了一种中间层&#xff0c;让我们无需关注硬件的实现&#xff0c;把心思花在软件应用上。 通常情况下&#xff0c;计算机上会运行着许多应用程序&#xff0c;它…

C++ Dll创建与调用 查看dll函数 MFC 单对话框应用程序(EXE 工程)改为 DLL 工程

C Dll创建 一、添加 DllMain&#xff08;必要&#xff09; #include <fstream>void Log(const char* msg) {std::ofstream f("C:\\temp\\dll_log.txt", std::ios::app);f << msg << std::endl; }BOOL APIENTRY DllMain(HMODULE hModule, DWORD u…

【prometheus+Grafana篇】基于Prometheus+Grafana实现Linux操作系统的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页 &#x1f50e; IF Club社区主页 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了…

CurrentHashMap的整体系统介绍及Java内存模型(JVM)介绍

当我们提到ConurrentHashMap时&#xff0c;先想到的就是HashMap不是线程安全的&#xff1a; 在多个线程共同操作HashMap时&#xff0c;会出现一个数据不一致的问题。 ConcurrentHashMap是HashMap的线程安全版本。 它通过在相应的方法上加锁&#xff0c;来保证多线程情况下的…

spring ai alibaba 使用 SystemPromptTemplate 很方便的集成 系统提示词

系统提示词可以是.st 文件了&#xff0c;便于修改和维护 1提示词内容&#xff1a; 你是一个有用的AI助手。 你是一个帮助人们查找信息的人工智能助手。 您的名字是{name} 你应该用你的名字和{voice}的风格回复用户的请求。 每一次回答的时候都要增加一个65字以内的标题形如:【…

网络的搭建

1、rpm rpm -ivh 2、yum仓库&#xff08;rpm包&#xff09;&#xff1a;网络源 ----》网站 本地源 ----》/dev/sr0 光盘映像文件 3、源码安装 源码安装&#xff08;编译&#xff09; 1、获取源码 2、检测环境生成Ma…

C++学习之类和对象_1

1. 面向过程与面向对象 C语言是面向过程的&#xff0c;注重过程&#xff0c;通过调用函数解决问题。 比如做番茄炒蛋&#xff1a;买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅 而C是面向对象的&#xff…