连锁超市进销存系统课程设计:VB6.0+SQL Server 2000完整报告与避坑指南
简介这份课程设计报告面向信息系统分析与设计相关专业的学生与自学者围绕连锁超市进销存管理信息系统的完整开发流程展开可用于课程设计参考、答辩准备或系统分析设计的实战练习。压缩包内共1个doc文档约1.01MB内容涵盖设计背景、技术可行性分析、系统分析、系统设计、系统实施等章节并配有总体用例图、业务流程活动图、序列图、状态图、类图及数据库需求与结构设计等图示说明。报告还涉及代码设计、输入输出设计、系统规格制订、体系结构及物理配置方案并推荐采用SQL Server 2000数据库、VB 6.0前端工具与ADO编程模型附有登录、商品类型、商品信息、进货、销售等典型窗体设计说明。目前已有66人学习适合需要完整进销存系统设计思路与文档框架的读者参考借鉴。1. 连锁超市进销存系统课程设计一份能直接跑通 VB6.0 SQL Server 2000 的完整报告如果你正在做《信息系统分析与设计》的课程设计选题又恰好落在“连锁超市进销存管理信息系统”上那这份 doc 报告大概率能帮你省掉至少三天的建模返工。它不是那种只堆理论、画两张图就交差的模板而是从可行性分析、用例图、活动图、序列图、状态图、类图一路推到数据库表结构、代码设计、输入输出设计最后落到 VB6.0 窗体命名和 SQL Server 2000 建库的完整链路。换句话说它把“系统分析—系统设计—系统实施”三段全走了一遍而且每一步都留了可抄的图名、表名和窗体名。适合两类人一是被 UML 建模卡住、不知道活动图和序列图该画到什么颗粒度的新手二是已经画完图但不知道怎么把图翻译成数据库表和 VB 窗体的熟手。下面我按自己拆文档的顺序把这份报告里真正能落地的部分挑出来讲。2. 系统分析阶段用例图、活动图、序列图到底该画到什么颗粒度2.1 四类角色与用例边界怎么切这份报告把系统角色切成四种系统维护员、采购员、库房管理员、前台售货员外加一个 Database 作为数据终点。这个切法在课程设计里很稳因为角色数量刚好够画一张不拥挤的用例图又不会少到让老师觉得你没做需求调研。系统维护员权限最大负责商品基本信息、商品类型信息、基本数据库信息、员工基本信息、员工操作权限采购员管供货商信息和货品采购库房管理员管库存查询、库存维护、协助进货出货前台售货员只负责销售信息录入。这个权限划分直接决定了后面数据库里员工表的“权限编码”字段怎么设计。我一般会建议在画用例图之前先把每个角色的操作列成一张对照表避免画到一半发现某个操作不知道该挂给谁。报告里虽然没有单独列这张表但从 3.3 节的描述可以反推出来角色核心用例对应数据表系统维护员维护商品基本信息、商品类型、员工信息、权限设置商品信息表、商品类型表、员工信息表采购员维护供货商信息、货品采购供应商信息表、进货信息表库房管理员查询库存、维护库存、协助进货出货商品信息表、进货信息表前台售货员销售信息录入销售信息表这张表的好处是你画用例图时可以直接按行来画完用例图再画类图时类之间的关联关系也基本确定了。2.2 活动图采购、上架、销售三条业务线怎么拆报告里只对三条业务线画了活动图采购业务、货物上架、货物销售。这个选择很聪明因为这三条线覆盖了进、销、存三个核心环节而且每条线的泳道划分都很清晰。采购业务的活动顺序是采购员进货后登录系统修改进货信息 → 安排货物入库 → 库管员核对数量 → 数量相符则修改库存量 → 安排货品入库。这里的关键是“核对”这个动作它决定了活动图里必须有一个判断节点而不是一条直线走到底。货物上架业务更复杂一些卖场人员提出提货请求 → 库管员核对请求与现有库存 → 如果提货量或库存有问题就提出修改 → 如果提货量与总公司指示不符则通知卖场修改请求 → 如果库存不足则通知采购员采购 → 请求与库存相符则修改库存量 → 安排货品出货 → 卖场人员上架。这条线里有三个判断分支画的时候要注意泳道之间的箭头不要交叉太多否则图会很难看。货物销售业务相对简单顾客选购 → 到收款台交款 → 售货员条码扫描 → POS 机计算款项 → 售货员在系统中添加销售信息 → 收取款项 → 顾客提货。这条线的重点是 POS 机与销售管理系统的连接报告里明确写了“前台 POS 机是与销售管理系统相连接的”所以在活动图里要把 POS 机作为一个独立的泳道或者对象节点。提示画活动图时判断节点的条件写在箭头上不要写在节点里否则图会显得很乱。报告里的图虽然看不到但从文字描述可以反推出判断条件的位置。2.3 序列图删除供货商、添加商品类别、修改员工信息报告选了三个功能画序列图删除供货商信息、添加商品类别信息、修改员工基本信息。这三个功能的共同点是都涉及“权限判断 → 查询 → 操作 → 数据库反馈”这条链路画清楚一条另外两条基本可以套。以删除供货商信息为例序列是采购员进入系统 → 登录界面 → 权限判断 → 进入供货商信息管理界面 → 查询并选择需要删除的供货商 → 点击删除按钮 → 系统弹出确认删除对话框 → 确认后系统删除数据库中相应记录。这里有个细节值得注意报告里写了“系统对该信息进行删除并且在系统弹出的‘确认删除’对话框中进行确认”也就是说删除操作有两步确认这在课程设计里是一个加分项因为它体现了你对数据安全的考虑。添加商品类别的序列多了一个“判断是否已有”的步骤系统维护员登录 → 权限判断 → 进入商品类别管理界面 → 查询现有商品类别 → 确认非已有信息 → 点击添加 → 输入新类别信息 → 系统再次判断非已有 → 向数据库添加 → 返回成功或“商品信息已有”。修改员工基本信息的序列是系统维护员登录 → 权限判断 → 进入员工基本信息管理界面 → 选择要修改的员工 → 点击修改 → 信息在已设计好的模式中显示 → 操作员修改 → 点击保存 → 成功则显示修改成功失败则显示修改不成功。这三条序列图的共同结构是登录 → 权限判断 → 进入管理界面 → 查询/选择 → 操作 → 数据库反馈。你如果时间紧可以只画一条完整的另外两条用文字说明差异即可。2.4 状态图与类图员工信息管理的状态迁移和七个核心类状态图只画了员工信息管理这一个功能状态迁移是管理员登录 → 员工基本信息管理界面 → 发出查询请求 → 输入查询条件 → 找到相应员工信息 → 可进行添加、修改、删除操作。这个状态图比较简单但足够交差。类图是分析阶段的核心产出。报告里明确写了系统包括 7 个表商品基本信息表、商品单位信息表、商品类型信息表、商品进货信息表、商品销售信息表、员工信息表再加上供应商信息表虽然文字里写的是“7个表”但列出来的是 6 个加上供应商信息表刚好 7 个。每个表的字段也在报告里列清楚了商品类型信息商品类型编号、商品类型名称商品信息商品编号、商品名称、商品介绍、库存量商品单位信息单位编号、单位名称供应商信息供应商名称、介绍进货信息进货商品、数量、单位、单价、进货时间、送货人、经手人销售信息销售商品、数量、单位、单价、销售日期员工信息员工账号、密码、所在部门、用户名、权限编码这七个表的字段设计基本覆盖了进销存的核心数据流。你如果要在数据库里建表可以直接按这个字段列表来只需要补上主键和外键关系。3. 数据库设计从需求分析到 SQL Server 2000 建表3.1 需求分析里的六条硬约束报告在 4.2.1 节列了六条需求信息这六条直接决定了数据库的约束设计商品按类管理所以需要商品类型信息表。商品必须属于一个商品类型所以商品信息表里要有类型编号作为外键。如果一个商品类型存在商品则该类型不可删除这是一个业务规则需要在应用层或者触发器里实现。需要记录供应商信息所以要有供应商信息表。在涉及商品数量的地方要给出相应的单位所以要有商品单位信息表。在进货信息中要包含商品供应商等信息所以进货信息表里要有供应商字段。这六条里第 3 条是最容易在课程设计里被忽略的。很多同学建完表就完了不会去考虑“类型下有商品时不可删除”这种业务约束。报告里明确写了这一条说明作者确实做了需求分析而不是直接套模板。3.2 七个表的字段设计与主外键关系根据报告 4.2.2 节的数据库关系图和 3.7 节的类图描述可以整理出下面这张表结构对照表名主要字段主键外键商品类型信息表商品类型编号、商品类型名称商品类型编号无商品单位信息表单位编号、单位名称单位编号无商品信息表商品编号、商品名称、商品介绍、库存量、类型编号、单位编号商品编号类型编号→商品类型信息表单位编号→商品单位信息表供应商信息表供应商名称、介绍供应商名称无进货信息表进货商品、数量、单位、单价、进货时间、送货人、经手人、供应商名称进货单号进货商品→商品信息表供应商名称→供应商信息表销售信息表销售商品、数量、单位、单价、销售日期销售编号销售商品→商品信息表员工信息表员工账号、密码、所在部门、用户名、权限编码员工账号无这张表可以直接拿去建库。需要注意的是报告里写的“商品信息表”字段里没有明确列出类型编号和单位编号但从需求分析的第 2 条和第 5 条可以推断出来这两个字段是必须有的否则商品无法关联到类型和单位。3.3 在 SQL Server 2000 里建库的实操步骤报告选的是 SQL Server 2000这个版本现在来看确实老但课程设计里用老版本反而省事因为安装包小、对系统要求低。如果你手头只有 SQL Server 2008 或更高版本建表语句基本兼容只需要注意数据类型上的差异。下面是我按报告字段整理的建表脚本可以直接在 SQL Server 2000 的查询分析器里跑-- 创建数据库 CREATE DATABASE SupermarketDB GO USE SupermarketDB GO -- 商品类型信息表 CREATE TABLE 商品类型信息表 ( 商品类型编号 VARCHAR(20) PRIMARY KEY, 商品类型名称 VARCHAR(50) NOT NULL ) GO -- 商品单位信息表 CREATE TABLE 商品单位信息表 ( 单位编号 VARCHAR(20) PRIMARY KEY, 单位名称 VARCHAR(20) NOT NULL ) GO -- 商品信息表 CREATE TABLE 商品信息表 ( 商品编号 VARCHAR(20) PRIMARY KEY, 商品名称 VARCHAR(100) NOT NULL, 商品介绍 VARCHAR(255), 库存量 INT DEFAULT 0, 类型编号 VARCHAR(20), 单位编号 VARCHAR(20), FOREIGN KEY (类型编号) REFERENCES 商品类型信息表(商品类型编号), FOREIGN KEY (单位编号) REFERENCES 商品单位信息表(单位编号) ) GO -- 供应商信息表 CREATE TABLE 供应商信息表 ( 供应商名称 VARCHAR(100) PRIMARY KEY, 介绍 VARCHAR(255) ) GO -- 进货信息表 CREATE TABLE 进货信息表 ( 进货单号 VARCHAR(20) PRIMARY KEY, 进货商品 VARCHAR(20), 数量 INT, 单位 VARCHAR(20), 单价 DECIMAL(10,2), 进货时间 DATETIME, 送货人 VARCHAR(50), 经手人 VARCHAR(50), 供应商名称 VARCHAR(100), FOREIGN KEY (进货商品) REFERENCES 商品信息表(商品编号), FOREIGN KEY (供应商名称) REFERENCES 供应商信息表(供应商名称) ) GO -- 销售信息表 CREATE TABLE 销售信息表 ( 销售编号 VARCHAR(20) PRIMARY KEY, 销售商品 VARCHAR(20), 数量 INT, 单位 VARCHAR(20), 单价 DECIMAL(10,2), 销售日期 DATETIME, FOREIGN KEY (销售商品) REFERENCES 商品信息表(商品编号) ) GO -- 员工信息表 CREATE TABLE 员工信息表 ( 员工账号 VARCHAR(20) PRIMARY KEY, 密码 VARCHAR(50) NOT NULL, 所在部门 VARCHAR(50), 用户名 VARCHAR(50), 权限编码 VARCHAR(10) ) GO这段脚本的逻辑是按“先建无外键的表再建有外键的表”的顺序来的避免外键引用不存在的表。参数上商品编号、单位编号、类型编号都用 VARCHAR(20)是因为报告里说编码多数采用顺序码顺序码用字符串存比用整数存更灵活方便以后加前缀。库存量用 INT 默认 0是因为新商品入库前库存应该是 0。单价用 DECIMAL(10,2)保留两位小数符合金额的常规精度。注意SQL Server 2000 不支持CREATE TABLE里的FOREIGN KEY直接写在列定义后面必须写成表级约束上面的脚本已经按表级约束写了。如果你用的是 SQL Server 2008 及以上版本列级约束也能跑但表级约束更通用。3.4 代码设计、输入设计与输出设计的落地要点报告 4.3 节把代码设计、输入设计、输出设计放在一起讲这三块在课程设计里经常被合并但其实是三个不同的设计维度。代码设计方面报告说商品编号、送货号、商品类型号、单位编号、销售编号、员工账号及员工权限编码多数采用顺序码。顺序码的好处是简单、不重复坏处是不含业务信息。如果你想让编码更有意义可以把商品编号设计成“类型编号顺序号”的格式比如“T001-0001”这样一看就知道商品属于哪个类型。输入设计方面报告明确写了前台用条码扫描仪和收银机键盘联合输入后台用普通台式计算机键盘。条码扫描仪通过扫描把实物条码转换为系统中的商品编号然后查询商品名称、单价、单位等信息并在 POS 机中计算总价。这个流程在 VB6.0 里实现时需要在销售窗体的商品编号文本框上绑定一个“回车即查询”的事件而不是等用户点按钮。输出设计方面报告分了内部信息和外部信息。内部信息是给系统内部人员看的比如修改员工信息后的结果直接显示在屏幕上外部信息是给顾客和超市管理层看的顾客拿到的是 POS 机打印的购物小票管理层拿到的是报表生成接口生成的报表。这个区分在 VB6.0 里对应的是不同的输出控件屏幕显示用 Label 或 TextBox打印小票用 Printer 对象报表用 DataReport 或者第三方报表控件。4. 系统实施VB6.0 窗体命名、ADO 连接与典型界面设计4.1 五个核心窗体的命名与功能划分报告 5.1 节列了五个典型界面登陆窗体 frmLogin、商品类型信息窗体 frmMType、商品信息窗体 frmMerch、进货信息窗体 frmBuy、销售信息窗体 frmSell。这个命名规范很标准前缀 frm 表示窗体后面跟功能缩写你在 VB6.0 里建窗体时可以直接照抄。登陆窗体 frmLogin 是系统的入口负责验证员工账号和密码并根据权限编码决定进入哪个主界面。商品类型信息窗体 frmMType 负责商品类型的增删改查对应商品类型信息表。商品信息窗体 frmMerch 负责商品基本信息的增删改查对应商品信息表同时要处理类型编号和单位编号的下拉选择。进货信息窗体 frmBuy 负责进货信息的登记、修改和删除对应进货信息表。销售信息窗体 frmSell 负责销售信息的登记、修改和删除对应销售信息表。这五个窗体覆盖了系统的主要操作但报告里没有提到库存管理窗体。从功能结构设计来看库存管理应该是一个独立模块可能是在商品信息窗体里通过库存量字段来体现也可能是单独做了一个库存查询窗体。如果你要补全可以加一个 frmStock 窗体专门做库存查询和库存调整。4.2 ADO 连接 SQL Server 2000 的代码模板报告 4.5.3 节明确写了采用 ADO 编程模型。ADO 在 VB6.0 里连接 SQL Server 2000 的标准做法是用 Connection 对象打开连接然后用 Recordset 对象操作数据。下面是一个可以直接复用的连接模块 模块modDB.bas 功能提供数据库连接和通用查询方法 Public conn As ADODB.Connection Public rs As ADODB.Recordset 打开数据库连接 Public Sub OpenDB() Set conn New ADODB.Connection 连接字符串Provider 用 SQLOLEDBData Source 填服务器名或 IP Initial Catalog 填数据库名User ID 和 Password 填 SQL Server 登录账号 conn.ConnectionString ProviderSQLOLEDB;Data Source127.0.0.1; _ Initial CatalogSupermarketDB; _ User IDsa;Passwordsa; conn.Open End Sub 关闭数据库连接 Public Sub CloseDB() If Not rs Is Nothing Then If rs.State adStateOpen Then rs.Close Set rs Nothing End If If Not conn Is Nothing Then If conn.State adStateOpen Then conn.Close Set conn Nothing End If End Sub 执行查询返回 Recordset Public Function QuerySQL(ByVal sql As String) As ADODB.Recordset Set rs New ADODB.Recordset rs.Open sql, conn, adOpenStatic, adLockReadOnly Set QuerySQL rs End Function 执行增删改返回受影响行数 Public Function ExecSQL(ByVal sql As String) As Long Dim cmd As ADODB.Command Set cmd New ADODB.Command cmd.ActiveConnection conn cmd.CommandText sql cmd.Execute ExecSQL cmd.Execute Set cmd Nothing End Function这段代码的逻辑是OpenDB 负责建立连接CloseDB 负责释放资源QuerySQL 返回只读记录集用于查询ExecSQL 执行增删改并返回受影响行数。参数上连接字符串里的 Data Source 可以填 127.0.0.1 或者本机计算机名Initial Catalog 填你建的数据库名User ID 和 Password 填 SQL Server 的登录账号。如果你用的是 Windows 身份验证可以把 User ID 和 Password 换成Integrated SecuritySSPI。提示VB6.0 里使用 ADO 需要在“工程”→“引用”里勾选“Microsoft ActiveX Data Objects 2.x Library”否则 ADODB 对象无法识别。4.3 登陆窗体的权限判断逻辑登陆窗体 frmLogin 的核心逻辑是用户输入账号和密码 → 查询员工信息表 → 如果账号密码匹配 → 读取权限编码 → 根据权限编码打开不同的主界面。下面是一个简化的实现 窗体frmLogin 功能验证登录并跳转 Private Sub cmdLogin_Click() Dim sql As String Dim rsLogin As ADODB.Recordset 防止 SQL 注入把单引号替换成两个单引号 Dim userName As String Dim password As String userName Replace(txtUser.Text, , ) password Replace(txtPwd.Text, , ) sql SELECT 员工账号, 权限编码 FROM 员工信息表 _ WHERE 员工账号 userName AND 密码 password Set rsLogin QuerySQL(sql) If rsLogin.EOF Then MsgBox 账号或密码错误, vbCritical, 登录失败 Else 根据权限编码跳转 Select Case rsLogin.Fields(权限编码).Value Case 01 系统维护员 frmMain.Show Case 02 采购员 frmBuy.Show Case 03 库房管理员 frmStock.Show Case 04 前台售货员 frmSell.Show Case Else MsgBox 权限编码未定义, vbExclamation, 提示 End Select Unload Me End If rsLogin.Close Set rsLogin Nothing End Sub这段代码的关键点是第一用 Replace 把单引号替换掉防止 SQL 注入这是课程设计里容易被忽略但老师很看重的安全细节第二权限编码用 Select Case 分支01 到 04 分别对应四种角色第三登录成功后 Unload Me 关闭登录窗体避免用户返回。4.4 进货与销售窗体的库存联动进货信息窗体 frmBuy 和销售信息窗体 frmSell 在操作数据库时除了要写入进货信息表和销售信息表还要同步更新商品信息表的库存量。进货时库存量增加销售时库存量减少。这个联动逻辑在课程设计里是一个加分项因为它体现了“进销存”三个环节的数据一致性。下面是一个进货时更新库存的示例 窗体frmBuy 功能登记进货信息并更新库存 Private Sub cmdSave_Click() Dim sql As String Dim goodsID As String Dim qty As Integer goodsID Trim(txtGoodsID.Text) qty Val(txtQty.Text) 先插入进货记录 sql INSERT INTO 进货信息表 (进货单号, 进货商品, 数量, 单位, 单价, 进货时间, 送货人, 经手人, 供应商名称) _ VALUES ( txtBuyID.Text , goodsID , qty , txtUnit.Text , Val(txtPrice.Text) , Now , txtSender.Text , txtHandler.Text , cboSupplier.Text ) ExecSQL sql 再更新库存量 sql UPDATE 商品信息表 SET 库存量 库存量 qty WHERE 商品编号 goodsID ExecSQL sql MsgBox 进货登记成功库存已更新, vbInformation, 提示 End Sub这段代码的逻辑是先写进货记录再更新库存。参数上进货单号、进货商品、数量、单位、单价、送货人、经手人、供应商名称都从窗体控件取值进货时间用 Now 函数取当前时间。库存更新用库存量 库存量 qty的写法而不是先查询再赋值这样可以避免并发问题。销售窗体的逻辑类似只是库存更新变成库存量 库存量 - qty并且在减库存之前要先判断库存量是否足够。如果库存不足要弹出提示并中止销售操作。5. 避坑与排查课程设计里最容易翻车的五个地方5.1 用例图角色太多或太少现象画用例图时要么把 Database 也画成一个角色要么只画一个“用户”角色导致用例图要么太乱要么太简单。原因对“活动者”的定义不清楚。活动者是系统外部与系统交互的人或事物Database 在报告里被列为活动者但它其实是系统内部组件严格来说不应该出现在用例图里。解决把 Database 从活动者里去掉只保留系统维护员、采购员、库房管理员、前台售货员四个角色。如果老师要求体现数据存储可以在用例描述里写而不是画在用例图里。5.2 活动图泳道交叉过多现象画采购业务活动图时采购员、库管员、系统三个泳道之间的箭头来回穿插图看起来像蜘蛛网。原因把“系统”也画成了一个泳道导致每个操作都要在人和系统之间来回跳。解决活动图里只画人的泳道系统的动作作为活动节点写在人的泳道里或者用“系统自动处理”作为一个单独的活动节点但不单独占泳道。报告里的活动图虽然看不到但从文字描述看应该是按人来分泳道的。5.3 数据库外键顺序建错现象建表时先建了进货信息表再建商品信息表结果外键引用失败报“引用的表不存在”。原因SQL Server 建表时外键引用的表必须先存在。解决按“无外键表 → 有外键表”的顺序建先建商品类型信息表、商品单位信息表、供应商信息表、员工信息表再建商品信息表最后建进货信息表和销售信息表。上面的建表脚本已经按这个顺序排好了。5.4 VB6.0 连接 SQL Server 2000 报错现象运行 VB6.0 程序时OpenDB 报“未找到提供程序”或“登录失败”。原因一是没有在工程引用里勾选 ADO 库二是连接字符串里的 Data Source 或账号密码不对三是 SQL Server 2000 没有启用 SQL Server 身份验证。解决先检查“工程”→“引用”里有没有“Microsoft ActiveX Data Objects 2.x Library”再检查连接字符串里的服务器名、数据库名、账号密码最后在 SQL Server 2000 的企业管理器里确认服务器属性里的“安全性”是“SQL Server 和 Windows”混合模式。5.5 库存更新没有事务保护现象进货时先插入了进货记录但更新库存时程序崩溃导致进货记录有了但库存没加。原因两个操作没有放在同一个事务里。解决在 VB6.0 里用 ADO 的 Connection 对象开启事务两个操作都成功后提交任何一个失败就回滚。示例conn.BeginTrans On Error GoTo Rollback ExecSQL INSERT INTO 进货信息表 ... ExecSQL UPDATE 商品信息表 SET 库存量 库存量 qty WHERE ... conn.CommitTrans Exit Sub Rollback: conn.RollbackTrans MsgBox 操作失败已回滚, vbCritical6. 从报告到可运行系统补全库存查询与报表输出的两个技巧报告在系统实施部分只列了五个窗体库存查询和报表输出没有单独展开。如果你要把这份课程设计从“报告”推到“可运行系统”这两个模块是必须补的。库存查询我一般会做成一个独立窗体 frmStock用 MSFlexGrid 控件显示商品编号、商品名称、库存量、类型名称、单位名称数据来源是商品信息表关联商品类型信息表和商品单位信息表。查询条件可以按商品名称模糊查也可以按类型下拉筛选。下面是一个查询语句的示例SELECT 商品信息表.商品编号, 商品信息表.商品名称, 商品信息表.库存量, 商品类型信息表.商品类型名称, 商品单位信息表.单位名称 FROM 商品信息表 LEFT JOIN 商品类型信息表 ON 商品信息表.类型编号 商品类型信息表.商品类型编号 LEFT JOIN 商品单位信息表 ON 商品信息表.单位编号 商品单位信息表.单位编号 WHERE 商品信息表.商品名称 LIKE % keyword %这个查询用 LEFT JOIN 而不是 INNER JOIN是因为有些商品可能还没分配类型或单位用 LEFT JOIN 可以保证这些商品也能查出来。参数 keyword 是从窗体文本框取的模糊查询关键词。报表输出我一般用 VB6.0 自带的 DataReport 设计器数据源绑定到销售信息表的查询结果按销售日期分组显示每日销售额和商品明细。如果 DataReport 用不惯也可以用 Printer 对象直接画表格但代码量会大一些。报告里提到的“报表生成接口”应该就是这个思路。最后说一个我自己的习惯每次做完课程设计我都会把建表脚本、连接模块、登陆窗体、进货窗体、销售窗体这五个文件单独存一份下次做类似题目时直接改表名和字段名就能复用。这份报告的价值不在于它有多完美而在于它把从分析到实施的每一步都写清楚了你照着走一遍至少不会在“活动图该画几个泳道”或者“外键该先建哪张表”这种问题上卡住。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

