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 ENDC#端用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 Server192.168.1.100,1433;DatabaseBookDB;User Idsa;PasswordyourStrongPassword;;要确保SQL Server配置了允许远程连接防火墙开放1433端口。实际部署建议用Windows身份验证更安全这里为演示方便用了SQL验证。项目文档里特意写了几个典型错误场景窗体卡顿——该用BackgroundWorker的地方没异步图片显示变形——PictureBox的SizeMode没设Zoom翻页时页码错乱——PageIndex从0还是1开始没统一这些坑新手八成会踩文档里都给了解决方案。源码里还藏了个彩蛋FrmMain窗体的关闭按钮实际是隐藏窗体真正退出得走菜单的退出命令——防止用户手滑关程序。这种防呆设计适合需要长时间运行的管理系统。想要源码的伙计注意看GitHub仓库里的DB_Script文件夹里面除了建表语句还有模拟数据的存储过程能一键生成10万条测试数据专门用来测试分页性能。