一、实践目标

 训练目的:帮助读者感性地认识数据库系统的各组成部分,掌握数据库设计的基本方法,巩固对数据库基本解释和基本理论的理解。

功能目标:学校后勤公司希望通过计算机对后勤物资进行管理。

系统主要功能如下:
 (1)购货管理:包括采购合同管理和进货统计报表,采购合同管理又分为采购合同维护、采购执行情况跟踪、采购信息统计。
 (2)销售管理:分为销售合同管理和销售情况统计。销售合同管理包括销售合同的维护和管理,销售情况统计用于统计用与确定销售的数量和价格(可以按照类别、时间段等条件统计),统计所得的数据可以为今后指定后勤公司计划提供参考信息。
 (3)库存情况管理:用于管理库存情况,包括库存查询、库存盘点、库存上下限警报等,并生成库存统计图。
 (4)系统数据维护:分为物资供应商信息(编号、名称、主管、简介等)管理和产品信息管理。
 (5)账务管理:管理后勤公司的结账业务,每个月都要进行一次结账操作,确定该财务月份所有物资的进、销、结存情况,为财务管理提供数据。
 (6)系统管理:包括参数设置、权限设置、更改密码等。

二、基本实现思路

  1、首先前期准备进行需求分析,规划好每一个主体所含的属性以及每个主体之间的关系,建立E-R图,设置主外键。
 2、利用数据库设计工具PowerDesigner设计概念模型,设计完后转化为物理模型,管理好主外键的关系,进而转化为数据库建表的代码。
 3、利用数据库设计工具SQLServer 2012 Management Studio进行一些基本的操作,例如对表的测试,建立相关触发器、存储过程以及视图等等。
 4、利用Python实现前端,完成相关功能的界面及主界面,为用户提供友好界面等。
  5、将数据库与前端连接,实现数据库和前端的交互,完成学校后勤物资管理系统。
 6、最后对系统进行测试与优化,找出相应的解决方案。

三、关键技术与难点讨论

前端的设计难点:
 1、数据的展现方式需要对用户友好。
 2、难点在于对界面的转换和界面间数据的通信。
 3、与数据库间的交互,需要考虑对数据的保护,防止前端对数据的操作造成前后端数据不同步读脏数据。
 4、与数据库的连接。(进行验证登录账户是否是有效账户)

关键技术的实现:主要通过python的tkinter库完成,利用其进行前端的布局和设计,为用户提供友好界面,实现相关功能的界面;通过使用pymssql和pyodbc库对数据库进行连接通信。前后端数据的通信时,在前端对数据进行操作时不允许其他操作对其作用;对有的子功能需要使用到触发器,用以方便同步更新其他相关数据,简化步骤;另有其他界面有需要对不同的表间属性的展示,故需要建立视图,用以达到向用户展示友好界面的目的。

数据库设计:


GUI:


五、附录

软件使用手册:

  1. 购买货物需要提供:购货单号、产品单号、供应商单号、进价、数量、进货时间。
  2. 销售管理有两个子系统管理:1、查询销售情况(可按产品名称和月份查询) 2、销售需要提供: 销售单号、产品单号、客户单号、售价、数量、销售时间。
  3. 库存管理:可查询库存货物的存量等(提供按编号和货物名两种方式进行查询)。
  4. 数据管理:给用户提供多种方式查询供应商和产品的详细信息。
  5. 财务管理:给用户提供月报表,每月的结余盈利和进货销售情况,为用户下一月的进货提供参考。

数据库核心代码:

