南昌市网站建设_网站建设公司_Spring_seo优化
2026/1/22 0:55:19 网站建设 项目流程

C#Windows窗体开发的图书管理系统,可远程,有文档,供学习参考使用,主要功能:涵盖数据库增删查改,登录注册,上传图片

图书馆里那本被翻烂的《C#入门经典》终于派上用场了!最近用Windows窗体搞了个带远程访问的图书管理系统,数据库操作、图片上传这些实战功能一个不少,代码里还埋了不少新手容易踩的坑。直接上硬货——

登录模块藏着个有意思的设计:注册时密码用SHA256加盐哈希。看看这段加密代码:

public static string HashPassword(string password, string salt) { using (var sha256 = SHA256.Create()) { var saltedPassword = password + salt; byte[] bytes = Encoding.UTF8.GetBytes(saltedPassword); byte[] hash = sha256.ComputeHash(bytes); return Convert.ToBase64String(hash); } }

这里用using自动释放SHA256实例,避免内存泄漏。加盐操作把用户注册时间戳作为盐值,比单纯用固定盐安全得多。

图书管理模块的核心是带分页的DataGridView绑定。重点看这个分页查询的存储过程:

CREATE PROCEDURE GetBooksPaged @PageIndex INT, @PageSize INT AS BEGIN SELECT * FROM Books ORDER BY BookID OFFSET (@PageIndex - 1) * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY END

C#端用Dapper执行存储过程,比拼接SQL安全。注意OFFSET子句从SQL Server 2012开始支持,比以前的ROW_NUMBER()方案更简洁。

图片上传功能在WinForm里有点小麻烦。用OpenFileDialog选图后,需要转换成字节数组存数据库:

byte[] imageBytes; using (MemoryStream ms = new MemoryStream()) { pictureBox.Image.Save(ms, ImageFormat.Jpeg); imageBytes = ms.ToArray(); } // 存数据库时用varbinary(max)字段

但别直接存原图!我在项目里加了图片压缩逻辑,超过2MB的自动压缩到1024x768分辨率,避免数据库膨胀。

C#Windows窗体开发的图书管理系统,可远程,有文档,供学习参考使用,主要功能:涵盖数据库增删查改,登录注册,上传图片

远程访问的关键在连接字符串:

string connStr = "Server=192.168.1.100,1433;Database=BookDB;User Id=sa;Password=yourStrongPassword;";

要确保SQL Server配置了允许远程连接,防火墙开放1433端口。实际部署建议用Windows身份验证更安全,这里为演示方便用了SQL验证。

项目文档里特意写了几个典型错误场景:

  1. 窗体卡顿——该用BackgroundWorker的地方没异步
  2. 图片显示变形——PictureBox的SizeMode没设Zoom
  3. 翻页时页码错乱——PageIndex从0还是1开始没统一

这些坑新手八成会踩,文档里都给了解决方案。

源码里还藏了个彩蛋:FrmMain窗体的关闭按钮实际是隐藏窗体,真正退出得走菜单的退出命令——防止用户手滑关程序。这种防呆设计适合需要长时间运行的管理系统。

想要源码的伙计注意看GitHub仓库里的DB_Script文件夹,里面除了建表语句,还有模拟数据的存储过程,能一键生成10万条测试数据,专门用来测试分页性能。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询