基于WEB的二手书销售平台的设计


     基于WEB的二手书销售平台的设计与实现 摘 要 每到新学期的开始,同学们都要开始购买新书,旧书的处理方式就有点单一了。现如今社会对于绿色文明的倡导力度十分之大,各个地方都在提倡节约用纸,提高纸张再循环利用。可能买一本新书对于学生、家长和一些读者来说,不仅价格较高而且还可能会造成树木资源消耗过大。对于这个的问题建议使可以用二手书来解决。基于此,本毕业设计开发实现C2C模式的二手书销售平台,从某种角度上来说可以解决纸张浪费的问题,在另外一种角度也可以解决人们对于二手书处理的困扰。 本平台的是一个基于B/S架构所设计的二手书销售平台,本平台是在win10操作系统下开发的,后台服务器采用了Apache+MySQL+PHP这一开源软件组合,使用PHPstorm+sublime3作为开发工具。前端展示页面使用HTML+CSS+JS语言开发,平台开发以PHP为后台语言环境、MySQL为网络数据库服务器以及Apache被用作PHP解释器,该平台是基于ThinkPHP5框架开发的,能够在最大程度上提高平台开发效率,同时缩小维护该平台的难度。 平台主要分为两个部分:前台页面展示和后台管理。前台主要功能是展示二手书、二手书的搜索、用户登录注册、修改用户信息、订单的确认和查看以及购物车。后台管理主要功能为用户管理、二手书管理和分类管理。 关键词:二手书销售;ThinkPHP5;MySQL;PHP;Apache; Design and implementation of second hand book sales platform based on Web Abstract At the beginning of each new semester, students will start to buy new books, and the way of handling old books is a little monotonous. Nowadays, the promotion of green civilization in the society is very strong. Everywhere is advocating saving paper and improving paper recycling. Maybe for students, parents and some readers, buying new books is not only a waste of money but also a waste of paper. Using second-hand books is a good way to solve this problem. Based on this, this graduation project develops and realizes the C2C model second-hand book sales platform, on the one hand, can solve the paper waste problem well, on the other hand, also solves the people to the second-hand book processing problem. This platform is a B/S architecture based on the design of second-hand book sales platform, the platform is developed under the win10 operating system, the background server using Apache+MySQL+PHP this open source software combination, using PHPstorm+Sublime3 as a development tool. The front-end display page is developed with HTML+CSS+JS language, PHP as the background language environment, MySQL as the network database server, and Apache as the PHP interpreter. The platform is developed on the basis of ThinkPHP5 framework, which can maximize the efficiency of the development of the platform and reduce the difficulty of maintaining the platform. The platform is mainly divided into two parts: front page display and background management. The main functions of the front desk are to display second-hand books, search for second-hand books, user login and registration, modify user information, confirm and view orders, and shopping cart. The main functions of background management are user management, second-hand book management and classification management. Keywords: Second-hand book;ThinkPHP5;MySQL;PHP;Apache; 目 录 1前言 1 1.1平台开发背景 1 1.2平台开发意义 1 1.3可行性研究 1 2开发技术及工具介绍 2 2.1B/S架构模式 2 2.1.1B/S架构的优点 2 2.1.2B/S结构的缺点 2 2.2页面开发技术 2 2.3 ThinPHP5.0框架 3 2.4 Apache 3 2.5.PHPstorm 4 3平台分析与设计 4 3.1平台需求分析 4 3.1.1用户需求 4 3.1.2功能需求 4 3.2平台设计 5 3.2.1功能结构设计 5 3.2.2概念模型设计 6 3.2.3逻辑模型设计 7 3.2.4数据库设计 8 4平台实现 10 4.1 ThinkPHP框架部署 10 4.2前台功能实现 12 4.2.1平台首页 12 4.2.2用户注册与用户登录 12 4.2.3个人中心 15 4.2.4图书分类功能 16 4.2.5查找图书功能 20 4.2.6订单确认和购物车功能 21 4.2.7订单管理功能 23 4.3后台功能实现 24 4.3.1书籍类目管理 24 4.3.2书籍管理 25 4.3.3订单管理 25 4.3.4用户管理 26 5平台功能测试 26 5.1 平台功能测试的目标 26 5.2 平台功能测试的方法 27 5.2.1 注册和登录功能测试 27 5.2.2 购物车功能测试 27 5.2.3 订单功能测试 28 5.2.4 图书功能测试 28 5.3 测试总结 28 6 总结 28 参考文献 30 致谢 31 附录 32 1前言 在每个新学期的开始,学生都需要开始购买新书,旧书的处理方式就有点单一了。现如今,社会对于绿色文明的宣传力度十分之大,节约使用纸张是一个十分之重要且必要的行为,特别是书本的重复使用。对于学生、家长以及一些已经参加工作但需要补充知识的年轻人来说,购买新书不仅价格较高而且还可能会造成树木资源消耗过大。[1]使用二手书是解决这个问题的一个好办法。 1.1平台开发背景 现代网络时代的快速发展,网上书店的出现给线下书店带来了很大的影响。网上书店的送货上门、24小时服务以及搜索图书快捷等便利条件让其深受欢迎。随着社会对于方便的追求逐渐升高,网购人群日益增加,这些都为网上书店的崛起提供有力的支撑。 网上书店的发展同时也带动了二手书交易市场,随着如今大家的物质生活得到了极大的满足,人们对于二手书交易的消费需求实际上正在逐渐得到刺激,对于二手书的接受程度逐渐升高。移动设备的普及以及移动互联网技术和电子商务的成熟使民众更容易接受二手交易,平台的实名制要求也为二手交易提供了保障。 现如今的家长都开始注重孩子的学习和阅读,随着孩子的年龄增长以及学校要求读物的变化,从经济以及存储空间的角度考虑,二手书不失为一个性价比很高的新书替代品。在校大学生也随着课程的变化以及自身的经济考虑,趋向于选择购买二手书籍或者出售二手书籍。 现如今在高校校园中,想要购买二手书的同学一般都是到学校附近的旧书书店或者是在学校论坛中寻找,虽然这样也可以达到购买二手书的目的,但是却浪费了大量的时间和含有很大的不确定性。[2]因此,二手书销售平台对于学生来说是一个在短时间内目的性高的一种很好的选择。 1.2平台开发意义 从环保方面考虑,众所周知纸张的制造过程,造纸对于树木的消耗过大,对原有的生态环境产生巨大的毁坏,而造纸过程也会造成不同程度的污染。而二手书的利用能够达成节约纸张的目的并且间接维护了生态环境。 从书籍方面考虑,对于固定的空间,要在不造成书籍浪费的条件下书籍存储是一个较大的问题,二手书交易恰恰能很好地解决这样的困扰。二手书的利用可以减少纸张消耗、实现书籍再循环可持续利用。 1.3可行性研究 经济可行性:为学生及读者提供的这个C2C模式的二手书销售平台不单能够解决纸张消耗过大的问题,适应当今社会低碳环保和节能减排的经济发展要求,为社会环境的保护和现有资源循环利用尽自己的一份力,还能够提供一个安全可靠的购书平台并解决人们对于二手书处理问题的困扰。 技术可行性:平台开发在系统架构上使用B/S架构,基于ThinkPHP5.0开发框架,在很大程度上提高了开发效率并且缓解了开发的难度和压力。同时使用Apache+MySQL+PHP开源免费软件组合作为在服务器端上的应用,因其开源免费的特点,可以在开发平台时大大的减少开发成本并且缩小开发所需周期。本平台在Window10操作系统上开发的,使用MySQL为网络数据库服务器,以PHP作为服务器端脚本解释器,使用Apache作为服务器,且在前端页面使用JavaScript脚本语言,其拥有跨平台的特点,在绝大多数浏览器的支持下能够在多种平台下运行。 2开发技术及工具介绍 本平台使用PHP作为开发语言,采用ThinkPHP5.0框架,选用MySQL作为前后台数据库,基于B/S模式进行设计 2.1B/S架构模式 B/S架构(Browser/Server),即浏览器和服务器架构模式,这种架构模式是因Internet的不断发展对C/S架构的一种改动或者改良的架构模式。这种模式集合了客户端,并使系统的开发、维护和使用简单化。Browser指的是Web浏览器,主要的核心事务逻辑都是在服务器端完成的,较少事务逻辑是在前端完成的。因此你只需安装一个浏览器就可以通过web Server对数据库实现对数据进行交互的功能。B/S架构有三层结构,第一层表现层:主要是实现用户和后台数据的交互,最后把查询结果输出。第二层逻辑层:主要通过使用服务器来实现客户端的应用逻辑功能。第三层数据层:主要是在接受客户端的请求后单独地运行各种运算。[3] 2.1.1B/S架构的优点 现如今,随着用户对于软件系统的更新和升级需求越来越高。因为B/S架构的核心功能的实现集中在服务器上,所以使用B/S架构的软件系统都显而易见有着更为方便的特点。易于维护和升级。 2.1.2B/S架构的缺点 在速度和安全性上,B/S架构需要消耗庞大的设计成本。还有因B/S架构的管理软件都是安装在服务器端上的缘故,所以服务器的运行数据负荷会过重,假如服务器一旦出现“崩溃”等现象,会产生无法想象的后果。 2.2页面开发技术 PHP(PHP Hypertext Preprocessor),是一种脚本在服务器上执行的被普遍应用的开源脚本语言。其优点不仅有成本低、速度快和可移植性优异还有内置函数库丰富等。因而,许多企业喜欢使用PHP开发网站。PHP独特的语法是C、JAVA、Perl以及PHP自创新的语法的混合体,相较于CGI或者Perl,它可以更快运行动态网页。与其他编程语言相比,用PHP写出的动态页面执行效率是远远高于完全生成HTML标记的CGI,是因为PHP需要将程序嵌入到HTML页面中运行。[4]PHP拥有十分强大的功能,所有的CGI的功能PHP都能实现,并且几乎所有流行的数据库以及操作系统都能够支持。 作为一种强大的语言,PHP解释器能够在服务器上访问文档、执行命令、建立网络连接等,无论是以模块形式,还是以CGI的形式安装的。尽管这些功能可能会给服务器增加许多不安全因素,但只要安装正确和配置正确,并且编写了相对安全的代码,那么,PHP就可以创建出比Perl和C创建的更安全的CGI程序,并且可以在安全性和可用性间寻找到一个比较完美的平衡点。 2.3 ThinPHP5.0框架 ThinkPHP5.0是为了API开发因而设计的一个强大的高性能框架,它是免费的、开源的、快速的、简单的和面对对象的。遵照Apache2开源协定发布,在Struts结构的基础上做了改良,对欠缺部分进行完善。同时,它还借鉴了国外许多优异的框架和模式。采用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。作为一个整体开发处理方案,ThinkPHP5.0提供了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,可以满足开发应用时的大部分需求。[5]每个组件都是经过精心设计和完善的,在应用程序开发过程仅需留意您的业务逻辑就可以了。 5.0版本是一个颠覆过去和重构的版本,采用了全新的架构思想,在核心上进行了优化,减少了依赖,并实现了真正的惰性加载。[6] 2.4 Apache服务器 Apache HTTP Server(简称Apache)是世界使用最广泛的Web服务器软件。现如今,其能够运行在流行的计算机平台上,是因为其跨平台、安全性好等的优点。因此被得到了广泛的应用。其高效、快速、稳定,而且能够通过简单的API扩展,把Perl/Python编译到服务器中,Apache的特点是简单、快速并且性能稳定,可以用作代理服务器。 2.5.PHPstorm PhpStorm 是由JetBrains 公司开发的,一个商业的 PHP 集成开发工具。它旨在提升用户的工作效率,能够深入理解用户的代码,保证智能编码的完成,还具有快速导航和即时检错等功能。它的优点包括各种平台的支持、对PHP重构支持、代码重构支持、集成的Zencode支持同时拥有本地历史记录功能。是一个很使用非常方便的PHP集成开发工具。 3平台分析与设计 3.1平台需求分析 3.1.1用户需求 随着社会经济不断发展,各种书籍的价格也因此上涨。大多数人都不愿意购买价格较高的新书而选择购买价格略低的二手书,特别是大学生群体,而该群体也是二手书需求较高的群体。现在的大学都要求学生自己购买本学期的教材,对于没有经济收入大学生而言,购买教材也是笔不小的费用,再而有些选修课程的教材使用过一次后就没有多大可能性再次利用,因此有不少的大学生都选择购买校园二手书来解决课程所需的教材问题。同时现如今对于儿童阅读的倡导力度越来越高,家长们为了在能让孩子在最大程度上阅读更多书籍同时能减少书籍存放的困扰而因此选择出售二手书。已经步入社会的年轻人也因不断充电学习而购买价廉的二手书。 3.1.2功能需求 平台设计主要包含两个部分:前台页面管理和后台数据管理。用户的所有操作都在前台页面上实现。而后台管理主要是用来给管理员处理和修改前台用户的数据,并相应的数据进行处理。对平台的功能要求具体如下: 1. 平台页面的设计尽量简洁明了,漂亮大方的页面能让用户心情愉悦,并且感受到人性化的细节。 2. 详细完整的二手书分类,可以通过不同的类目来搜索所需的二手书信息。 3. 用户可以按照二手书分类及二手书名称进行模糊查询。 4. 用户可在个人中心修改用户信息。 5. 游客可以通过注册功能在平台中注册为平台用户。 6. 用户登录时进行身份验证。 7. 用户可以发布、修改和删除二手书出售信息。 8. 用户可以将想要购买的二手书加入购物车并且能够修改购物车内二手书的数量。 9. 管理员在后台对二手书类目、用户和订单进行管理。 3.2平台设计 3.2.1功能结构设计 二手书销售平台分为两个部分:前台书城界面系统和后台系统。前台系统的主要是提供给用户查询购买自己所需的二手书、出售二手书和处理订单数据的一个简单操作界面,不熟悉网上购物的人也可以轻松的操作购买。前台管理系统主要有二手书展示、二手书检索、个人中心管理、购物车、订单管理等功能。前台系统结构设计如下图: 图3-1 前台界面结构设计 前台管理系统通过是否登录来判断是否为本平台的用户。如果没有登录则是以游客身份进入平台。游客在平台内能使用的功能,只有基础的查询二手书信息和浏览二手书信息,交易的功能是不被开放给游客的。用户成功登录后,可以进行发布二手书信息、添加购物车、填写订单等操作,进而完成二手书交易,同时还拥有个人中心。 在二手书搜索功能中,用户可以使用模糊查询,或者是通过类目查询去搜索所需的二手书。 在个人中心中,用户具有修改个人信息、管理出售二手书、管理订单记录和管理联系方式的功能。 本平台购物车主要实现记录所要购买的二手书信息,用户退出登录后购物车内的数据依然存在,重新登录后的购物车仍存在上一次添加的二手书信息。用户也可直接购买二手书提交订单购买。 图书出售功能包括在个人中心内,主要为用户发布,用户根据自己的需求发布二手书并对出售信息进行管理。而平台后台系统会管理所有用户出售的图书。 在订单管理中,既有管理客户订单的功能也有管理用户订单的功能,客户订单是展示他人购买自己发布的二手书的订单,用户订单这是展示自己在平台内购买他人发布的二手书的订单。用户可以修改、删除客户订单,但用户订单无法修改。为了用户之间进行交易更加方便。平台中所有用户的订单管理员都都可以在后台进行管理。 后台管理系统是管理前台用户一系列操作的系统,主要处理前台的所有数据以及交互。后台管理系统主要有书籍类目管理、书籍管理、订单管理、用户管理等功能模块。后台管理系统设计如下图: 图3-2 后台管理系统结构设计 后台的管理系统,通过能否登录来验证该用户是否为管理员。登录成功后,管理员可以对平台内的数据进行更新和操作,实现对系统的日常维护。 3.2.2概念模型设计 在了解了用户需求后经过分析,平台可以分为用户、管理员、订单、二手书信息、二手书类别、订单状态、联系方式七个实体。 在需求分析结果的基础上,我们对数据进行抽象处理。首先制定局部E-R图,然后再把局部E-R图合并为全局E-R图。通过这样对整体的概念模型进行设计。 全局E-R图如下图所示: 图3-3 全局E-R图 用户实体包括用户id、用户名、密码、真实姓名、头像和邮箱属性。 管理员实体包括了管理员id、管理员登录名、管理员密码属性。 二手书类目实体包括类目id、类目名称属性。 联系方式实体包括用户id、联系方式id、收货人姓名、收货地址、电话、邮编属性。 订单实体包括订单id、订单号、用户id、联系方式id、二手书编号、二手书价格、二手书数量、订单状态id、是否确认、支付方式、下单时间、邮寄方式属性。 二手书实体包括二手书编号、书名、作者、出版社、图片、简介、供应人、类别编号、原价、现价、是否上架属性。 订单状态实体包括订单状态id、状态名称属性。 3.2.3逻辑模型设计 将二手书销售平台中所包含的七个实体的E-R图,转化为概念-关系模式,得到的关系模式如表3-2-3所示: 表3-1 二手书销售平台关系模型表 为了提高数据的管理和查找效率,同时满足网站对性能的实际需要,将上述关系模式做了以下优化: 1. 由于订单管理和用户个人信息管理的功能需求,订单信息表和用户信息表中的联系方式是相同的,通过把订单信息表和用户信息表中的联系方式单独摘出来建立联系方式表来达成简化数据表的目的。 2. 要求每个用户只能管理自己订单。为了实现这个功能,我们通过在二手书信息表中设置供应人这个字段来代表出售该二手书的用户,供应人字段值应为对应的用户id。通过获取查询二手书信息中供应人字段值就可以展示该用户所有出售的二手书订单。 3.2.4数据库设计 在thinkphp5.0框架中,创建二手书销售平台数据库的方式主要有两种,一种是使用SQL原生语句创建。另一种是通过phpMyAdmin创建,使用Web接口来管理MySQL数据库。而PhpMyAdmin是一个用PHP语言编写的软件工具,其主要的优势是在网页服务器上执行,方便易用且高效。[7]Web接口是轻松输入复杂SQL语句的最佳方式,尤其是在进行导入和导出数据的操作时,可以使用phpMyAdmin轻松便利地创建、修改、删除数据库和数据表。 数据表是数据存储的基本单位,也是数据库中最重要、最基础的操作对象。根据上述的逻辑模型的设计,平台数据库需要建立的七个数据表有:用户信息表ob_user、二手书信息表ob_book、二手书类目表ob_bookclass、联系方式表ob_contact、订单表ob_order、订单状态表ob_status以及管理员信息表ob_admin。表3-2至表3-8分别展示了所有的数据表。 表3-2 用户信息表 表3-3 二手书信息表 表3-4 二手书类目表 表3-5 联系方式表 表3-6 订单表 表3-7 订单状态表 表3-8 管理员信息表 4平台实现 平台开发前期通过对用户需求和功能需求的整理对平台进行了设计,同时还完成了对数据库中数据表的建立工作。接下来要对平台功能进行实现。 4.1 ThinkPHP框架部署 ThinkPHP支持多种不同的生产环境。但是,如果你的生产环境跟开发环境不匹配的话,那么就要对ThinkPHP进行配置来适应线上的生产环境。因此本平台开发前需要对ThinkPHP5.0框架进行部署。 通过对URL进行重写的方法来隐藏index.php文件。对Apahe服务器进行配置,在配置文件httpd.conf中的配置如下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule> 然后下一个要注册路由规则来简化URL地址。首先是在config.php中开启路由强制模式。使用这种模式的话就必须精确定义每一个访问地址的路由规则,否则无法访问URL地址,这种模式相对于普通模式会较安全。 'url_route_on' => true, 'url_route_must' => true, ThinkPHP5.0的路由规则的定义,是从根目录开始的,而不是基于模块名。因为路由命名标识是唯一的所以每个路由都是唯一的,注册后,它就可以被用来快速生成URL地址了。本平台的部分路由规则如下: Route::get('login','index/login/index'); Route::post('login','index/login/login'); Route::get('logout','index/login/logout'); Route::get('register','index/register/index'); Route::post('register','index/register/save'); Route::get('person','index/person/index'); Route::post('person','index/person/edit'); Route::get('sell','index/person/sell'); Route::post('sell','index/person/save_sell'); Route::get('search','index/index/index'); Route::post('search','index/index/search'); Route::get('book','index/book/index'); Route::get('book_list','index/person/book_list'); Route::get('cart','index/cart/index'); Route::get('checkout','index/checkout/index'); Route::get('index','index/index/index'); Route::get('bookclass','index/bookclass/index'); 本平台使用了模板继承在对页面进行布局,因为每个页面的头部和尾部都是重复的,因此我们可以将平台的内容部分定义了一个区块(block),而头部和尾部则为一个基础模板。这样我们能减少页面文件头部和尾部的重复。在子模板中使用extend标签继承base模板就可以加载出整个页面了。 4.2前台功能实现 4.2.1平台首页 该二手书销售平台的首页是一个综合性页面。首页上会展示所有平台内在售的二手书以及还有横幅幻灯片显示。 图4-1 二手书销售平台首页界面 4.2.2用户注册与用户登录 用户在使用本平台的主要核心功能时必须注册成为本平台的用户,否则无法购买或出售图书。出于安全角度考虑,注册成为平台用户是可以拥有相关权限的。同时也是为了方便平台对用户进行管理。 用户通过点击“注册”按钮填写用户信息进行注册 ,“注册”按钮被点击后填写的用户信息通过from表单传递给RegisterController控制器,之后save()方法会调用User验证器来验证信息的合法性与正确性,比如用户名是否重复或存在非法字符等。在User验证器中定义了验证规则、字段信息及验证场景,验证场景的作用在于可以在不同场景中只验证部分规则而非全部。验证完信息后将用户信息传入数据库。验证器代码如下: protected $rule = [ 'username' => 'require|length:2,6', //字长2到6 'realname' => 'require|length:2,6', //字长2到6 'email' => 'require|email', //验证是否是邮箱 'password' => 'require|length:6,15', //验证密码长度 'confirmpassword' => 'require|length:6,15|confirm:password', //验证确认密码 'captcha|captcha' => 'require|captcha' //验证码 ]; protected $field = [ 'username' => '用户名', 'realname' => '真实姓名', 'email' => '邮箱', 'password' => '密码', 'confirmpassword' => '确认密码', 'captcha' => '验证码' ]; protected $scene = [ 'login' => ['username', 'password', 'captcha'], 'edit' => ['username', 'realname', 'email'] ]; 为了保护账号安全保证密码的安全性,在用户注册时调用password_hash()方法创建密码的散列值,散列值相较于普通密码存放更加安全,后台的数据库中存放的是密码经过hash加密后的散列值。用户登录时,只需调用php的password_verify函数比较输入的密码和数据库中该用户的散列值,从而判断密码输入是否正确。 图4-2 用户注册界面 登录成功后,启动session会话,将用户ID和用户名赋值给当前作用域来供用户之后用此账号进行其他操作时服务器能够识别。用户退出登录后,删除当前作用域,清空session中的用户信息,然后跳转回首页等待用户再次登录。 用户登录功能代码如下: public function login(){ $data=input('post.'); $result=$this->validate($data,'app\index\validate\User.login'); if($result !== true){ $this->error($result); } $user=User::get(['username'=>$data['username']]); if(!empty($user) && password_verify($data['password'],$user->password)) { Session::set(“username“,$data['username']); Session::set(“uid“,$user->id); $this->success('登录成功','index'); }else{ $this->error('用户名或密码错误'); } } public function logout() { Session::delete('username'); Session::delete('id'); Session::delete('cart'); $this->success('退出成功!', '/index'); } 图4-3 用户登录界面 4.2.3个人中心 在平台中注册成为用户后,页面头部会出现“hello,xxx”,旁边有个人中心入口,点击就能进入个人中心对个人信息进行修改或添加头像。 图4-4 用户未登录前界面头部 图4-5 用户登录后前界面头部 个人信息中会展示用户名、真实姓名、邮箱和头像。用户在修改个人信息后点击“保存”按钮, PersonController控制器中的index()方法把from表单提交的用户信息数据存入数据库的用户表中。 具体代码如下: public function index() { $uid=Session::get('uid'); $user=User::get(['id'=>$uid]); $this->assign([ 'users'=>$user, ]); if(request()->isPost()){ $data=input('post.'); //处理图片上传 判断是否为新图 如果是新图就删旧图 if ($_FILES['image']['tmp_name']){ $oldStore=User::field('image')->find($uid); $oldStoreimg=UPLODAS.$oldStore['image']; if (file_exists($oldStoreimg)){ @unlink($oldStoreimg); //判断旧图是否存在,存在即删除旧图 } $data['image']=$this->upload(); } //修改前进行验证 $result=$this->validate($data,'app\index\validate\User.edit'); if($result !== true){ $this->error($result); } Session::set(“username“,$data['username']); $save=User::where('id',$uid)->update($data); if($save !== false){ $this->success('修改个人信息成功!'); }else{ $this->error('修改个人信息失败!'); } return; } return view(); } 图4-6 个人信息界面 在个人中心可以发布和管理二手书,能够查看二手书列表、发售二手书、修改发售的二手书信息和删除发布的二手书。实现这四个功能需在Personcontroller中定义增删改查四个方法book_list()、add_book()、edit_book()、del_book()。 保存添加二手书页面以及保存个人信息头像在接受上传图片时调用控制器中的upload()方法将图片上传到服务器的指定文件夹(uploads)中,保存图片时需判断是否为新图,若是新图则删去旧图保存新图,保存前要进行验证。 新增二手书的功能在“发布图书”中实现,点击“发布图书”填写要发布的二手书信息,add_book()方法获取from表单中提交的数据,通过Book验证器验证成功后保存在数据库的二手书信息数据表中,并且使用Session类将用户id赋值到当前作用域中,同时然后返回图书列表页面。 图4-7 发布二手书信息界面 在图书列表中可以查看所有发布的二手书信息,具体有id、书名、作者、出版社、原价、现价、介绍、所属类目、图片、发布状态及操作,操作内有“修改”和“删除”两个按钮来控制修改二手书和删除二手书功能。 Personcontroller控制器中的book_list()方法将遍历数据表book中该用户的全部发布二手书展示出来。使用到了分页技术方便用户查看。 图4-8 管理二手书界面 图4-9 修改二手书信息界面 4.2.4图书分类功能 想要在短时间内高效率查找到自己所需要的书籍时就需要图书分类这一功能,这是本平台十分重要的一部分。如果没有这一功能就意味着用户需要花费很多时间去逐一查找所要购买的书籍,这使得用户体验大大降低,平台的人性化设计都不能体现出来了。 用户进入到平台首页点击导航栏中的二手书分类,下拉菜单中会显示本平台所有的二手书类目,根据自己所需进入到相关类目页面查找所需二手书。 图4-10 导航栏二手书分类界面 4.2.5查找图书功能 平台首页为了适应不同用户的搜索要求而提供模糊查询给用户查找自己所需要的书籍,即使只输入部分信息也可以搜索图书,本平台还提供不同类目下的模糊查询,这样用户可以在众多二手书中快速、准确的找到所需书籍。因此大大提升了用户的体验,让用户可以在短时间内实现查找任务。 在用户点击“搜索”按钮后,indexController控制器中的search()方法会从在数据库中的二手书信息表中的书名和简介中匹配用户输入的查询信息,若查询到则会将查询的结果传递到前台页面中展现。查询结果在前台页面展示用到了分页技术,便于用户操作以及提升用户的使用体验感。 功能代码如下: public function search() { $data=input('post.'); $message=$data['message']; $book=new Book(); $Book=$book->whereOr('bookname','like','%'.$message.'%')->whereOr('description','like','%'.$message.'%')->paginate(6); $page=$Book->render(); $this->assign([ 'Book'=>$Book, 'page'=>$page, ]); return view('bookclass\index'); } 图4-11 图书查询结果界面 4.2.6订单确认和购物车功能 平台的购物车就像是现实中逛超市时推的购物车,两者的区别在于是一个是存在于现实中而另一个是虚拟的。储存用户在平台挑选好的商品的购物车是当下电商网站搭建中的一个最基本的功能。用户可以在不同页面之间跳转以选购自己所需的二手书。 购物车模块的主要功能时保存用户所要购买的二手书,其中每个二手书包含数量、价格和书名的信息,可在下方选择收货地址和支付方式等信息,同时其中也具有删除二手书以及清空购物车的功能。 当用户选中一本书可以选择“立即购买”或“加入购物车”,若立即购买则直接跳转至确认订单页面来填写收货地址实现立即购买功能。若加入购物车,后台会判断该用户的购物车内是否存在这本二手书,如果存在则增加二手书的数量,如果不存在则直接加入购物车。 功能代码如下: public function addCart($bookId,$bookNum=1) { $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); $cart[$bookId]+=$bookNum; $aMonth=time()+30*24*3600; setcookie('cart',serialize($cart),$aMonth,'/'); } //清空购物车 public function clearCart(){ setcookie('cart','',1,'/'); } //删除一条购物车记录 public function delCart($bookId){ $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); unset($cart[$bookId]); $aMonth=time()+30*24*3600; setcookie('cart',serialize($cart),$aMonth,'/'); } //修改购物车中商品数量 public function updateCart($bookId,$bookNum){ $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); $cart[$bookId]=$bookNum; $aMonth=time()+30*24*3600; setcookie('cart',serialize($cart),$aMonth,'/'); } //读取cookie获取购物车商品 public function getBookListCart(){ $book=new Book(); $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); $_cart=array(); foreach ($cart as $k => $v){ $bookInfo=$book->field('id,bookname,image,nowprice')->find($k); $_cart[$k]['bookname']=$bookInfo['bookname']; $_cart[$k]['image']=$bookInfo['image']; $_cart[$k]['nowprice']=$bookInfo['nowprice']; } return $_cart; } 删除购物车内图书的功能,点击“删除”,图书id被传递到控制器中,delCart()方法判断cookie中是否有图书id,有的话就使用unset()进行删除。 图4-12 购物车界面 图4-13 确认订单界面 4.2.7订单管理功能 因为一个用户既可以是买家也可以是卖家,因此订单管理分为用户订单和客户订单两部分。 在用户订单管理中可以查看到自己购买的所有订单。通过从数据库的订单表中查找用户id来展示该用户所有的订单到页面中。 在客户订单管理中主要实现查看订单、修改订单和删除订单三个功能。买家购买二手书确认订单后信息无法修改,只有卖家允许修改和删除,因此这里比用户订单管理多了修改和删除两个功能。点击“客户订单”按钮后跳转到客户订单管理页面,页面通过session获得当前登录用户的id然后在数据库的二手书信息表中查找供应人字段值等于用户id值的二手书信息,根据订单号分组聚合地将查找出来的客户同一订单中的二手书信息显示到页面上。 4.3后台功能实现 本平台的后台管理系统供管理员访问和操作数据库。主要提供了书籍类目管理、书籍管理、用户管理和订单管理四个功能。 4.3.1书籍类目管理 书籍类目管理。通过在后台添加类目、编辑类目、删除类目来对前台首页展示的类目进行处理。二手书类目的删除功能通过点击“删除”按钮调用控制器的del()方法并将当前类目的id传给del()方法,del()方法根据id在数据库中查找并删除数据。 图4-14 二手书类目列表界面 管理员点击“add”按钮可以添加二手书类目,输入类目信息后控制器调用add()方法来把数据存入数据库在列表界面中显示。 图4-15 添加二手书类目界面 管理员点击“编辑”按钮可以修改二手书类目信息,把当前类目的id传给控制器中的edit()方法。输入修改的类目信息后,控制器调用edit()方法根据类目id在数据库中查询,并把该类目的原数据进行更新并在列表界面中显示。 图4-16 编辑二手书类目界面 4.3.2书籍管理 由于本平台是C2C模式,二手书的销售基于用户发布的销售书籍,因此该书籍管理功能不包括添加和编辑用户发布的二手书信息。但是管理员拥有下架不符合上架图书要求的二手书的权利。书籍管理主要实现图书下架功能。通过模型关联将二手书信息表和二手书类目表一对一关联,在二手书列表中显示二手书所属类目名称。通过模型关联将二手书信息表和用户表一对一关联,在二手书列表中显示二手书的卖家。 在二手书模型中关联二手书类目表和用户表的关键代码如下: public function bookclass() { return $this->BelongsTo('Bookclass','class_id','id'); } public function user() { return $this->BelongsTo('User','user_id','id'); } 图4-17 二手书管理界面 4.3.3订单管理 订单管理功能模块实现的功能有:展示所有订单的信息和搜索订单信息。通过在上方输入框输入订单号或收货名来查询订单信息,系统根据提供的订单号或收货名来查询订单。控制器接受到查询字段后调用方法查询,然后将查询结果传递给页面。 图4-18 订单管理界面 4.3.4用户管理 用户管理功能模块实现管理平台内所有用户的功能,主要有查看用户信息和设为管理员两个功能。点击用户信息旁的“设为管理员”按钮可将用户信息表中的用户名和密码传入管理员表中,同时用户表的身份更新为管理员。该用户可登陆后台进行管理操作。 图4-18 更改用户身份前的用户管理界面 管理员通过点击“设为管理员”按钮可将用户设为管理员,当某用户为管理员后,操作栏将从“设为管理员”变更为“撤销管理员”,可对用户管理员身份进行管控。 图4-19 更改用户身份后的用户管理界面 5平台功能测试 为了实现平台的完整性和正确,要通过对平台功能在规定好的条件下进行测试,来查寻错误并评估其是否满足设计要求。 5.1 平台功能测试的目标 对平台功能所要达成的预计目标决定了实施测试的方法。如果是针对开发过程进行测试的话,那我们主要是为了找到平台开发过程中存在的错误。如果是针对平台应用中遇到的假设bug而进行测试的话,那我们主要是为了让用户使用平台时能够规避掉这些错误并且安全有保障的使用。 5.2 平台功能测试的方法 现在的主要测试方法有四种:静态测试方法、动态测试方法、黑盒测试方法、白盒测试方法。本平台的测试使用的方法是黑盒测试法。这种方法是通过将软件测试环境模拟为一个不能被看见的“黑盒”,然后将数据输入,把输出的数据与输入的数据进行对比,以此结果来检查软件内部功能是否运作正常。如果输出的数据与预计的数据一致的话,则表明这个软件成功通过测试,如果输出的数据与预计的数据大不相同,那么表明软件程序内部出现问题,需尽快解决,即使这个差值再小也不能忽略。 5.2.1 注册和登录功能测试 5.2.2 购物车功能测试 5.2.3 订单功能测试 5.2.4 图书功能测试 5.3 测试总结 通过以上对二手书销售平台大部分功能模块的测试,可以保证用户在之后使用本平台时避免一些不必要的麻烦和错误,同时保证了平台能够正常运行以及保证了可靠性。 6总结 时代日益变迁,科技不断发展和进步。二手书销售平台的出现给闲置书籍的处理方式多提供了一种选择同时还能给卖家带来真切的收益。并且减少了书籍的生产,节约资源并且保护了环境。 此次论文题目为“基于web的二手书销售平台”,使用PHP编程语言和相关计算机编程基础知识,从需求分析到逻辑结构的最终设计,在B/S架构模式的下基于ThinkPHP5.0框架技术开发的一个二手书销售平台。 首先本文通过对二手书销售平台的开发背景和开发意义进行简要阐述,同时还对二手书销售平台的可行性进行研究。阐明了该平台的实际意义和价值。 其次,为了让平台更好的为用户服务,减少后期使用时不需要的麻烦,也对该平台进行了了需求分析,明确了平台的功能需求、用户需求及平台的运行环境和开发环境,完善初期的平台设计。 最后,通过对二手书销售平台的需求进行设计,实现各个功能模块并不断优化。 参考文献 [1] 林杨. 二手书交易平台的开发研究[J]. 考试周刊, 2012, 000(025):105-107. [2]王利肖.基于B/S模式的在线旧书销售系统分析与设计[J].计算机与现代化,2007(6):118-119,122. [3] 郭妍. 基于B/S架构的购书网站系统设计与实现[D].大连交通大学,2017. [4] 邓滔. SNS在学生日常管理系统中的研究与应用[D].湖南大学,2013. [5] 沈皎佶. 基于thinkphp的网站内容管理框架的开发[D].上海师范大学,2015. [6]黄颖. 基于ThinkPHP框架的资讯类网站后台管理系统的设计与实现[D].首都经济贸易大学,2017. [7]杨军. 基于Thinkphp框架的校园二手图书交易系统的设计与实现[D].山东师范大学,2015. 附 录 附录1 程序源代码 前台控制器部分代码: BookclassController.php public function search() { $Book=Book::where('status','1')->paginate(12); $page=$Book->render(); $this->assign([ 'Book'=>$Book, 'page'=>$page, ]); return view('search'); } BookController.php class BookController extends Controller { public function index() { $id=input('id'); $book=Book::get($id); $this->assign([ 'book'=>$book, ]); return view(); } } CartController.php public function addtocart() { $bookId=input('id'); $bookNum=1; $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); $cart[$bookId]+=$bookNum; $aMonth=time()+30*24*3600; setcookie('cart',serialize($cart),$aMonth,'/'); return view('cart'); } //清空购物车 public function clearCart(){ setcookie('cart','',1,'/'); } //删除一条购物车记录 public function delCart($bookId){ $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); unset($cart[$bookId]); $aMonth=time()+30*24*3600; setcookie('cart',serialize($cart),$aMonth,'/'); } //修改购物车中商品数量 public function updateCart($bookId,$bookNum){ $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); $cart[$bookId]=$bookNum; $aMonth=time()+30*24*3600; setcookie('cart',serialize($cart),$aMonth,'/'); } //读取cookie获取购物车商品 public function getBookListCart(){ $book=new Book(); $cart=isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); $_cart=array(); foreach ($cart as $k => $v){ $bookInfo=$book->field('id,bookname,image,nowprice')->find($k); $_cart[$k]['bookname']=$bookInfo['bookname']; $_cart[$k]['image']=$bookInfo['image']; $_cart[$k]['nowprice']=$bookInfo['nowprice']; } return $_cart; } IndexController.php class IndexController extends Controller { /** * 显示资源列表 * * @return \think\Response */ public function index() { $Book=Book::where('status','1')->paginate(20); $page=$Book->render(); $this->assign([ 'Book'=>$Book, 'page'=>$page, ]); return view(); } public function search() { $data=input('post.'); $message=$data['message']; $book=new Book(); $Book=$book->whereOr('bookname','like','%'.$message.'%')->whereOr('description','like','%'.$message.'%')->paginate(6); $page=$Book->render(); $this->assign([ 'Book'=>$Book, 'page'=>$page, ]); dump($Book); return view('bookclass\search'); } } LoginController.php class LoginController extends Controller { /** * 显示资源列表 * * @return \think\Response */ public function index() { // return view(); } public function login(){ $data=input('post.'); $result=$this->validate($data,'app\index\validate\User.login'); if($result !== true){ $this->error($result); } $user=User::get(['username'=>$data['username']]); if(!empty($user) && password_verify($data['password'],$user->password)) { Session::set(“username“,$data['username']); Session::set(“uid“,$user->id); $this->success('登录成功','index'); }else{ $this->error('用户名或密码错误'); } } public function logout() { Session::delete('username'); Session::delete('id'); Session::delete('cart'); $this->success('退出成功!', '/index'); } } PersonController.php class PersonController extends Controller { /** * 显示资源列表 * * @return \think\Response */ public function index() { $uid=Session::get('uid'); $user=User::get(['id'=>$uid]); $this->assign([ 'users'=>$user, ]); if(request()->isPost()){ $data=input('post.'); //处理图片上传 判断是否为新图 如果是新图就删旧图 if ($_FILES['image']['tmp_name']){ $oldStore=User::field('image')->find($uid); $oldStoreimg=UPLODAS.$oldStore['image']; if (file_exists($oldStoreimg)){ @unlink($oldStoreimg); //判断旧图是否存在,存在即删除旧图 } $data['image']=$this->upload(); } //修改前进行验证 $result=$this->validate($data,'app\index\validate\User.edit'); if($result !== true){ $this->error($result); } Session::set(“username“,$data['username']); $save=User::where('id',$uid)->update($data); if($save !== false){ $this->success('修改个人信息成功!'); }else{ $this->error('修改个人信息失败!'); } return; } return view(); } public function sell(){ $bookclassList=Bookclass::select(); $this->assign('bookclassList',$bookclassList); return view(); } public function add_book() { $data=input('post.'); $uid=Session::get('uid'); //处理图片上传 if ($_FILES['image']['tmp_name']){ $data['image']=$this->upload(); } $validate=validate('Book'); if(!$validate->check($data)){ $this->error($validate->getError()); } $add=Book::insert($data); if($add){ $this->success('发布二手书成功!','book_list'); }else{ $this->error('发布二手书失败!'); } return view('book_list'); } public function edit() { if(request()->isPost()) { $data=input('post.'); if ($_FILES['image']['tmp_name']){ $old=db('book')->field('image')->find($data['id']); $oldimg=UPLODAS.$old['image']; if (file_exists($oldimg)){ @unlink($oldimg); //判断旧图是否存在,存在即删除旧图 } $data['image']=$this->upload(); } $validate=validate('Book'); if(!$validate->check($data)){ $this->error($validate->getError()); } // $book=Book::create('user_id',$uid); $save=Book::update($data); if($save){ $this->success('修改二手书信息成功!','/book_list'); }else{ $this->error('修改二手书信息失败!'); } return ; } // $uid=Session::get('uid'); $id=input('id'); $book=Book::with('bookclass')->find($id); $bookclassList=Bookclass::select(); $this->assign([ 'book'=>$book, 'bookclassList'=>$bookclassList, ]); return view(); } public function book_list() { $uid = Session::get('uid'); $list=Book::with('bookclass')->where('user_id',$uid)->paginate(6); $page=$list->render(); $this->assign([ 'list'=>$list, 'page'=>$page, ]); return view('book_list'); } public function del_book($id) { $del=Book::destroy($id); if($del){ $this->success('删除书籍成功!','/book_list'); }else{ $this->error('删除书籍失败!'); } } public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 移动到框架应用根目录/public/uploads/ 目录下 if($file){ $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ return $info->getSaveName(); }else{ // 上传失败获取错误信息 echo $file->getError(); die; } } } } RegisterController.php class RegisterController extends Controller { /** * 显示资源列表 * * @return \think\Response */ public function index() { // return view(); } public function save() { $data=input('post.'); $result=$this->validate($data,'app\index\validate\User'); if($result !== true) { $this->error($result); } $user=new User(); $user->username=$data['username']; $user->password=password_hash($data['password'],PASSWORD_BCRYPT); $user->email=$data['email']; $user->realname=$data['realname']; if($user->save()) { $this->success('注册成功', '\login'); }else{ $this->error('注册失败'); } } } 后台控制器部分代码如下: BookclassController.php class BookclassController extends Controller { public function lst() { $bookclassList=db('bookclass')->order('id DESC')->paginate(6); $page=$bookclassList->render(); $this->assign([ 'bookclassList'=>$bookclassList, 'page'=>$page, ]); return view('list'); } public function add() { if(request()->isPost()){ $data=input('post.'); //添加前进行验证 $result=$this->validate($data,'app\admin\validate\Bookclass'); if($result !== true) { $this->error($result); } $add=db('bookclass')->insert($data); if($add){ $this->success('添加类目成功!','/adminbookclass'); }else{ $this->error('添加类目失败!'); } return; } return view(); } public function edit() { if(request()->isPost()){ $data=input('post.'); //修改前进行验证 $result=$this->validate($data,'app\admin\validate\Bookclass'); if($result !== true) { $this->error($result); } $save=db('bookclass')->update($data); if($save !== false){ $this->success('修改二手书类目成功!','/adminbookclass'); }else{ $this->error('修改二手书类目失败!'); } return ; } $id=input('id'); $bookclass=db('bookclass')->find($id); $this->assign([ 'bookclass'=>$bookclass, ]); return view(); } public function del($id) { $del=db('bookclass')->delete($id); if($del){ $this->success('删除二手书类目成功!','/adminbookclass'); }else{ $this->error('删除二手书类目失败!'); } } } BookController.php class BookController extends Controller { public function lst() { // $bookList=db('book')->order('id DESC')->paginate(6); $bookList=Book::with('bookclass','user')->paginate(6); $page=$bookList->render(); $this->assign([ 'bookList'=>$bookList, 'page'=>$page, ]); return view('index'); } public function del($id) { $del=db('book')->delete($id); if($del){ $this->success('删除二手书成功!','/adminbook'); }else{ $this->error('删除二手书失败!'); } } } OrderController.php class OrderController extends Controller { public function lst() { $orderList=Order::with('book','status','user')->paginate(6); $page=$orderList->render(); $this->assign([ 'orderList'=>$orderList, 'page'=>$page, ]); return view('index'); } } userController.php class userController extends Controller { public function lst() { $userList=User::paginate(6); $page=$userList->render(); $this->assign([ 'userList'=>$userList, 'page'=>$page, ]); return view('index'); } public function edit($id) { $admin=User::get($id); $add=Admin::create([ 'username' => $admin->username, 'password' => $admin->password, ]); $edit=User::where('id',$id)->update(['status'=> 1]); if($add&&$edit){ $this->success('成功设置为管理员!','/adminuser'); }else{ $this->error('设置为管理员失败!'); } return; } public function del($id) { $user=User::get($id); $del=Admin::where('username',$user->username)->delete(); $edit=User::where('id',$id)->update(['status'=> 0]); if($del&&$edit){ $this->success('成功撤销管理员!','/adminuser'); }else{ $this->error('撤销管理员失败!'); } return; } } 本文档由香当网(https://www.xiangdang.net)用户上传

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 5 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于web学生成绩管理系统设计与实现

    随着计算机技术在各行各业的广泛应用,将计算机技术应用到学校中去,将大大提高学校管理的效率。学生成绩管理系统将在提高学校管理效率中发挥重要作用。

    2个月前   
    113    0

    基于web的驴友社交网站设计与实现

    近十年来,随着科技地发展进步,各方面都取得了排山倒海的变化。互联网的七通八达,可以让五湖四海的人们在任何时间和地点进行交流,互联网上的社交似乎成为了主流。所以,以前以实体店为主的旅游社似乎也逐渐...

    1个月前   
    114    0

    基于web的旅游网站设计与实现

    随着经济和交通的快速发展,人们对于生活的追求不再停留在物质层面,而是开始了娱乐和精神层面的追求。旅游是现在大多数人在长假期选择的度过方式。如何快速获取各地最新的旅游信息以获得更好的旅游体验便成为旅游者的需求。

    1个月前   
    117    0

    基于JavaEE平台的设计资源交易平台的设计与实现

    中国因改革开放政策实施的缘故,社会经济水平与日俱增,人民的消费水平也随之升高,中国正在经历前所未有的消费升级,越来越多的消费者在满足基本物质需求的基础上追求精致生活。

    1个月前   
    119    0

    基于Web技术的驾校考试系统的设计与实现毕业设计

    基于Web技术的驾校考试系统的设计与实现毕业设计 摘 要 在网络技术逐渐渗入社会生活各个层面的今天,传统的考试方式也面临着变革,而网上考试则是网络技术一个很重要的发展方向。网上考试一...

    2年前   
    1136    0

    基于WEB的停车场管理系统设计和实现毕业设计

    20XX 届 毕 业 论 文(设计)论文(设计)题目基于WEB的停车场管理系统的设计和实现院系名称计算机科学与技术系专业(班级)计算机科学与技术2005级本科班姓名(学号) 指导教师 ...

    7个月前   
    295    0

    基于WEB的图书管理系统的设计与实现课程设计

    软件工程课程设计报告基于WEB的图书信息管理系统的设计与实现所 在 学 院 信息科学技术学院 专 业 名 称 计算机科学与技术 ...

    10个月前   
    346    0

    基于web的图书管理系统

    基于Web的图书管理系统目前,信息时代是这个社会的主旋律,社会的各个区域和领域都因为信息的技术改革而发生了新的变化。跟上时代的步伐,因为整个科技社会的变化和发展很快,增强信息化公司的竞争能力,...

    2个月前   
    95    0

    基于Web的学生信息管理系统

    在现如今这个网络技术高度普及和信息全球化的年代,信息化的程度和互联网技术在国际竞争中充当着重要的角色,华为5G的实例告诉我们,谁先掌握技术谁就有话语权。

    2个月前   
    103    0

    基于Java技术的Web应用设计模型的比较研究

     中文翻译 基于Java技术的Web应用设计模型的比较研究 来源:School of Computer Science and Engineering University of New So...

    2年前   
    839    0

    毕业论文:基于Web的办公自动化系统设计与实现

    基于Web的办公自动化系统设计的主要目的是利用现代的互联网技术,采用人机对话方式为办公人员之间搭建一个互动平台。实现无纸化办公和多部门间协同办公,数据存储安全可靠的要求,在降低办公成本的同时,也...

    2年前   
    1036    0

    基于web的驾校考试管理系统设计与实现

    本文主要从驾校考试管理系统的选题,需求分析而出发,根据现有的驾校系统对其进行功能模块设计。系统实现方面,基于B/S架构,而且在开发技术方面使用了jsp使得其开发更为简化,以Tomcat作为服务器...

    2个月前   
    96    0

    基于PYNQ平台的手写数字识别

    PYNQ全称为Python Productivity for Zynq,即在原有Zynq架构的基础上,添加了对python的支持。Zynq是赛灵思公司推出的行业第一个可扩展处理平台系列,在芯片中...

    2年前   
    7989    0

    基于Web的航空机票售票管理信息系统毕业设计

    基于Web的航空机票售票管理信息系统院 系计算机学院专 业班 级学 号姓 名指导教师负责教师2009年X月摘 要本文主要介绍了航空售票系统信息管理的设计和实现过...

    11个月前   
    347    0

    基于BS的师生课堂交流平台的设计与实现

    基于B/S的师生课堂交流平台的设计与实现是一项系统工程,要想科学、经济、实用地建设好师生课堂交流平台,应该在具备一定理论认识、一定资源的条件、一定师资的前提下,处理好以下几个关系:

    2个月前   
    275    0

    基于BS架构的网络教学平台的设计与实现

    当今是网络信息时代,出现了很多行业都依靠互联网的发展,这就是互联网+的概念。现在中国的网络教育如火如茶,百花齐放,有职业教育,有中小学教育,留学教学,兴趣教育等等,都利用了互联网的便捷性进行着知...

    3个月前   
    113    0

    基于Java EE平台的公交车辆运行监控系统的设计与实现

    随着经济和城市化地高速发展,市民有多种的出行方式,其中最为重要的是公交车出行。城市公交车需求的数量在快速地增长,它每天会产生大量的实时运行数据急需计算机系统做及时的处理。由于公交车的实时情况需要...

    1个月前   
    80    0

    基于javaEE平台的城市重大活动监控毕业设计

    在越来越现代化,繁华的城市中,人们出行越来越频繁,文化需求也越来越多,政府或者商家在城市中举办各种各样类型的活动,为了人流的安全,城市街道安装摄像头,红外等监控设备,再通过算法对人流数据实现不间...

    1个月前   
    167    0

    论文基于JAVA的校园商铺平台的设计与实现

    物流的发展非常之快,在互联网购物变成了人民迈向美好生活重要的一步,在短时间内购买到或者订购到自己所需要的商品已经成为网上购物显著的需求。对于全校师生而言,相比较于在大型网站上购物所需要等待的物流...

    9个月前   
    498    0

    基于安卓手机平台的视频播放器的设计与实现毕业设计

    本科毕业设计 题目:基于安卓手机平台的视频播放器的设计与实现 Title:Design and implementation of the Android mobile phone p...

    2年前   
    829    0

    文档贡献者

    爱***享

    贡献于2021-09-17

    下载需要 5 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档