购货入库触发器:
ALTER trigger  TR_Buy_Store on Buy
after insert as
Declare @pnumber char(5),@gnumber numeric(2),@pprice int,@pquan int,@mnumber int,@snumber char(1)
select @pnumber=pNumber,@gnumber=gNumber,@pprice=pPrice,@pquan=pQuan,@mnumber=mNumber,@snumber=sNumber from inserted
begin
update Store
set Store.gNumber=@gNumber,Store.wTotal=Store.wTotal+@pquan
where (Store.gNumber=@gnumber)
End
购货月销售额触发器:
ALTER trigger TR_Buy_Total on Buy
for insert as
declare  @gnumber numeric(2),@pprice int,@pquan int,@mnumber int
select @gnumber=gNumber,@pprice=pPrice,@pquan=pQuan,@mnumber=inserted.mNumber from inserted
begin
update Total
set Total.pTotalMoney+=@pprice*@pquan
where Total.mNumber=@mnumber
update Total
set Total.TotalMoney=Total.SellTotalMoney-Total.pTotalMoney
where Total.mNumber=@mnumber
end
售货出库触发器:
ALTER trigger TR_Sell_Store on Sell
after insert as
Declare @sellnumber char(5),@gnumber char(1),@cnumber char(2),@mnumber int,@sellprice int,@sellquan int
select @sellnumber=SellNumber,@gnumber=inserted.gNumber,@cnumber=cNumber,@mnumber=mNumber,@sellprice=SellPrice,@sellquan=SellQuan from inserted
begin
update Store
set Store.wTotal=Store.wTotal-@sellquan
where (Store.gNumber=@gnumber) and @sellprice<Store.wTotal
end
售货月销售额触发器:
ALTER trigger TR_Buy_Total on Buy
for insert as
declare  @gnumber numeric(2),@pprice int,@pquan int,@mnumber int
select @gnumber=gNumber,@pprice=pPrice,@pquan=pQuan,@mnumber=inserted.mNumber from inserted
begin
update Total
set Total.pTotalMoney+=@pprice*@pquan
where Total.mNumber=@mnumber
update Total
set Total.TotalMoney=Total.SellTotalMoney-Total.pTotalMoney
where Total.mNumber=@mnumber
end

前端与数据库后台交互代码:

