《个人级软件开发课程设计》作业
题目 手写框架的外卖订餐管理系统
目录
1设计流程
1.1创作前思路:
- 创建一个 Spring 配置文件(例如,spring-config.xml)用于配置扫描包属性和数据库信息。在该文件中,可以使用自定义的命名空间来定义 xsd 文件和进行属性配置。
- 手写一个 Spring 的 xsd 文件,定义自定义的命名空间和相应的元素和属性。在 xsd 文件中,定义包属性和数据库信息的配置结构。
- 在 Spring 配置文件中引入手写的 xsd 文件,并使用相应的元素和属性进行配置。例如,使用 <myapp:package-scan> 元素来定义扫描包的属性配置,使用 <myapp:database> 元素来配置数据库信息。
- 创建一个 Spring MVC 配置文件(例如,springmvc-config.xml)用于配置扫描包属性。在该文件中,可以使用自定义的命名空间来定义 xsd 文件和进行属性配置。
- 手写一个 Spring MVC 的 xsd 文件,定义自定义的命名空间和相应的元素和属性。在 xsd 文件中,定义包属性的配置结构。
- 在 Spring MVC 配置文件中引入手写的 xsd 文件,并使用相应的元素和属性进行配置。例如,使用 <myapp:package-scan> 元素来定义扫描包的属性配置。
- 创建一个 MyBatis 的 DTO(Data Transfer Object)类,并定义属性以映射数据库表的字段。手写一个 MyBatis 的映射文件(例如,example.xml),用于编写 SQL 查询和其他数据库操作。
- 将所有配置文件放入资源包(例如,resources 文件夹),确保文件路径正确。
- 创建一个监听器类(例如,ListenerServlet),实现相关接口并定义属性,用于解析和加载配置文件,获取属性和完成数据库的加载。
- 在 web.xml 文件中指定配置文件路径,以及监听器和分发器的类路径。在 <context-param> 元素中使用 <param-value> 指定 Spring 和 Spring MVC 的配置文件路径。
- 根据监听器类的属性和分发器属性,进行配置文件的解析和书写,以获取属性的相关方法以及数据库的增删改查方法设置。可以使用动态代理来实现相关功能。
- 完善监听器类的属性获取过程,确保正确加载属性,以及完成数据库的加载,例如建立数据库连接。
- 完善分发器,包括属性的获取和数据注入,使用相关路径查找和返回到控制器参数的处理逻辑。
1.2设计思路流程图
2创作的流程
①我用的是tomcat服务器,想法是首先启动tomcat服务器
其中web.xml 是 Java Web 应用程序中的一个部署描述文件,用于配置和定制 Web 应用的行为。
以下是几个关键配置信息:
- <display-name>:指定应用程序的显示名称为 “takeout_restaurant”。
- <welcome-file-list>:定义了在访问应用程序根目录时要加载的默认文件。在这里,“login.jsp” 被指定为默认的欢迎文件。
- <context-param>:指定一个上下文参数,它可以在整个应用程序中使用。在这里,“springConfig” 被设置为 “spring/spring-config.xml”,它指定了 Spring 配置文件的位置。
- <listener>:定义了一个监听器,用于监听应用程序生命周期事件。在这里,“com.hs.homework2.config.ListenerServlet” 被指定为监听器类,它会在应用程序启动和关闭时执行相应的逻辑。
- <servlet>:配置了一个 Servlet 组件。Servlet 实质上是处理 HTTP 请求和生成响应的 Java 类。在这里,“com.hs.homework2.config.DispatcherServlet” 被作为 Servlet 类指定,并且它带有一个名为 “dis” 的名称。这个 Servlet 还有一个初始化参数 “springMvcConfig”,它指定了 Spring MVC 配置文件的位置。
- <servlet-mapping>:指定了 Servlet 的映射规则。在这里,“dis” Servlet 被映射到根路径 “/”,这意味着当用户访问应用程序的任何 URL 时,都会使用 “dis” Servlet 来处理该请求。
通过这样的配置,应用程序能够根据用户的请求将其路由到相应的 Servlet,并使用 Spring 框架进行处理和管理。
②在监听类中,进行了spring文件的解析,包括要要扫描的包,数据库相关的信息;也进行了数据库的加载可启动。
对于分发器的类的相关属性
初始化时,需要获取的属性的数据,主要是通过springmvc的数据进行扫包
③然后在其service方法,显示找到对应的controller上的路径,我进行通过反射机制进行另外实例化service类并注入到的注入controller类的属性字段中。
其中传的参数是HttpServletRequest request 到controller中。
因为我更改了动态代理类
和修改了jdbc类
所以我将@Select注解作为“执行sql”语句的注解,而不是查询sql语句。
④进行页面交互
3.数据库设计
admin表:
• id: 主键,管理员ID,整数类型,长度为11。 • name: 管理员姓名,字符串类型,长度为60。 • pwd: 管理员密码,字符串类型,长度为60。 • authority: 管理员权限,字符串类型,长度为60。 |
menu_b表:
• id: 菜品ID,字符串类型,长度为30。 • im: 菜品图片路径,字符串类型,长度为300。 • name: 菜品名称,字符串类型,长度为150。 • price: 菜品价格,双精度浮点数类型。 • stock: 菜品库存,整数类型,长度为11。 |
user表:
• id: 用户ID,主键,整数类型,长度为11。 • name: 用户名,字符串类型,长度为180。 • pwd: 用户密码,字符串类型,长度为180。 • realname: 用户真实姓名,字符串类型,长度为180。 • sex: 用户性别,字符串类型,长度为36。 • age: 用户年龄,整数类型,长度为4。 • card: 用户身份证号,字符串类型,长度为162。 • address: 用户地址,字符串类型,长度为900。 • phone: 用户电话号码,字符串类型,长度为117。 • email: 用户电子邮箱,字符串类型,长度为180。 • code: 用户邮政编码,字符串类型,长度为135。 • type: 用户类型,字符串类型,长度为216。 |
information表:
• id: 信息ID,字符串类型,长度为90。 • detail: 信息详情,字符串类型,长度为900。 • sale: 销售数量,整数类型,长度为11。 |
4.功能模块
5.运行结果
5.1登录
5.2进入应用界面
5.3增加
当输入的是存在的编号时,添加不成功
当输入的是不存在的编号时,添加成功
点击下图的删除按钮:
删除成功
点击下图的修改按钮:
修改成功
查询普通管理员成功
点击管理菜单信息,进入下面的页面
点击删除按钮:
删除成功
进行添加菜单条目
添加成功
点击查询过按钮,查询成功
点击修改按钮
进入修改界面
点击修改按钮
修改成功
点击查看用户信息
点击菜品详情
点击退出登录
进入登录界面
6.总结和展望
6.1系统总结
在过去的三天里,我专注于编写代码,其中包括订单系统的一部分。这段时间是系统开发过程中的关键阶段,我努力实现功能和提升系统性能。我将详细总结这段时间的工作,并展望未来的发展方向。
首先,总结这三天的工作。在系统开发过程中,我注重以下几个方面的工作:
功能实现:我致力于开发订单系统的核心功能,如普通管理员用户应用(包括增删改查)、超级管理员应用(包括增删改查)、菜单管理(包括增删改查)。通过编写代码和逻辑实现,我成功地搭建了一个基本的订单系统框架,并且这些功能能够顺利运行。
数据管理:订单系统中的数据管理是非常重要的一部分。我设计和实现了数据库结构,确保数据的存储和访问能够高效和可靠。我采用了适当的数据模型和关系,使用合适的数据库引擎,并编写了相关的查询和操作代码,确保数据的一致性和完整性。
用户界面:为了提供良好的用户体验,我花费时间设计和开发了用户界面。我关注界面的易用性和美观性,并进行了用户界面的迭代和优化。通过合理的布局、交互设计和视觉效果,我努力提高用户对订单系统的满意度。
6.2展望
接下来是未来的展望。虽然我已经取得了一些进展,但还有很多工作要做,为订单系统的发展带来更多价值:
功能扩展:在未来的开发中,我计划继续扩展订单系统的功能。例如,我打算增加配送追踪功能,让用户可以实时了解订单的送达情况。我还计划开发优惠券和活动管理等功能,以提供更多的促销和优惠方式,吸引更多用户使用系统。
性能优化:随着订单量的增加,系统性能将成为一个关键问题。为了应对高负载和快速响应的需求,我将进一步优化系统的性能。优化数据库查询、使用缓存技术、改进代码逻辑等方法将成为我提高系统性能的重要方向。
移动端适配:随着智能手机的普及,移动端订餐已经成为主流趋势。因此,我计划在未来的工作中优化订单系统的移动端适配,确保用户可以方便地在手机上使用系统。
数据分析和智能化:订单系统积累了大量的订单和用户数据。我计划开发数据分析和挖掘功能,以提取有价值的信息和洞察力。通过分析用户行为、订单偏好和趋势,我可以根据数据提供个性化推荐和定制的服务,提升用户体验和促进用户满意度。
安全加固:随着网络安全威胁的不断增加,我将继续加强订单系统的安全性。我将实施安全策略,包括加密用户数据、防范常见攻击、定期进行安全审计等措施,以保护用户信息和系统安全。
综上所述,这三天的工作为订单系统的开发奠定了基础,但仍然有很多机会和挑战等待我来抓住和应对。我将继续努力,不断优化和改进订单系统,以提供更好的用户体验和功能,满足用户的需求和期望。