窦立君++钱佳宁++邱莉
摘要:该文介绍了利用PHP以及MySQL数据库技术,结合发印业务流程,建立起来的一套基于B/S结构的出版社发印凭单管理系统。包括系统设置、发印单录入、委托单录入、费用单录入、基本库的操作、报表统计等模块。各模块协同工作,完成整个发印流程的管理以及各项费用的计算。
关键词:出版社;发印管理;B/S结构;PHP
中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2016)26-0091-03
Implementation of Printing Affairs Management System Based on PHP
DOU Li-jun1,QIAN Jia-ning1,QIU Li2
(1.Nanjing Forestry University,Nanjing 210037,China;2.Jiangsu Childrens Publishing House,Nanjing 210009, China)
Abstract: Using PHP and MySQL database technology, combining with the printing business processes, and finally built up a printing voucher management system, which is based on Browser/Server Structure in this paper.Includes system configures, enter the voucher information, enter commission voucher, enter the cost voucher, operations on the data forms and calculations of reports, etc. All these modules work together to complete the process management, as well as the cost calculation.
Key words: publishing house; printing management; B/S structure; PHP
1 概述
随着近些年来计算机的普及、无纸化办公以及信息化潮流的袭来,出版社、印刷厂等印刷行业也纷纷引进了印刷管理系统。印刷行业作为国家重点行业之一,是国家、政府高度关注的对象。依赖于印刷行业的印刷管理系统也因此得到了广泛的关注,本文利用PHP以及MySQL技术,结合江苏少年儿童出版社发印管理流程设计实现了一套管理系统。
2 系统总体结构设计
2.1 系统权限设计
用户登录权限控制,划分功能级别。首先要设置一个超级管理员,具有最高的功能级别,拥有其他用户的所有功能;能够修改所有用户的资料、权限以及出版社信息。然后设置录入员级别的用户,主要负责委托单、费用单、发印单的录入,同时也具有查询和打印报表的功能。另外,可以设置只具有查询、打印报表权限的用户,该用户属于最低级别的用户。
2.2 系统功能设计
根据与江苏少年儿童出版社的交流得出的需求分析,结合系统设计的目标,系统可划分为6个功能模块,如图1所示。
用户信息管理:主要包括用户登陆、修改密码以及权限管理。
系统信息管理:管理员对出版社基本信息的设置以及维护。
信息录入管理:发印单录入、委托单录入以及费用录入。
1)发印单录入:如果是初印,录入新的委托单。如果是加印、修订或重印,点击信息录入模块下的发印单操作,选择相应的功能链接,检索已存在的发印单进行修改。四种方式本质上都是添加新的发印单记录,通过检索减少了人工输入数据的工作量。
2)委托单录入:委托单作为发印合同,包括委托方、受托方信息,印制图书的要求等。
3)费用录入:发印单入库后,填写各加工处理费,包括照排费、制版费、纸张费、印刷费,运费等。
4)此模块支持对所有已录入单据的修改,完成对数据库的更新操作。
数据库表管理:共分三大类,工价库、单位库、工艺库。
1)工价库:包括印刷工价、装订工价等内容。
2)单位库:包括承印单位、送书单位、供纸单位等内容。
3)工艺库:包括装订次序、装帧形式、印刷方法等内容。
报出版署管理:对某时段内图书印制的情况进行统计,并导出到Excel。
报表统计管理:大类上分为:委托单统计、发印单统计以及耗材统计。
1)各单据统计:统计每个月份或季度发印单的数量。
2)图书信息报表:统计图书的基本信息,以发印凭单形式显示。
3)工价公式:各项费用计算的公式。
4)耗材统计:主要是统计本次印刷耗材量,如:纸张、油墨。
3 数据库设计
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
从业务流程上看,有三大数据单需要录入,需要建三个分别用于存储发印单、费用单、委托单的数据表。而且三个数据表要通过,唯一的发印编号(fybh)来保持统一。发印单以fybh为主键,发印单录入员编号为索引(外键)。费用单以费用单编号为主键,fybh以及费用单录入员编号为索引,存储图书发印过程中所涉及的各项费用。委托表,以委托单编号为主键,fybh以及委托单录入员编号为索引,存储委托方与出版社关于图书发印的协议信息。
系统采用MySQL作为后台数据库,共设计了39张数据表,表以tb_开头。包括发印单数据表、其他费用表、委托单表、装订方法表、装帧形式表等。
发印单共有近180个属性,为提高操作效率,将发印单数据按性质拆分到五张表中,分别为:tb_main_base1、tb_main_base2、tb_main_base4、tb_main_base5、tb_hardcover。下面简单介绍几张表的部分属性。
3.1 tb_main_base1表
以发印编号为主键(自动编号)。主要存储“图书的基本信息”、“交书要求信息”、“装订信息”等,该数据表部分字段如表1所示。
3.2 tb_main_base2表
以发印编号为主键,主要存储 “图书各部分用纸情况”以及“印刷费用的计算公式”,该数据表部分字段如表2所示。
3.3 tb_main_base4表
以发印编号为主键,主要存储上报“全国新闻出版统计填报系统”的信息,该数据表部分字段如表3如示。
4 关键代码设计
在B/S结构的代码设计过程中,除了实现功能外还要考虑到系统的安全性及代码的重用性。因此,模块化程序设计的思想在这里得到了充分的应用,同时系统对系统用户的验证也渗透到各个页面。这里只对系统中关键性的几个功能代码作简要说明。
4.1 是否登陆检测
为防止用户通过事先获取页面地址的方法非法进入系统相关页面,系统设置了一个专门进行登陆检测的页面(index_check.php),通过文件包含的方式加到所有需要进行用户身份认证的页面中,用户不经过登陆进入相关页面时自动跳转到登陆页面。具体代码如下:
<?php //php标签
session_start(); //启动session 必须在代码的第一行执行。
include ("index_check.php"); //将文件包含进主页程序。
?>
如果正确登录,会将登录用户名赋值给$_SESSION[admin_name],SESSION变量为空则表示还未登陆。弹出提示信息“请通过正确的途径登录本系统!”。点击确定后,通过window.location方法跳转到登陆页(login.php) 。判断条件不成立则说明已登陆,进入主页。
4.2系统用户自动列表显示及密码验证
用户可以自己输入用户名,也可以直接在下拉框中直接选择对应的用户名。下拉框中的用户名通过提前从数据库用户表中获取并将数据输出到下拉列表框中。简要代码如下:
$sql=mysql_query("select * from tb_users",$conn); //从用户表中查询用户
$info=mysql_fetch_array($sql); //将满足条件的记录放到数组中
//将每条记录的用户id赋给一个option 成为选项
//注意php标签, echo输出
输入或选择好用户名及输入密码之后点击登陆按钮,进行身份认证,具体代码下:
$A_name=$_POST[name]; //接收表单提交的用户名
$A_pwd=$_POST[pwd]; //接收表单提交的密码
$info=mysql_fetch_array(mysql_query("select * from tb_users where userid=$A_name and userpass=$A_pwd,$conn)); //检索密码是否正确
if($info==false) //判断后弹出相应的提示
密码正确后,$_SESSION[admin_name]=$info[userid]; 这样进入主页面的时候,就不会有弹出提示。在页面的导航区,会显示用户名信息,功能菜单也会根据用户权限进行隐藏或显示。
4.3 导航区菜单展示
导航区的代码,独立存放在 a_navigation.php文件中,然后在index.php文件中对其进行引用。在a_navigation.php文件中,引用menu.js,javascript文件,将PHP文件和JS文件分离,起到更好管理的效果,通过缩短同一文件代码行数来增强代码的可读性。menu.js存放在bysj文件夹下的JS文件夹中,使用下述语句进行引用:
a_navigation.php 中的菜单显示,菜单隐藏触发事件如下:
Onmouseover=showmenu (event, systemenu) //鼠标指针移动到对象上,显示菜单
Onmouseout=delayhidemenu () //鼠标指针从对象上移开,隐藏菜单
以系统设置举例,系统设置下有“出版社系统设置”、“权限设置”两个小项。
var systemenu= //此部分为下拉显示的子菜单项
//将下拉菜单描述成一个两行一列的表格
\
//定义的systemenu变量在调用showmenu函数时作为参数。
function showmenu(e,vmenu,mod){ …}
function hidemenu(){…}
//针对于“子菜单焦点汇聚”时的凸显效果函数:
function overbg(tdbg){…}
function outbg(tdbg){…}
5 结束语
本文介绍了在理解图书发印流程的基础上,在满足基本业务要求的前提下,以发印单录入模块为中心,搭建的用户界面友好的基于PHP+MySQL的块功能清晰、针对性明确的管理信息系统。报表统计模块的设计,从统计的角度反映出版社的业务情况,便于后续的结算工作,减少了人工操作,同时也将计算错误的可能降低,各项数据计算有证可依,勘误便捷。
参考文献:
[1] 何俊斌.从零开始学PHP[M].北京:电子工业出版社,2011.
[2] 帕蒂拉,霍金斯.高性能PHP应用开发[M].北京:人民邮电出版社,2011.
[3] 威利,汤姆森.PHP和MySQL Web开发[M].北京:机械工业出版社,2009.