




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
论文题目基于 PHP5 MySQL5 的外贸单证管理系统 作者姓名 xxxxxxxxxx 学科专业 计算机及应用 准考证编号 xxxxxxxxxxxxxxx 编号 源程序代码 源程序代码 加 加 153893706 2007 年 4 月1 日 摘要摘要 本文讲述了利用 Apache2 PHP5 MySQL5 开源解决方案来实现 B S 结构的外 贸单证管理系统 外贸单证包括销售订单 采购合同 托单 装箱单 报关单 发票等单证 将单证业务复杂的数据交由计算机系统来处理 工厂用户远程登录系统维护装 箱单 提高了数据的准确性和及时性 单证自动生成 减少了单证员的工作量 提高了工作效率 实践证明 此系统具有开发速度快 稳定性好 可扩展性强 维护部署方 便 总成本低廉的优点 提高了企业的工作效率 满足企业的需求 关键字关键字 B SB S ApacheApache PHPPHP MySQLMySQL 外贸单证外贸单证 装箱单装箱单 报关单报关单 发票发票 FPDFFPDF WriteExcelWriteExcel 报表报表 Abstract This article discusses how to develop a foreign trade documents management system based Brower Server use Apache2 Php5 and MySQL5 open source software solution Trade documents include Sales Contract Purchase Contract Delivery Sheet Packing List Customs declaration form Invoice etc We can process complicated business s data by computer This software system can let remote factory s user login system and maintain packing list base these data we can auto generate behind trade form so all of data are accurate and quickly we can reduce employee s workload and improve work efficiency The practice proves this software system can be developed quickly stably well expansibility and maintained conveniently A excellent aspect is the cost is low can improve company s work efficiency and solve immediate requirement Keywords B S Apache PHP MySQL Foreign trade documents Packing list Customs declaration form Invoice FPDF WriteExcel Report 目录目录 1 引 言 2 需求分析 2 1 设计目标 2 2 开发及运行环境 2 3 APACHE PHP MYSQL 解决方案的优势 3 总体设计 3 1 方案图 3 2 模块结构图 3 3 流程图 3 4 数据库设计 4 详细设计 4 1 数据访问类 4 1 1BaseDB 类 4 1 2实体类 4 1 3操作类 4 2 基础资料 4 2 1维护产品 4 3 贸易管理 4 4 船运管理 4 4 1维护装箱单 4 4 2生成报关单 4 5 系统管理 4 5 1用户权限控制 4 6 报表设计 4 6 1PDF 报表 4 6 1EXCEL 报表 5 系统安装与维护 5 1 安装数据库及应用程序 6 开发总结 6 1 总结 6 2 致谢 参考文献 1 1 引引 言言 经济的全球化 给企业带来无限商机 同时也给企业的生产制造带来越来 越大的压力 一方面 客户个性化的要求越来越多 同时对质量 交货期的要 求也越来越严格 另一方面 跨地域的生产和经营活动又给管理带来了巨大的 挑战 企业必须加强生产管理水平 加强供 产 销各环节的管理以及与供应商 经销商 客户等资源的协同 这样才能拥有较高的客户满意度 维持竞争力 苏州 ABC 贸易有限公司是一家针对欧美的服装外贸公司 主要客户为 H mysql select db DB DATABASE NAME db conn DB CONNECTION Connect DB CONNECTION 是一个全局的数据库连接 每次程序执行时 所有程 序的数据库连接都会用此连接 这样提高了效率 不需要每次执行数据库都要 重新连接一次 因为与数据库连接是比较耗时的动作 同时 用同一连接 在 事务操作时也比较方便 事务要求用同一数据库连接 本系统的数据访问类是用 BaseDB 类 数据操作类是 BaseCollect 该类继 承于 BaseDB 数据实体类是 BaseSingle 系统上层的表的操作类都会继承于 BaseCollect 这样就间接继承了 BaseDB 类 对应的类图如下 Error string Msg string ErrFile string ErrClass string Error Connect bool Close BeginTrans bool CommitTrans bool Rollback bool Open in query string bool Exec in strSQL string bool FetchArray array GetRecords array GetRecordsCount int GetRow array GetField in Fieldname string MoveFirst bool MoveLast bool MovePrevious bool MoveNext bool Move in x int bool EOF bool BOF bool SetError in Error Error GetError Error ShowErrors IS PK GetInsertID in table in field int GetSecuExt GetUserAllInfo in userid int db connect id string query result bool RecordCount int RecordCursor int EOF bool BOF bool Error Error next id int FieldsCount int Records array Page array Pageflag bool BaseDB SetValue in field in value GetValue in field Set tb name in tablename Get tb name Set keyid in field in value Get keyid array GetRow array properties array keyid array tablename string BaseSingle CreateObj in tablename GetObj in tablename AddSQL in obj ModifySQL in obj DeleteSQL in obj BaseCollect 上层的表的实体类都会继承于 BaseSingle 上层的表的操作类和实体类都是 与表结构相关的 所以可以用程序访问数据库自动生成 大大减少工作量 本 系统的表的操作类和实体类都是工具自动生成的 4 1 1 BaseDB 类类 在 BaseDB 构造函数中 我们赋给已有的全局数据库连接 global DB CONNECTION this db connect id DB CONNECTION 最重要的方法是Open query 执行数据库查询了 Open函数实现了基本的查询功能 最主要用 mysql query 函数 同时 考虑 了 Insert 和分页控制 对于 Insert 除了执行查询外 还能返回新增的 ID 这 样便于上层操作 如同时要插入主辅表信息时 在插入辅表记录时要知道刚刚 新增的主表记录的 ID 对于 Select 如果需要分页 this pageflg 值为 true 程序会将 SQL 语句 通过正则表达式 分成两条 一条是原先的 SQL 语句 里面有 LIMIT MySQL 支持 LIMIT d d 语句提高查询效率 返回从第几条记录开 始的多少条记录 另一条是 SELECT COUNT 执行返回出查询记录的 总数 便于页面上进行页面控制 还有两个比较重要的函数是 FetchArray 和 GetRow 前者用于将查询的 结果封装成一个二维数组 后者用于返回当前查询记录 以字段名作为数组 key 值 FetchArray 主要运用 mysql fetch array mysql num fields mysql field name 函数 最终生成 Records i strtolower FieldName 二维数组 GetRow 函数封装 resu strtolower mysql field name this query result i 数组 还有其它的一些操作函数 这些函数提供基本的数据访问 页面程序一般 不直接调用这些函数 考虑到效率 报表页面会调用 页面程序通过实体类和 操作类进行数据操作 4 1 2 实体类实体类 实体基类 BaseSingle 的功能主要是封装表的一行记录 提供 Setter Getter 功能 最主要的几个成员变量是 var properties array 存放数据值 var keyid array key 值 var tablename null 表名 key 值和数据值分别存记录的关键字和字段值 最主要的函数是 function SetValue field value field strtolower field this properties field value function GetValue field field strtolower field return this properties field function GetRow return this properties 上层类都继承于 BaseSingle 类 4 1 3 操作类操作类 操作类的基类是 BaseCollect 它继承于 BaseDB 类 这样它就能执行数据 操作 这个类最基本的操作就是通过访问实体类数据 生成 Insert Update Delete 的 SQL 语句 AddSQL 生成Insert 语句并执行 ModifySQL 生成 Update 语句并执行 DeleteSQL 生成 Delete 语句并执行 上层操作类都继承于 BaseCollect 如 DProduct 类 Exec FetchArray GetRow GetField Move db connect records page BaseDB SetValue GetValue BaseSingle AddSQL ModifySQL DeleteSQL BaseCollect CreateItem GetItem AddNew in obj Modify in obj DeleObj in obj Search in id in orderby in sql GetProduct in id DProduct SetKey Set id in value Get id Set style in value Get style Set name in value Get name Set material in value Get material Set remark in value Get remark Product 上面的程序中 AddNew obj 其中变量 obj 是产品的实体类 这个类也可 以通过程序脚本自动生成 开发时根据需要再简单修改即可 这样我们在页面 程序中需要操作对象时就会很方便 新增 SPROD Set style style SPROD Set namecn namecn SPROD Set nameen nameen SPROD Set materialcn materialcn if DPROD AddNew SPROD DPROD ShowErrors 新增产品出错 productid DPROD GetInsertId SPROD tablename id 对于其它修改和删除可查看源程序 4 2 基础资料基础资料 基础资料包括产品 颜色 尺码 客户 工厂管理等 下面以产品为例说 明 其它部分请参考源程序 其实现基本一致 4 2 1 维护产品维护产品 产品的编辑页面 页面的部分源程序 if productid 0 itm prod DPROD Get product productid return str1 DPRODSIZE GetProSizeStr productid return str3 DPRODCOLOR GetProColorStr productid else itm prod DPROD CreateItem itm prod Set userid user id itm prod Set lmdte date Y m d 根据 productid 取得产品实体 itm prod 如果 productid 不大于 0 就构造 一个实体对象 这样新增和修改就可用同一个页面实现 产品款号 INPUT id style name style size 25 MAXLENGTH 20 value Get style 产品简称 INPUT id namecn name namecn size 25 MAXLENGTH 30 value Get namecn 设定产品的尺寸 颜色设置与此基本相同 4 3 贸易管理贸易管理 包括销售合同和采购订单 下面主要说明采购订单 生成采购订单 需要维护的数据不多 通过导入销售合同自动生成 第一步 第二步 选中需要的销售合同行 因为一个销售合同存在多次出货的情况 销售合同与采购订单的关系是 1 n 点生成就能完成采购订单的输入 这里的源程序 其实也没什么特别的 就是注意使用事务 确保所有操作 数据库都能成功 4 4 船运管理船运管理 4 4 1 维护装箱单维护装箱单 装箱单是外贸系统中的一个重要的单证 工厂要打印装箱单附于实际出运 货物 外贸公司要根据装箱单进行统计数量 体积 重量等数据 形成托单给 船运公司 外贸公司还要根据装箱单数据生成报关单进行报关 所以装箱单的 数据的准确性要求较高 如果原始数据不准确 就不能发挥软件系统的优势 不能减轻公司单证员的工作 但装箱单的数据往往量很大 一张装箱单要输入许多数量分配信息 想设 计一个很好的操作接口 在 B S 结构下 不太容易 目前 本系统中主要采用 了 DHTML JavaScript 的功能 新增行是通过最主要是用了表对象的 insertRow num 插入行功能 表中 行对象的 rows num insertCell 在行中插入一个单元格 单元格对象赋值功能 cells j innerHTML eval td j innerHTML 1 界面程序定义一个表对象 2 在需要的行中放入 新增 删除 的控件 3 放入一个隐藏行 将所需要的控件放入其中 这一行用户是看不到的 用户 新增行操作 就会复制隐藏行的内容 TD id align center 下面的图是装箱单维护页面截图 蓝色为一些标注 4 新增修改删除实际调用的 javascript function addRow 当前第几行触发 num event srcElement parentElement parentElement rowIndex insertRow num 实际插入动作 function insertRow num window tableObj insertRow num for j 0 jSetQuery sql frm Obj FetchArray tmpct ary frm Obj GetRecords 待处理数据数组 4 处理结果集 海运 if ship mthd S for i 0 i count tmpct ary i now ctryid tmpct ary i country 主单邮购单 if tmpct ary i stype M tmpct ary i stype P 5 生成记录至数据库 在处理结果集程序中使用一定的数据结构存储中间结果 最后把数据持久化到数据库中 4 5 系统管理系统管理 4 5 1 用户权限控制用户权限控制 任何管理系统都要进行权限设计 只有通过权限控制 才能确保软件系统 的正常运行 才不会造成混乱 好的设计方案 往往考虑非常多的概念 组 用户 角色等等 但这样对小型的系统花费代价比较大 因为我们的系统较小 所有采用了一个简单的方式 即 用户 模块 权限 直接绑定 这样做程序开发 起来较为简单 下面的图是权限维护界面 权限模块的控制是通过 XML 文件控制的 基础资料 A1 客户信息 客户管理 A3 工厂管理 工厂管理 A4 产品信息 产品管理 我们新增一个权限也很方便 直接修改 XML 文件就行 对于权限控制表现主要用工具条 1 载入权限类 因为在系统全局包含文件 common php 中已包含了权限类 include once path common class security php 所以界面程序不用加载权限类 2 初始化权限控制 权限控制 DSECU new dSecurity DSECU initialize user id C3 true 上面 user id 表示登录者的用户 id C3 表示模块 id 通过这两个参数 就能 得到该用户在模块的权限情况 在 initialize 函数中会将权限从数据库中查出来 如果没有任何权限页面会跳转 到出错页面 显示无任何权限 3 加载需要的按钮 bt ary new false bt ary cpy false bt ary del false bt ary srh false 一般先将所需要的按钮全部加载进来 并且全部置成 false 即全部屏蔽掉 如 果不建立变量 则按钮本身也不会显示 4 根据查出的权限 设定按钮值为 true 即会激活按钮 开放功能 if DSECU get Secu N bt ary new true if schid 0 bt ary cpy true if DSECU get Secu D this SetX 210 this GetStringWidth caption 2 this write 10 caption this Ln 8 Page footer function Footer put fpdf foot 5 初始化 pdf 对象 下面需要输出文件的地方都会调用该对象 pdf new PDF pdf Open pdf AliasNbPages pdf AddGBFont pdf AddPage pdf SetDisplayMode fullwidth pdf SetLeftMargin 8 pdf bMargin 5 pdf SetFont Arial 10 pdf Ln 4 6 调用相关输出函数 实现输出 pdf SetFont Arial B 12 pdf cell 90 lh Solid Size Solid colour 0 1 pdf AddPage pdf Ln 4 具体可参照其帮助文档 用户手册 根据需要可以实现一些复杂效果的功能 7 输出 pdf Output 默认情况下会输出到浏览器 如果需要可带参数 输出 详见帮助文档 4 6 1 EXCEL 报表报表 EXCEL 文件生成 1 初始变量设置 session cache limiter private set time limit 600 path 载入其它包含文件 2 载入 excel 类 include once path common excel class writeexcel workbook inc php include once path common excel class writeexcel worksheet inc php include once path common excel functions writeexcel utility inc php 工具函数 3 其它初始化数据 4 新增一个工作簿 workbook new workbook mt srand double microtime 1000000 randval mt rand if strlen randval 8 randval substr randval 0 7 fname tempnam path tmp randval xls workbook 5 新增一个工作表 worksheet worksheet Name if in array itm ctry Get pkname pkname name else name itm ctry Get pkname new worksheet worksheet worksheet hide gridlines 1 页边距 worksheet set margin left 15 25 4 Set left margin worksheet set margin right 14 25 4 Set right margin worksheet set margin top 25 25 4 Set top margin worksheet set margin bottom 25 25 4 Set bottom margin 6 调用相关输出函数 定义样式 调用输出 边框格式 border format array format ary array font Arial size 10 color black format format set top 1 border format format worksheet write line 6 Shipment to final receiver border format 5 worksheet write blank line TotalCol 1 border format 8 tm fmt3 worksheet write line 1 itm dpkgm Get boxnum tm fmt3 具体可参照其帮助文档 用户手册 根据需要可以实现一些复杂效果的功能 7 输出 workbook close header Content Type application x msexcel fh fopen fname rb fpassthru fh unlink fname exit 5 5 系统安装与维护系统安装与维护 5 1 安装数据库及应用程序安装数据库及应用程序 采用 PHP 开发的程序 安装非常方便 将开发目录全部复制到 Apache 主目 录 htdocs 下就行了 事实上因为 PHP 程序是解释型的 开发时就在主目录 下新建调试页面的 本系统安装主要是 3 部分 1 安装安装 XAMPP 运行环境运行环境 本系统应用的版本是 1 5 5 主要包括 Apache 2 2 3 MySQL 5 0 27 PHP 5 2 0 2 创建数据库创建数据库 因为 MySQL 5 0 的字符集发生了变化 用 PHPMyAdmin 在原有配置有点麻烦 所以在这里我们用 EMS SQL Manager 2005 for MySQL 数据库建立可通过 SQL 语句在查询分析器中运行 更简单的 方法 先停止掉 MySQL 进程 将备份数据库文件夹 MySQL 会将每个 数据库放到以数据库名的文件夹下 直接复制到 MySQL 数据文件下 一般是 mysql data 再启动 MySQL 进程即可 3 安装安装 WEB 应用程序应用程序 直接将程序复制到 Apache 主目录下 为了提交效 率或安全性 我们也可以先将程序通过 Zendenc 编译加密 这样程序运 行速度会更快 6 6 开发总结开发总结 6 1 总结总结 这篇论文主要讲述了我在项目开发中用到的一些关键技术 对业务流程只 是作了简要的描述 因为外贸单证流程是相对规范的 通过开发实践 我也发现该解决方案存在以下两方面的不足 一是 数据操作基类 存在一点缺限 就是不能兼容 Oracle 数据库 我通过验证 在 SQL Server PostgreSQL MySQL 都是可以的 因为生成的 SQL 语句 对字段赋值是都强行加了引号 Oracle 对日期型数据要求 SQL 语句 中必须是显式转换 如使用当前日期要 TO DATE date Y m d YYYY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全管理学A考试模拟题及答案
- 2025年农家乐面试题营销推广能力提升
- 2025年烹饪大师国家认证考试试题及答案解析
- 2025年美术设计试题及答案解析
- 2025年旅游景区策划师专业知识评估试卷及答案解析
- 2025年婚礼策划师技能水平认定考试试卷及答案解析
- 2025年安全员C考试高频题集解析
- 2025年安全员国证考试模拟试卷及答案bi备
- 2025年供热通风空调工程师资格考试试题及答案解析
- 2025年塑料模具制造工艺师高级试卷含答案
- T-CITSA 57-2025 高速公路基础设施主数据标准
- 住院病人防止走失课件
- 2025年临床助理医师考试试题及答案
- 2025年南康面试题目及答案
- 2025年全国学宪法讲宪法知识竞赛考试题库(含答案)
- 定增基金管理办法
- 汽车标定工程师培训课件
- 速叠杯教学课件
- GB/T 45767-2025氮化硅陶瓷基片
- 2025年第十届“学宪法、讲宪法”活动知识竞赛题库及答案
- 北京项目工程管理办法
评论
0/150
提交评论