TRAE 报 401 别急着重装:把 Base URL 改到 TaoToken 的排查清单

TRAE 报 401 别急着重装:把 Base URL 改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 17:44:51 阅读更多 →
MRS数据处理原理与避坑指南:从FID预处理到定量验证

MRS数据处理原理与避坑指南:从FID预处理到定量验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 17:44:51 阅读更多 →
DevOps度量体系搭建指南:从DORA四指标到持续改进机制

DevOps度量体系搭建指南:从DORA四指标到持续改进机制

项目标题: 13.3 度量驱动:建立 DevOps 度量体系与持续改进机制 项目正文: 围绕DevOps度量体系的建设目标,讲解度量指标的选择原则、四类关键指标(交付lead time、部署频率、变更失败率、MTTR),以及度量驱动持续改进的闭…

2026/10/2 17:44:51 阅读更多 →

最新新闻

基于CNN的人脸识别考勤系统:预训练模型快速落地与避坑指南

基于CNN的人脸识别考勤系统:预训练模型快速落地与避坑指南

简介:这份资源是一套可直接运行的CNN人脸识别考勤系统,面向深度学习入门者、课程设计或毕业设计开发者,帮助快速搭建从人脸采集到考勤记录落地的完整方案。压缩包共4848个文件,以4835张jpg人脸图像构成训练与测试数据集&#xff0…