数据库连接
# -*- coding=utf-8 -*-
import pymssql
import pyodbc
import datetime
class DataBase():def __init__(self,server = "127.0.0.1", DataBase = "SQL2012", port = 22265):self.DataBase = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER=127.0.0.1,22265;DATABASE=SQL2012;UID=sa;PWD=123456')#self.DataBase = pymssql.connect(server = server, database = DataBase, port = port, charset="GBK")def SQL(self, sql):'''执行SQL语句,返回结果'''cur = self.DataBase.cursor()cur.execute(sql)try:result = cur.fetchall()except(pyodbc.ProgrammingError):print("改语句没有返回值")result = Nonecur.close()return resultdef Search(self,col_name = ["*"], Tables = [], condition = None, order = None):'''查找表args{col_name:列名默认全选Tables: 表名condition:WHERE 条件}'''if len(Tables) <= 0:print("查询失败,无表")return Falseif len(col_name) <= 0:col_name = ["*"]SQL = ""SELECT = "SELECT "for i in range(len(col_name)):SELECT += col_name[i]if i + 1 < len(col_name):SELECT += ","SQL += SELECTFROM = " FROM "for i in range(len(Tables)):FROM += Tables[i]if i + 1 < len(Tables):FROM += ","SQL += FROMWHERE = " WHERE "if condition:WHERE += conditionSQL += WHEREORDERBY = " ORDER BY "if order:ORDERBY += orderSQL += ORDERBYreturn self.SQL(SQL)def Update(self, Table, col_name, value, condition = None):'''修改表数据args{col_name:列名Tables: 表名condition:WHERE 条件}'''UPDATE = "UPDATE "UPDATE += TableSET = " SET "SET += col_name + "=" + valueWHERE = " WHERE "if condition:WHERE += conditionSQL = UPDATE + SET + WHEREprint(SQL)result = self.SQL(SQL)self.DataBase.commit()return resultdef Insert(self, Table, cols, values,commit = True):INSERT = "INSERT INTO "INSERT += Table + colsVALUES = " VALUES "VALUES += valuesSQL = INSERT + VALUESprint(SQL)result = self.SQL(SQL)if commit:self.DataBase.commit()return result

最后:完整代码

学校后勤物资管理系统(数据库课程设计)相关推荐

  1. 数据库课程设计:建材物资管理系统数据库课程设计

    数据库课程设计:建材物资管理系统数据库课程设计 ** 一.课设简述 ** 本次设计基于大二学习的数据库原理这门课程,选择了建材物资管理系统这个课设题目,在查阅了相关资料后,设计了集进货商家信息,进货报 ...

  2. 计算机机房管理系统 数据库课设,学校机房管理系统数据库课程设计.doc

    学校机房管理系统数据库课程设计.doc 数据库原理及应用课程设计设计报告题目机房管理系统后台数据库学号131007220学生姓名指导教师提交时间2015/1/4目录第1章需求分析111课程设计概述11 ...

  3. 关于书籍管理系统数据库课程设计

    关于书籍管理系统数据库课程设计 系统概述 该系统用以收集.存储书籍信息.人员(读者.图书管理员)信息.图书借阅信息以及意外处理信息,并及时记录存储各个环节信息的变更,以便管理.查询.显示.输出,以节约 ...

  4. 医院疫情管理系统-数据库课程设计(源码+数据库+报告全套)

    自己结合网上相关的知识做的数据库课程设计-医院管理系统(疫情),时间非常非常短暂做的比较粗糙,该版本为学院课设答辩之前,答辩时老师给了一些完善意见,但是没有时间去修改.... eclipse + SQ ...

  5. 中学学籍管理系统数据库课程设计,限于篇幅只能采取截图方式上传,原文件在我资源中有所展示。

    第五章 数据库物理设计 5.1 RDBMS的选择 中学生管理系统课程设计小组选择的是Microsoft的SQL Server的Windows.NT版本,主要是考虑到:Microsoft SQL Ser ...

  6. 职工考勤管理MySQL课程设计_考勤管理系统数据库课程设计.doc

    课 程 设 计 课程名称 数据库系统概论_____ 题目名称 考勤管理系统 学生学院 计算机学院 专业班级 学 号 学生姓名 ________ 指导教师 左亚尧 2012年 1月 16日 一.需求分析 ...

  7. 学生成绩管理系统mysql课程设计_学生成绩管理系统数据库课程设计报告.doc

    目 录 TOC \o "1-2" \h \z \u HYPERLINK \l "_Toc303696065" 1.开发背景 PAGEREF _Toc303696 ...

  8. 酒店管理系统+数据库课程设计+资料齐全+高分

    题目: 酒店管理和宾客端服务系统 96分 这里写目录标题 一.绪论 二.任务的描述 三.任务设计 四.编写代码 五.感想认识 六.截图 七.使用步骤 分享原因 一.绪论 酒店管理和宾客端服务系统的意义 ...

  9. 住院管理系统数据库课程设计

    对这次课程设计做个总结: 首先,数据库优化做的不太好,其次,需求分析这里,分析不正确,医生开药应该是先对数据库查询,看是否存在此类药品,如果存在,对应药品的数量减一,将该药品加入药单中,我是直接开成了 ...

  10. 学生选课管理系统 数据库课程设计

    资源链接 ***主要能实现以下几个功能,不同的用户需要不同的登陆端来实现不同的功能,学生端要实现选课,退课,能看自己的课程表,能看自己的成绩表等功能,教师端要实现对自己学生的基本信息的增加,修改,删除 ...

最新文章

  1. require.js学习记录
  2. [Redux/Mobx] 在redux中,什么是store?
  3. 数字逻辑对偶式_数字电子技术实验——组合逻辑电路的设计
  4. 深入浅出聊Unity3D优化:从Draw Calls到GC
  5. 整理一些计算机基础知识!
  6. 适应浏览器自带断点下载
  7. matlab arma 仿真,基于Matlab的ARMA模型时间序列分析法仿真
  8. 计算机显示屏知识,电脑显示器知识大全
  9. pillow库——使用图像类Image
  10. 数据从hana倒回Oracle的方法,SAP HANA SLT 将Oracle表 数据同步到HANA数据库
  11. echarts实现词云图表,及参数配置详解
  12. 腾讯云tca认证题库
  13. [工具书]常用软件注册表位置
  14. Win10便签设置日历的一周第一天为周日的方法
  15. 图卷积神经网络(GCN)目前的应用领域
  16. 基于KCP的可靠UDP封装
  17. 求出1-1/2+1/3-1/....1/100的和
  18. job运行失败分析方法
  19. ArcGIS和Global Mapper中按分幅图框进行批量DOM分幅裁剪命名(附练习数据)
  20. joomla本地安装全过程

热门文章

  1. Python编程从入门到实践学习内容包含哪些?
  2. 【Java EE】Day10 JavaScript高级、DOM、BOM、事件
  3. 抓包工具——【Mac】Charles的下载和安装
  4. 小米r1d安装php,小米路由器 一键安装LLM教程
  5. 微软服务器打不开,微软应用商店打不开解决方法汇总
  6. 发那科机器人点位编辑_分步详解 | 发那科机器人如何进行零点标定
  7. 自建机房与IDC机房对比
  8. hevc参考代码matlab版,HEVC部分源码剖析
  9. Scratch3架构结构说明
  10. html插入cad,如何快速的在CAD中插入数字?