学生姓名:
专业班级:
指导教师: 唐祖锴 题目:资产数据库设计 初始条件:
工作单位: 计算机学院
一个公司希望为管理它的每批资产(如PC机、打印机、汽车、桌子、椅子等)建立一个数据库。资产被分为几类,如计算机和设备。一个资产被分配给一个员工。财务人员要检查每批资产的现有市场价值,并记录下日期和现有价值。公司也许会决定卖掉现有资产。同样,每批资产都要进行维护。
要求完成的主要任务:
1. 根据上述的初始条件,进行调查分析并设计适当的属性。设计一个资产数据
库,DBMS可选Ms SQL Server、Access、VFP等。
2. 完成课程设计说明书,其格式遵守学校今年的新规定。主要内容包括:需求
分析,概念设计,逻辑设计,物理实现等。
3. 基于该数据库,最好实现一个或多个应用程序(自己确定功能),程序设计
语言(工具)任选。这一项是选作,不作硬性要求。
时间安排:
本学期第18周: 1. 消化资料、系统调查 2. 系统分析
3. 总体设计,实施计划 4. 撰写报告
1天 1天 2天 1天
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
一.背景及意义 :
传统人工的方式固定资产管理,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将给固定资产的更新和维护都带来了不少的困难,而且容易丢失。因此,开发一个代替手工操作的新型的计算机管理的固定资产管理系统是刻不容缓的。随着计算机技术的飞速发展,计算机在公司企业管理中应用的普及,利用计算机实现公司员工信息的管理势在必行。对于大中型企业来说,利用计算机支持企业高效率完成固定资产信息管理,是适应现代企业制度要求、推动固定资产管理走向科学化、规范化的必要条件;计算机进行管理工作,不仅能够保证准确无误、快速输出,而且还可以利用计算机对有关固定资产的各种信息进行统计,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高固定资产管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
二.需求分析:
1.资产管理流程图
资产检查 登陆 是否登陆 .资产信息 资产维护 资产变卖 资产增加 2.功能结构:
资产管理系统主要是对资产有关信息进行管理,它的主要功能如下: 1)进行资产信息的添加,变卖。 2)添加资产的维修记录。
3)添加资产的检测记录,并修改资产当前价值。 4)员工信息的添加修改删除。
三.概念设计:
概念结构设计就是将需求分析阶段得到的用户需求抽象为数据库的概念结构。本论文使用E-R图来描述系统的概念结构,即使用RE图表示需求分析的结果。实际设计过程中,首先分析系统中以实体为基本单位的局部ER图,然后分析两两实体之间的联系,画出两两实体之间的局部ER图,再讲两两实体之间联系的ER图作为基本单位,画出他们之间的ER图,以此类推,最后将各局部ER图拼合成全局ER图。
通过需求分析可知,资产管理系统的研究对象主要有资产,员工,维修记录,检查记录四个部分。
1.资产
资产编号 资产名称 资产类别 所属人编号 购买时间 资产 当前价值 初始价值 最近检时间 2.员工
编号 员工 姓名 3.维修记录
编号 资产编号 维修记录 维修时间 维修费用 4.检查记录
编号 资产编号 检查记录 检查时间 当时价值 四.逻辑设计
1.数据库设计:
fund 资产信息表 字段 id name belong type state buyvalue buydate
类型 int varchar(30) int tinyint tinyint decimal(10,2) date 其他 PRIMARY, AUTO_INCREMENT 备注 资产ID 资产名 拥有者ID 资产类型 状态 购买时价值 购买时间 注:状态有1和0两种,1为一般状态,0为已卖出状态。
staff 员工信息表 字段 id name
类型 int varchar(30) 其他 PRIMARY, AUTO_INCREMENT 备注 员工ID 员工姓名 repair 维修记录表 字段 id fundid date pay
类型 int int date decimal(7,2) 其他 PRIMARY, AUTO_INCREMENT 备注 记录ID 资产ID 维修时间 维修费用 finance 价值检查记录表 字段 id fundid 类型 int int 其他 PRIMARY, AUTO_INCREMENT 备注 记录ID 资产ID date value date decimal(7,2) 检查时间 当时价值 外键约束:
fund.belong → staff.id repair.fundid → belong.id finance.fundid → belong.id
2.数据库实现
1)建立staff表
CREATE TABLE staff (
id INT NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL )
AUTO_INCREMENT=100
2)建立fund表
CREATE TABLE fund (
id INT NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, belong INT NOT NULL , type INT NOT NULL ,
state TINYINT NOT NULL DEFAULT 1 , buyvalue decimal(10,2) NOT NULL, buydate DATE NOT NULL,
value decimal(10,2) NOT NULL, checkdate DATE NOT NULL,
FOREIGN KEY(belong) REFERENCES staff(id) ON DELETE CASCADE ON UPDATE CASCADE )
AUTO_INCREMENT=100
3)建立repair表
CREATE TABLE repair (
id INT NOT NULL AUTO_INCREMENT, fundid INT NOT NULL, date DATE NOT NULL,
pay decimal(7,2) NOT NULL,
FOREIGN KEY(fundid) REFERENCES fund(id) ON DELETE CASCADE
ON UPDATE CASCADE )
AUTO_INCREMENT=100
4)建立finance表
CREATE TABLE finance (
id INT NOT NULL AUTO_INCREMENT, fundid INT NOT NULL, date DATE NOT NULL,
value decimal(10,2) NOT NULL,
FOREIGN KEY(fundid) REFERENCES fund(id) ON DELETE CASCADE ON UPDATE CASCADE )
AUTO_INCREMENT=100
五.物理实现:
1.开发平台:
操作系统:windows XP
工具:Mysql, Apache, Notepad++, dreamweaver CS5 语言:PHP
2.相关技术:
1)PHP
PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。 PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法。它可以比 CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C++进行程序的扩展!
2)Apache
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被
广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache http server是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。 Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
3)Javascript
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。
实现流程:
安装mysql,apache,php,并正确配置。 使用dreamweaver编写html代码。 创建数据库。 编写php代码。 测试
3.系统截图:
资产列表
添加资产
员工列表
添加维修记录
维修记录
检查
检查记录
资产列表按人
4.代码:
1)添加资产:
$new_name = $_POST['name']; $new_belong = $_POST['belong']; $new_type = $_POST['type']; $new_date = $_POST['date'];
if(array_key_exists('value', $_POST)&&isset($_POST['value'])){ $new_value = $_POST['value']; }else{
$new_value = 0; }
$con = @mysql_connect('localhost','root','836522634'); mysql_query(\"set names 'utf8'\");
$db_select = mysql_select_db('company',$con);
$result = mysql_query(\"INSERT INTO fund(name, belong, type, buyvalue, buydate) VALUES ('$new_name', '$new_belong', '$new_type', '$new_value', '$new_date')\");
2)变卖资产:
$id = $_GET['id'];
$con = @mysql_connect('localhost','root','836522634'); mysql_query(\"set names 'utf8'\");
$db_select = mysql_select_db('company',$con); $result = mysql_query(\"UPDATE fund SET state='0' WHERE id='$id'
\");
header(\"location:show.php\");
3)显示资产:
资产编号 | 资产名称 | 所属人 | 添加日期 | 类别 | 初始价值 | 当前价值 | 操作 |
---|---|---|---|---|---|---|---|
$id | $name | $belong | $date | $type | $value | $now_value | 变卖检查维修修改 |
4)检查:
$fund = $_POST['id']; $value = $_POST['value']; $date = $_POST['date'];
$con = @mysql_connect('localhost','root','836522634'); mysql_query(\"set names 'utf8'\");
$db_select = mysql_select_db('company',$con);
$result = mysql_query(\"INSERT INTO finance(fundid, value, date) VALUE('$fund','$value','$date') \");
$add = mysql_query(\"UPDATE fund SET VALUE=$value WHERE id='$fund' \");
header(\"location:fund.php\");
5)维修:
$fund = $_POST['id']; $pay = $_POST['pay']; $date = $_POST['date'];
$con = @mysql_connect('localhost','root','836522634'); mysql_query(\"set names 'utf8'\");
$db_select = mysql_select_db('company',$con);
$result = mysql_query(\"INSERT INTO repair(fundid, pay, date) VALUE('$fund','$pay','$date') \");
header(\"location:fund.php\");
6)删除员工:
$id = $_GET['id'];
$con = @mysql_connect('localhost','root','836522634'); mysql_query(\"set names 'utf8'\");
$db_select = mysql_select_db('company',$con); $result = mysql_query(\"DELETE FROM staff WHERE id='$id' \");
header(\"location:staff.php\");
7)修改员工:
$name = $_POST['name']; $id= $_POST['id'];
$con = mysql_connect('localhost','root','836522634'); mysql_query(\"set names 'utf8'\");
$db_select = mysql_select_db('company',$con); $result = mysql_query(\"UPDATE staff SET name='$name' WHERE id='$id' \");
header(\"location:staff.php\");
8)修改资产:
$id = $_POST['id'];
$name = $_POST['name']; $belong = $_POST['belong']; $type = $_POST['type']; $date = $_POST['date'];
if(array_key_exists('value', $_POST)&&isset($_POST['value'])){ $value = $_POST['value']; }else{
$value = 0; }
$con = @mysql_connect('localhost','root','836522634'); mysql_query(\"set names 'utf8'\");
$db_select = mysql_select_db('company',$con); $result = mysql_query(\"UPDATE fund
SET name='$name',belong='$belong',type='$type',buyvalue='$value',buydate='$date' WHERE id='$id' \");
9)维修记录:
记录编号 | 资产名称 | 资产名称 | 维修时间 | 维修费用 |
---|---|---|---|---|
$id | $fundid | $name | $date | $pay |
因篇幅问题不能全部显示,请点此查看更多更全内容