软件工程实验报告 小型书店系统.docx
《软件工程实验报告 小型书店系统.docx》由会员分享,可在线阅读,更多相关《软件工程实验报告 小型书店系统.docx(30页珍藏版)》请在冰豆网上搜索。
![软件工程实验报告 小型书店系统.docx](https://file1.bdocx.com/fileroot1/2023-1/29/0dbdae93-5856-4dd6-8460-9c60aa597d14/0dbdae93-5856-4dd6-8460-9c60aa597d141.gif)
软件工程实验报告小型书店系统
湖南师范大学工学院电子与信息工程系课程设计报告书
小
型
书
店
管
理
系
统
2011-7-3
HunanNormalUniversity
ELECTRONIC&INFORMATIONENGINEERINGDEPARTMENT
湖南师范大学工学院电子与信息工程系课程设计登记表
课程设计题目
小型书店管理系统
指导教师姓名
钟坚成
指导老师职称
讲师
学生姓名
陈鑫林
所属班级
计算机科学与技术
任务要求
1.接口设计
用户接口是提供给用户的操作界面,全部操作应通过窗口完成,可以使用菜单上或按钮式。
2.功能设计
应用系统功能通常根据实际目标设定,一般应具有基本的增、删、改、查功能。
主要实施步骤
项目的开发时间计划花三周完成,一周时间做好主界面和需求分析,并搭建好项目环境,一周时间建立数据库,实现项目功能,基本功能增、删、改。
一周时间做扩展功能,由于时间限制,扩展功能未有弄好,不过界面上体现了我的思想。
结
论
1.通过这次系统的开发,让我对PHP有了更深的认识,界面是我花了心思弄的,因为自己对CSS+DIV的结构一直比较熟悉,也长弄页面设计,所以这是自己最得意的地方。
2.但是系统的功能方面还是非常的欠缺,问题也比较的多,初步设计的很多附加功能都没有实现。
界面有很多JS特效也并不是人性化。
3.希望通过这个简单的项目开发来实现基本功能,后期我还会强化这个项目,让它能够成为一个人性的,成熟的书店管理系统。
4.感觉做好一个项目还是需要花很多的功夫,个个方面优秀的系统需要一个团队的合作,才能出精品。
注:
此表格内容中的任务要求为指导教师提供的课程设计要求,主要实施步骤是指课程设计的时间安排,结论是指通过课程设计得出的有关结论及课程设计不足之处或进一步开发方向。
引言
在当今的Internet时代,电子商务发展日新月异,它已成为商业系统不可缺少的一部分。
电子商务是在Internet的广阔联系与传统信息技术系统的丰富资源相互结合的背景下,所产生的一种相互关联的动态商务活动,是一种通过电子方式进行的商务活动,不是传统意义上的通过面对面的交换或面对面的交谈方式进行的交易方式,而是一种系统的、完整的电子化运作。
如今,Internet已经成为电子商务应用的一个核心平台,它的进步将会推进电子商务的全面发展。
如今电子商务已经成长为日常生活中的应用,大大改变了人们进行商业活动的方式、时间、地点。
为商家提供了更为广阔的商业市场,为消费者提供了更多可选择商品和更便捷的购物方式。
课程设计目标
根据对小型书店管理系统的调查研究,系统具有的功能需要满足以下几个设计目标:
1.实用性原则:
真正为小型书店的实际工作服务,按照需求的轻重缓急,合理设计网上图书销售管理系统。
2.友好性原则:
尽量使系统的设计界面更具人性化,简单化,使管理者使用起来操作方面,易懂。
3.稳定性原则:
系统功能稳定、可靠。
4.可扩展性原则:
采用开放的标准和接口,便于系统向更大的规模和功能扩展。
编程工具(编程环境)介绍
介绍进行课程设计所使用的编程工具或编程环境。
本系统主要使用PHP语言开发,因为PHP语法简单,容易上手,目前的主流技术它都支持,而且跨平台,性能优越。
采用IIS服务器支持,数据库语言是mysql5.1
实施时间及主要实施步骤
本项目开发的时间原定为两周,第一天用来安装IIS+PHP+MySQL的环境;接下来的两天用来做系统的需求分析,把系统的主要架构规划好;用一天时间做登录界面;两天时间做首页;接下来的一星期用来做各功能模块和子模块等等。
需求分析
本系统的需求如下:
A.要求页面整洁、美观大方、能够体现书店形象,符合书店主题。
B.提供技术支持,解决编程过程中常见的问题。
C.提供一个良好的售书及购书的平台。
2.1系统总体设计
小型书店管理系统的功能如下表所示,其中每个功能由若干相关联的子功能模块组成。
流程图
小型书店管理系统流程图
1.此系统的操作者只限管理员。
2.书店管理员通过小型书店管理系统来进行书店相关信息的查询和管理,如:
对图书信息进行管理和更新,对供应商信息进行管理和维护,对客户信息进行记录和更新,按年份月份查询当月书店销售金额,查询营业金额,查询某种图书的库存量,查询当月销售量最好的图书信息量,查询订购信息,查询客户信息,对系统数据库进行增改并对相关数据进行分类统计。
3.图书信息。
当新书到达时对新书的相关信息进入录入并将图书文件进行更新。
4.供应商信息。
当需要订购书本时就将相应的供应商信息记录下来并保存到供应商文件中方便以后了解订购情况。
5.客户信息。
当客户在书店购买书本后应对客户的相关信息进行登记,收集客户对本店的服务的满意程度,对改进书店的服务提供参考。
应将客户的相关信息存入客户信息文件。
6.查询当月书店销售金额。
根据销售文件计算出当月的销售金额,对每月的销售信息中的销售单价进行汇总求出每月的销售金额并保存到相应的文件。
7.查询当月利润。
对销售信息中的销售单价及相对的订购信息中的订价之间的差价进行汇总并保存。
8.查询某种图书的库存量。
根据销售信息中的销售名称,对图书信息文件进行及时更新,保持数据的一致性。
9.查询当月销售量最好的图书信息。
对销售信息中的销售名称进行分类汇总并统计每类图书的月销售量并按销售的数量进行降序保存到相应的文件。
10.查询订购信息。
在图书信息中的图书数量不够时记录用户的订购信息,方便进货后及时通知相应的用户。
11.查询客户信息。
在客户信息文件中查询客户的相关信息。
各子模块描述
1.信息管理
信息管理用于对图书信息、供应商信息、客户信息等项目进行初始化设置,包含信息如下表所示。
信息管理
图书信息
订购信息
供应商信息
客户信息
销售信息
图书信息(图书名称、出版社名称、作者名称、入库时间、库存数量、进价、零售价、金额);将图书的相关信息保存到相关的图书文件。
订购信息(图书名称、出版社名称、作者名称、订购单价、订购时间、订购数量、供应商名称、订购金额)
供应商信息(供应商名称,地址,电话,联系人);并将相关的信息保存到供应商文件当中。
客户信息(客户编号、客户姓名、年龄、性别、电话号码、累计购书金额);在录入信息后将客户信息保存到相关的客户信息文件中。
销售信息(图书名称、出版社名称、作者名称、售书时间、销售数量、销售单价、销售金额、客户编号、客户姓名);将相关的信息保存到销售信息文件当中。
2.查询功能
查询功能用于查询相关的销售信息,包含的功能模块如下表所示。
查询功能
搜索范围(订单,图书,供货商,客户)
搜索时间(一周,一个月,一年,更早)
搜索类型(销售额,营业额,库存,销量)
通过条件搜索更加的灵活
2.2数据库设计
生成的E-R图
n
n
n
n
1
n
1
其中一个图书信息可以由多个供应商供应,一个供应商可以提供多类图书信息;故供应商与图书信息之间是多对多的关系。
一个书店可以有多类图书信息;故书店和图书之间是一对多的关系。
一个客户可以购买多类图书,一类图书可以由多个客户购买;故客户与图书之间是多对多的关系。
一个书店可以订购多类图书。
1.图书信息表(图书名称,金额,出版社名称,作者名称,库存数量);
表名:
Books
中文名
字段名
数据类型
是否可空
是否为关键字
备注
图书名称
Book_name
Varchar(50)
NONULL
是
金额
Tot_money
Float(8,2)
NULL
出版社名称
Pre_name
Varchar(50)
NULL
作者名称
Aut_name
Varchar(10)
NULL
库存数量
Inv_amount
Int(10)
NULL
入库时间
Inv_time
date
NULL
进价
In_price
Float(8,2)
NULL
零售价
Ord_price
Float(8,2)
NULL
2、供应商信息(供应商名称,地址,电话,联系人);
表名:
Supplier
中文名
字段名
数据类型
是否可空
是否为关键字
备注
供应商名称
Sup_name
Varchar(20)
NONULL
是
地址
Sup_address
Varchar(50)
NULL
否
电话
Sup_phone
Varchar(20)
NULL
否
联系人
contact
Varchar(10)
NULL
否
3、客户信息(客户编号、客户改名、年龄、性别、电话、累计购书金额);
表名:
Customers
中文名
字段名
数据类型
是否可空
是否为关键字
备注
客户编号
Cus_number
Varchar(20)
NONULL
是
客户姓名
Cus_name
Varchar(10)
NULL
否
年龄
Cus_age
Int(3)
NULL
否
性别
Cus_sex
Varchar
(2)
NULL
否
累计购书金额
Tot_money
Float(8,2)
NULL
否
电话
Cus_phone
Varchar(20)
NULL
否
4、订购信息(图书名称、出版社名称、作者姓名、订购数量,订购时间,订购单价,供应商名称);
表名:
Ordering
中文名
字段名
数据类型
是否可空
是否为关键字
备注
图书名称
Book_name
Varchar(20)
NONULL
是
订购数量
Ord_quantity
Int(10)
NULL
否
订购时间
Ord_time
date
NULL
否
订购单价
Ord_price
Float(8,2)
NULL
否
供应商名称
Sup_name
Varchar(10)
NONULL
是
出版社名称
Pre_name
Varchar(10)
作者姓名
Aut_name
Varchar(10)
订购金额
Ord_money
Float(8,2)
5、销售信息(销售时间、出版社名称、作者姓名、图书名称、销售数量、销售单价、客户编号、客户名称、金额);
表名:
Sales
中文名
字段名
数据类型
是否可空
是否为关键字
备注
售书时间
Sal_time
date
否
图书名称
book_name
Varchar(20)
NotNULL
是
销售数量
Sal_quantity
Int(10)
否
销售单价
Sal_price
Float(8,2)
否
客户编号
Cus_number
Varchar(20)
否
客户名称
Cus_name
Varchar(20)
否
销售金额
Tot_money
Float(8,2)
否
出版社名称
Pre_name
Varchar(10)
作者姓名
Aut_name
Varchar(10)
主要功能模块的设计与实现
本系统主要包括三大模块,即管理信息、查询功能以及系统设置。
其中管理信息又包括五个小模块:
图书信息、客户信息、供应商信息、订购信息、销售信息。
查询功能所包括的模块有:
查询当月销售额、当月利润、销量最好的书、某种图书库存量。
系统设置中的模块为用户设置。
管理员登录模块的设计
管理员登录模块详细设计
管理员登录页面主要用于收集管理员输入信息及通过自定义的javascript函数验证输入信息是否为空。
该页面中所涉及到的表单元素如下表:
名称
元素类型
重要属性
含义
jjj
form
action="chklogin.php"method="post"
管理员登录表单
name
text
type="text"name="name"
用户名
pwd
Password
type="password"name="pwd"
管理员密码
清除
reset
value="清除"
“清除”按钮
确定
submit
value="提交"onclick="returncheck(this.form)"
“确定”按钮
管理员登录模块算法流程
编写自定义的javascript函数,用于判断管理员名称和密码是否为空,代码如下:
登录模块界面设计及测试结果
简单而富有视觉冲击力的登录界面
首页模块的设计
首页模块详细设计
首页主要用CSS样式设计了一个多级水平导航菜单,用于链接所需要实现的各子功能的各子页面。
页面右上方用$_session[]从登录页面获取了管理员名称。
首页界面设计及测试结果
主页面以及设计,界面的快速导航和人性化的操作菜单
功能导航
快速导航:
首页功能区:
管理信息模块设计
图书信息模块设计
管理员进入首页后,单击管理信息下的图书信息即进入此页面,在该页中显示库存中的全部图书信息列表,同时提供了删除图书信息、修改图书信息和添加图书信息的功能,其中删除和修改是用图片作为连接,添加图书信息是用按钮作为连接。
3.3.1.1图书信息模块详细设计
图书信息模块所涉及到的表单有三种,一种是添加图书信息的表单,另外两种是修改和删除图书信息的表单。
均采用POST方法提交。
主要表单及表单元素如下:
(1)添加图书信息
名称
元素类型
重要属性
含义
S1
form
action="book_add.php"target="_self"method="post"
添加图书信息表单
add
submit
value="添加图书信息"onclick="returncheck(this.form)"
添加图书信息
(2)修改图书信息
名称
元素类型
重要属性
含义
modify
form
action="book_modify.php"target="_self"method="post"
修改图书信息表单
id
hidden
value="
phpecho$info[0];?
>"
图书名称
mod
image
type="image"src="../img/edit.jpg"value="修改"onclick="this.form.submit()"
修改图标
(3)删除图书信息
名称
元素类型
重要属性
含义
del
form
action="book_del.php"target="_self"method="post"id="del"
删除图书信息表单
did
hidden
value="
phpecho$info[0];?
>"
图书名称
delete
image
type="image"src="../img/delete.jpg"value="删除"onclick="this.form.submit()"
删除图标
为了显示库存中的图书信息,需连接数据库,主要的连接及查询数据库的语句如下:
php
include("E:
/studyphp/lb/db.php");
$db=newdatabase("bookshop");
mysql_query("setnames'utf8'");
$sql=$db->querys("SELECTbook_name,tot_money,pre_name,aut_name,inv_amount,inv_time,in_price,ord_priceFROMbooks");
$info=mysqli_fetch_array($sql);
?
>
3.3.1.2图书信息模块算法
3.3.1.3图书管理模块界面设计及测试结果
为了方便和快速,管理板块的菜单设计:
在主界面的右面也有快速导航:
添加图书:
单击
操作菜单中的修改按钮:
客户信息模块设计
同图书管理模块一样,在该页中显示库存中的全部客户信息列表,同时提供了删除客户信息、修改客户信息和添加客户信息的功能,其中删除和修改是用图片作为连接,添加客户信息是用按钮作为连接。
3.3.2.1客户信息模块详细设计
同图书管理模块一样,客户信息模块所涉及到的表单有三种,一种是添加客户信息的表单,另外两种是修改和删除客户信息的表单。
均采用POST方法提交。
主要表单及表单元素如下:
(1)添加客户信息
名称
元素类型
重要属性
含义
S1
form
action="customer_add.php"target="_self"method="post"
添加客户信息表单
add
submit
value="添加客户信息"onclick="returncheck(this.form)"
添加客户信息
(2)修改客户信息
名称
元素类型
重要属性
含义
modify
form
action="customer_modify.php"target="_self"method="post"
修改信息表单
id
hidden
value="
phpecho$info[0];?
>"
客户编号
mod
image
type="image"src="../img/edit.jpg"value="修改"onclick="this.form.submit()"
修改图标
(3)删除客户信息
名称
元素类型
重要属性
含义
del
form
action="customer_del.php"target="_self"method="post"id="del"
删除客户信息表单
did
hidden
value="
phpecho$info[0];?
>"
客户编号
delete
image
type="image"src="../img/delete.jpg"value="删除"onclick="this.form.submit()"
删除图标
为从数据库中调出客户信息,需要连接数据库,主要代码如下:
php
include("E:
/studyphp/lb/db.php");
$db=newdatabase("bookshop");
mysql_query("setnames'utf8'");
$sql=$db->querys("SELECTcus_number,cus_name,cus_age,cus_sex,tot_money,cus_phoneFROMcustomers");
$info=mysqli_fetch_array($sql);
?
>
3.3.2.2客户信息模块算法流程
客户信息页面主要代码如下:
php
include("E:
/studyphp/lb/db.php");
$db=newdatabase("bookshop");
mysql_query("setnames'utf8'");
$sql=$db->querys("SELECTcus_number,cus_name,cus_age,cus_sex,tot_money,cus_phoneFROMcustomers");
$info=mysqli_fetch_array($sql);?
>
3.3.2.3客户信息模块界面设计及测试结果
客户管理的操作界面也图书管理的一致,保持风格和方便性,这是导航菜单
单击添加客户信息后,其测试界面如下:
修改界面和添加界面是一样的,只是把添加界面的信息提交到了修改界面
以上修改和删除保存后弹出的提示信息类似于图书信息中的提示信息,在此就不说了。
单击删除图标后,弹出的提示信息也类似于图书信息中删除图书的提示信息,在此不赘述了。
另外的供应商信息模块、销售信息模块、订购信息模块其设计和测试结果同上类似,为避免重复,下面只给出其部分代码和测试结果:
1.添加销售信息
添加销售信息模块测试结果:
所有订单:
2.验证添加销售信息的部分代码:
phpinclude("E:
/studyphp/lb/db.php");
$db=newdatabase("bookshop");
mysql_query("setnames'utf8'");
$bookname=$_POST['bookname'];
$saltime=$_POST['saltime'];
$salamount=$_POST['salamount'];
$salprice=$_POST['salprice'];
$cusnumber=$_POST['cusnumber'];
$cusname=$_POST['cusname'];
$saltat=$_POST['saltat'];
$pre=$_POST['pre'];
$author=$_POST['author'];
$sql=$db->querys("insertintosales(book_name,sal_time,sal_quantity,sal_price,cus_number,cus_name,tot_money,pre_name,aut_name)values('$bookname','$saltime','$salamount','$salprice','$cusnumber','$cusname','$saltat','$pre','$author')");
if($sql!
=false)
{?
>
alert('销售信息添加成功!
');
window.location="sale.php";
php}
?
>
查询功能模块设计
查询功能我将其模块化了,放在了每一个页面的功能导航那里,查询的方式用的条件查询,这样是查询更加的灵活
当月销售额查询模块设计
本模块是按年份和月份查询销售额,所涉及到的数据库表主