2026/10/2 18:20:11 阅读更多 →
GNOME Shell扩展完全指南:安装、管理与排错

GNOME Shell扩展完全指南:安装、管理与排错

1. GNOME Shell 扩展到底是什么玩意 先说明一下,GNOME Shell 是 GNOME 桌面环境的“壳”,就是你在屏幕上看到的那层交互界面:顶部状态栏、活动视图(Activities)、通知中心、桌面切换动画,全是它负责的。而 …

2026/10/2 18:20:11 阅读更多 →
从零搭建AI工程能力:工程优先的实践路径与避坑指南

从零搭建AI工程能力:工程优先的实践路径与避坑指南

1. 从零搭建AI工程能力:为什么我劝你别一上来就啃论文"ai-engineering-from-scratch"这个标题,我第一次看到的时候心里咯噔了一下。过去两年多,我陆陆续续带过七八个想转AI工程方向的朋友,也帮不少团队做过模型落地的技…

2026/10/2 18:20:11 阅读更多 →
零代码AI应用平台落地实践:从工作流编排到智能客服搭建

零代码AI应用平台落地实践:从工作流编排到智能客服搭建

最近跟几个做SaaS的老朋友聊天,大家不约而同都在折腾同一件事——怎么把手里的AI能力包装成客户能直接用的产品。有的还在用最原始的方式接API、写前端、调prompt,开发周期按周算;有的已经换了思路,直接在零代码AI应用平台上搭&am…

2026/10/2 18:20:11 阅读更多 →
RK3576 LCD驱动适配要点:VOP3时钟、PMIC协同与dts陷阱

RK3576 LCD驱动适配要点:VOP3时钟、PMIC协同与dts陷阱

1. 为什么RK3576的LCD驱动不能照搬RK3399或RK3566的写法?刚拿到RK3576开发板时,我第一反应是把之前在RK3399上跑通的LCD驱动代码直接移植过来——毕竟都是瑞芯微的SoC,寄存器命名风格相似,dts节点结构也看着差不多。结果烧录后屏幕…

2026/10/2 18:20:10 阅读更多 →
基于Python机器学习的加密恶意流量检测平台实战

基于Python机器学习的加密恶意流量检测平台实战

简介:本资源为基于Python机器学习的加密恶意流量分析与检测平台完整项目包,面向计算机、自动化等专业学生及安全方向从业者,可用于毕业设计、课程大作业或期末课程设计,帮助解决加密恶意流量识别与可视化监测问题。压缩包共134个文…

2026/10/2 18:19:10 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →