基于C# WinForm开发的固定资产管理系统

一、系统架构设计

请添加图片描述


二、核心功能模块

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
    };
}

五、系统特性

  1. 权限控制 管理员:全功能权限 普通用户:仅查看和基础操作

  2. 数据验证

    // 资产编号唯一性验证
    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;
    }
    
  3. 报表导出

    // 使用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

六、部署与维护

  1. 数据库初始化脚本

    -- 创建数据库
    CREATE DATABASE assetsDB;
    USE assetsDB;
    
    -- 创建表结构
    CREATE TABLE Assets (...);
    CREATE TABLE Users (...);
    
  2. 系统维护功能 数据库备份/恢复 操作日志记录 系统参数配置


七、扩展建议

  1. 移动端适配 开发PDA版扫码入库模块,支持资产现场登记
  2. 物联网集成 通过RFID技术实现资产自动盘点
  3. 云同步功能 使用Azure SQL Database实现多地点数据同步
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值