一、系统架构设计

二、核心功能模块
1. 资产管理
// 资产信息实体类
public class Asset
{
public string AssetId { get; set; } // 资产编号
public string AssetName { get; set; } // 资产名称
public string Category { get; set; } // 资产类型
public DateTime PurchaseDate { get; set; } // 采购日期
public decimal OriginalValue { get; set; } // 原值
public string Location { get; set; } // 存放地点
public string ResponsibleDept { get; set; } // 责任部门
public AssetStatus Status { get; set; } // 资产状态
}
// 状态枚举
public enum AssetStatus
{
正常,
报废,
出租,
维修中
}
2. 数据库设计
CREATE TABLE Assets (
AssetId NVARCHAR(20) PRIMARY KEY,
AssetName NVARCHAR(100) NOT NULL,
Category NVARCHAR(50) CHECK (Category IN ('电子设备','机械设备','运输设备')),
PurchaseDate DATETIME NOT NULL,
OriginalValue DECIMAL(18,2),
Location NVARCHAR(100),
ResponsibleDept NVARCHAR(50),
Status NVARCHAR(20) DEFAULT '正常'
);
CREATE TABLE Users (
UserId INT PRIMARY KEY IDENTITY,
Username NVARCHAR(50) UNIQUE,
Password NVARCHAR(50),
Role NVARCHAR(20) CHECK (Role IN ('管理员','普通用户'))
);
三、关键技术实现
1. 数据库访问层
public class DBHelper
{
private static string connStr = "Data Source=assets.db;Version=3;";
public static DataTable ExecuteQuery(string sql, params SqlParameter[] parameters)
{
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddRange(parameters);
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
{
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddRange(parameters);
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
2. 资产管理窗体
public partial class AssetManagementForm : Form
{
private DataGridView dataGridView;
private BindingSource bindingSource = new BindingSource();
public AssetManagementForm()
{
InitializeComponent();
InitializeDataGridView();
LoadData();
}
private void InitializeDataGridView()
{
dataGridView.DataSource = bindingSource;
dataGridView.Columns.AddRange(
new DataGridViewTextBoxColumn { DataPropertyName = "AssetId", HeaderText = "资产编号" },
new DataGridViewTextBoxColumn { DataPropertyName = "AssetName", HeaderText = "资产名称" },
new DataGridViewTextBoxColumn { DataPropertyName = "Category", HeaderText = "资产类型" },
new DataGridViewTextBoxColumn { DataPropertyName = "PurchaseDate", HeaderText = "采购日期" },
new DataGridViewTextBoxColumn { DataPropertyName = "OriginalValue", HeaderText = "原值" }
);
}
private void LoadData()
{
string sql = "SELECT * FROM Assets";
DataTable dt = DBHelper.ExecuteQuery(sql);
bindingSource.DataSource = dt;
}
private void btnSave_Click(object sender, EventArgs e)
{
string sql = @"INSERT INTO Assets (AssetId, AssetName, Category, PurchaseDate, OriginalValue)
VALUES (@AssetId, @AssetName, @Category, @PurchaseDate, @OriginalValue)";
DBHelper.ExecuteNonQuery(sql,
new SqlParameter("@AssetId", txtAssetId.Text),
new SqlParameter("@AssetName", txtAssetName.Text),
new SqlParameter("@Category", cmbCategory.Text),
new SqlParameter("@PurchaseDate", dtpPurchaseDate.Value),
new SqlParameter("@OriginalValue", numericOriginalValue.Value));
MessageBox.Show("保存成功!");
LoadData();
}
}
四、高级功能实现
1. 条码打印功能
// 使用BarcodeLib生成条码
public void GenerateBarcode(string assetId)
{
Barcode barcode = new Barcode();
barcode.Encode(TYPE.CODE128, assetId);
Bitmap bitmap = barcode.Render(100, 50);
bitmap.Save("barcode.png");
}
2. 折旧计算模块
public decimal CalculateDepreciation(string method, decimal originalValue,
DateTime startDate, DateTime endDate)
{
TimeSpan period = endDate - startDate;
int months = (int)period.TotalMonths;
return method switch
{
"直线法" => originalValue / 5 / 12 * months,
"双倍余额递减法" => originalValue * 2 / 5 * (1 - Math.Pow(0.4, months)),
_ => 0
};
}
五、系统特性
-
权限控制 管理员:全功能权限 普通用户:仅查看和基础操作
-
数据验证
// 资产编号唯一性验证 private bool ValidateAssetId(string assetId) { string sql = "SELECT COUNT(*) FROM Assets WHERE AssetId=@id"; int count = (int)DBHelper.ExecuteScalar(sql, new SqlParameter("@id", assetId)); return count == 0; } -
报表导出
// 使用FastReport生成PDF报表 public void ExportToPDF(DataTable data, string outputPath) { Report report = new Report(); report.Load("ReportTemplate.frx"); report.RegisterData(data, "Assets"); report.Prepare(); report.Export(new PDFExport(), outputPath); }
参考代码 winform 固定资产管理系统源码下载(三层架构) www.youwenfan.com/contentcso/93571.html
六、部署与维护
-
数据库初始化脚本
-- 创建数据库 CREATE DATABASE assetsDB; USE assetsDB; -- 创建表结构 CREATE TABLE Assets (...); CREATE TABLE Users (...); -
系统维护功能 数据库备份/恢复 操作日志记录 系统参数配置
七、扩展建议
- 移动端适配 开发PDA版扫码入库模块,支持资产现场登记
- 物联网集成 通过RFID技术实现资产自动盘点
- 云同步功能 使用Azure SQL Database实现多地点数据同步
1191

被折叠的 条评论
为什么被折叠?



