数据库系统原理综合实验课设(超完整详细易上手)

2023-12-29 05:20

本文主要是介绍数据库系统原理综合实验课设(超完整详细易上手),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、需求调研

随着社会的发展,生活工作节奏的加快,人们对餐饮消费的数量、质量以及消费习惯等许多方面也发生了巨大的变化。快餐的社会需求随之不断扩大,并且快餐样式也逐步演化升级,不仅注重营养的平衡,其样式也更加丰富多彩,市场消费大众性和基本需求性特点表现的更加充分。因此,一个好用的网上订餐系统对于餐饮品牌开展外卖接单业务是可以带来极大的积极作用的,如今人为的电话接单模式已经被淘汰,取而代之的利用以数字化技术为支撑的订餐系统接单。引进订餐管理系统,可以有效杜绝跑单、漏单等失误的出现,另外后台可以对于订单进行清算和统计,有利于经营者根据经营情况调整营销策略。

二、功能分析

根据调研需求,本系统目前包括两类用户:客户、商家。系统首界面提供注册和登录功能。客户登录系统后可查看各个地区的在售餐点信息、浏览周边商家店铺信息,提供订餐和取消订单功能,修改个人信息和密码等。而商家登录系统后可以发布、删除和查看餐点商品信息,统计各类商品销售量,以及查看客户订单内容等。

在这里插入图片描述

1.注册功能:注册客户和商家两类用户

2.客户角色拥有的功能

商品信息

  • 查看餐点:按商家所在地或者商品名称查找餐点,支持关键字模糊查询和精准查询,显示餐点列表和对应的商品简介。
  • 商家好店:以列表下拉框的形式查看不同地区的商家店铺信息,统计商家销售餐点总数量。
  • 在线订餐:按商家所在地查找餐点选中预下单的餐点,补充送达地址信息进行下单,提供删除订单的功能。

个人信息

  • 我的订单:查看历史所有订单的详细信息,包括商品价格、下单时间、送达地址等。
  • 我的资料:显示客户账号、姓名、性别、居住地、手机号信息,支持编辑进行修改。

系统管理:

  • 修改密码:客户可以修改自己账号的密码信息。
  • 退出系统:点击退出综合订餐管理系统。

3.商家角色拥有的功能

商品信息

  • 我的商品:查看商家已经发布的餐点商品信息(商品名称、价格、上架时间、商品简介等),支持修改和删除商品信息功能,销售统计表显示各类餐点商品出售的总销量。
  • 周边商品:按商家所在地或者商品名称查找餐点,支持关键字模糊查询和精准查询,显示餐点列表和对应的商品简介。
  • 发布商品:商家输入商品名称、价格、商品简介信息,即可发布新的餐点商品。

商家信息

  • 我的接单:查看历史所有接单的详细信息,包括商品名称、客户手机号、送达地址等。
  • 商家资料:显示商家账号、店铺名称、店铺地址、联系电话,支持编辑进行修改。

系统管理:

  • 修改密码:商家可以修改自己账号的密码信息。
  • 退出系统:点击退出综合订餐管理系统。

三、数据模型设计

这是整个综合订餐系统实体间关联的ER图,商家与商品的关系是多对多;商品与订单间联系是一对一;订单与客户间的联系是多对多。
在这里插入图片描述

  • 商品属性包括商品编号、商品名称、上架时间、价格、发布商家、商品简介。
  • 订单属性包括订单编号、商品编号、客户账号、下单时间、送达地址。
  • 商家属性包括商家账号、登录密码、店铺地址、店铺名称、联系电话。
  • 客户属性包括客户账号、客户姓名、登录密码、居住地、性别、手机号码。

四.数据库设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这是商品表、订单表、商家表、客户表相互联系的数据库关系图:
在这里插入图片描述

五、详细设计

系统图形化界面基于visual Studio的Windows窗体应用(.NET Framework)进行设计,多窗口之间的相互跳转通过TreeView控件和Button控件进行实现。下面对主要关键的界面信息进行展示和说明。

1.系统登陆界面

在这里插入图片描述
通过Label角色判断用户的身份(客户或者商家),接着通过字符串拼接的身份结合TextBox用户名和TextBox密码组合成sql查询语句到客户表或者商家表进行比对,若用户存在则跳转到商家端主界面或者客户端主界面。

例如用户角色选择客户,相关sql查询语句为:

string sql = "select 客户账号,登录密码 from 客户 where 客户账号='" + name +"' and 登录密码='" + textBoxpasswd.Text.Trim() + "'"; 

2. 系统商家端和客户端注册界面

在这里插入图片描述在这里插入图片描述
在登录界面点击“客户注册”或者“商家注册”跳转到对应的界面,进行用户注册。系统具有对用户输入的内容进行合法检测,若内容不完整或格式不正确进行弹窗提醒用户进行修改。若内容合法,则在商家表或者客户表增添数据。

3. 客户角色查看餐点界面

列表下拉框选择商家所在地区或者输入餐点名称,实现关键字模糊查询,查询功能支持按照地区和餐点名称两种方式(可组合),系统调用sql语句对商品表和商家表进行联合查询,查询结果显示在表格和富文本编辑控件中。比如地区下拉框选择“东山区”,点击查询则表格显示商家店铺所在地字样带有东山区的所有在售餐点信息。选中表格某一列餐点,下方富文本框显示该餐点的详细商品简介。

在这里插入图片描述

4. 客户角色在线订餐界面

选择商家所在地后,选中表格中的餐点信息,输入送达地址,即可点餐。点餐时结合用户选择的餐点信息,自动获取系统时间,组合成完整的订单信息数据插入到订单表中,右侧列表显示订单信息,选中列表具体项后删除订单,从订单表删除相关订单信息,接着刷新界面重新进行数据显示。
在这里插入图片描述

5. 客户角色商家好店界面

客户选择商家地区后,联合商家表和商品表统计每个地区的商家的餐点总销量,结合商家信息进行显示,方便顾客进行权衡从而更好进行选择商家餐点订餐。
在这里插入图片描述

6. 客户角色我的资料界面

资料面板展示用户注册的所有信息,用户可以进行编辑修改,点击确定重新修改个人信息,更新客户表对应的数据。
在这里插入图片描述

7. 客户角色修改密码界面

用户在此界面可以修改密码,确认信息则更新新的密码信息到客户表对应的数据行中。
在这里插入图片描述

8. 商家角色我的商品界面

此处显示商家个人用户所有已发布的商品餐点信息,包括价格、上架时间、商品简介等等。商家可以对商品进行修改信息或者删除下架,在商品表做出对应的数据操作。右下角的销售统计表对每件商品进行销量统计,方便商家对销售计划进行决策调整,更好地经营店铺。
在这里插入图片描述

9. 商家角色发布商品界面

商家填写商品餐点名称、价格、商品简介信息后,系统自动获取当前时间作为上架时间属性,结合发布商家等信息,组成完整的商品信息,将数据插入到商品表中。在这里插入图片描述

10. 商家角色我的接单界面

此处通过对商家表、订单表、客户表进行联合查询,进而显示历史所有接单信息(商品名称、送达地址、下单时间、客户账号、客户手机号等),商家查看订单后进而可以现在安排人手进行餐点相关线下配送服务,合理分配店铺人力资源。
在这里插入图片描述

六.测试

下面进行系统软件的主要功能的测试,商家发布餐点–>客户订餐–>商家查看接单以及销售统计表。

1.商家登陆 发布餐点(以发布辣炒刀豆为例)

在这里插入图片描述

2. 客户登陆 进行订餐(选择餐点->填写送达地址–>点餐–>查看订单信息)

在这里插入图片描述
具体订单信息:在这里插入图片描述

3. 商家端查看接单和销售统计量

在这里插入图片描述
成功接受订单,可以从销售统计表看到辣炒刀豆的销售量加1。在这里插入图片描述

七.关键技术总结

下面介绍数据库主要增删查改以及统计功能的关键数据库语句和TreeView控件结合多Form窗口的交互实现关键代码。除了对数据的基本CURD语句之外,按需灵活调用select CONVERT(varchar(30), getdate(), 120)获取系统时间等内置函数,对数据进行分组进行信息统计,以及多个关系表连接进行嵌套查询所需信息等。

  • 数据库增删查改、统计语句
  1. 客户按地区和餐点名称进行模糊查询代码
private void button1_Click(object sender, EventArgs e)
{if (textBoxclass.Text != "" && comboBoxterm.Text != ""){SqlConnection conn = new SqlConnection(loginForm.connectionString);conn.Open();string sql = "select 商品编号 as 餐点编号,商品名称 as 餐点名称, 上架时间, 价格, 发布商家 from 商品, 商家 where 商家.商家账号 = 商品.发布商家 and 商品.商品名称 like '%" + textBoxclass.Text + "%'and 商家.店铺地址 like '%" + comboBoxterm.SelectedItem.ToString() + "%'";SqlDataAdapter adp1 = new SqlDataAdapter(sql, conn);DataSet ds = new DataSet();adp1.Fill(ds);//载入基本信息dataGridView1.DataSource = ds.Tables[0].DefaultView;conn.Close();}
}
  1. 客户按地区和餐点名称进行模糊查询代码
private void button1_Click(object sender, EventArgs e){string kehuid = textBox1.Text;SqlConnection conn = new SqlConnection(loginForm.connectionString);conn.Open();if(textBoxAddR.Text==""||textBox1.Text==""||textBoxid.Text==""){MessageBox.Show("信息不完整,点餐失败");}else{string sql = "insert into 订单(送达地址, 下单时间, 客户账号, 商品编号) values('" + textBoxAddR.Text + "', (select CONVERT(varchar(30), getdate(), 120)),'" + textBox1.Text + "'," + textBoxid.Text + ")";SqlCommand cmd = new SqlCommand(sql, conn);cmd.CommandText = sql;if (cmd.ExecuteNonQuery() > 0){MessageBox.Show("点餐成功");}}conn.Close();}
  1. 客户取消订单的数据删除代码
 private void button4_Click(object sender, EventArgs e){SqlConnection conn = new SqlConnection(loginForm.connectionString);conn.Open();string sql = "delete from 订单 where 订单编号 = " + (listBox1.SelectedItem.ToString()).Split(' ')[0];SqlCommand cmd = new SqlCommand(sql, conn);cmd.CommandText = sql;if (cmd.ExecuteNonQuery() > 0){ MessageBox.Show("删除成功!");}conn.Close();}
  1. 商家修改商品信息的数据更新代码
private void button1_Click(object sender, EventArgs e){SqlConnection conn = new SqlConnection(loginForm.connectionString);conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;string sql = "update 商品 set 商品名称 = '" + textName.Text + "',上架时间= '" + textTime.Text + "',价格= " + textPrice.Text + ",商品简介= '" + richTextBox.Text + " 'where 商品编号 = '" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "'";cmd.CommandText = sql;cmd.ExecuteNonQuery();MessageBox.Show("修改信息成功!");conn.Close();}
  1. 商家统计各类餐点销售量代码
string sql = " select 商品名称,count(*)销售量 from 订单,商品 where 商品.发布商家='" +loginForm.getName()+"'and 订单.商品编号 = 商品.商品编号 group by 商品.商品名称";SqlConnection conn = new SqlConnection(loginForm.connectionString);conn.Open();SqlDataAdapter adp1 = new SqlDataAdapter(sql, conn);DataSet ds = new DataSet();adp1.Fill(ds);//载入基本信息dataGridView2.DataSource = ds.Tables[0].DefaultView;conn.Close();
  1. 对商家表和商品表进行嵌套查询商家信息以及商家总销量的sql语句
string sql = "select 商家账号,店铺名称,店铺地址,联系电话,出售餐点数量 from 商家,(select count(*) as 出售餐点数量 ,发布商家 from 商品 group by 发布商家) as shopdetail where 商家账号 = shopdetail.发布商家 ";
  1. TreeView控件结合多窗体交互代码
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e){switch (this.treeView1.SelectedNode.Text){case "我的商品":myshop f2 = new myshop();f2.TopLevel = false;f2.FormBorderStyle = FormBorderStyle.None;f2.WindowState = FormWindowState.Maximized;panel1.Controls.Add(f2);f2.Show();break;case "发布商品":createShop f6 = new createShop();f6.TopLevel = false;f6.FormBorderStyle = FormBorderStyle.None;f6.WindowState = FormWindowState.Maximized;panel1.Controls.Add(f6);f6.Show();break;case "退出系统":Application.Exit();break;//类似结构继续添加}}

八、存在的问题及改进思路

本综合订餐管理系统提供商家和客户两类用户入口,实现了用户从查看商品到订餐下单、商家从发布商品到查看接单的较为完整的功能流程。系统关系表相互间联系,界面控件与数据库进行联系,以及实现了对用户操作行为进行合法判断检测等。经过思考,目前系统还有一些地方可以进一步优化。

  1. 登陆入口添加系统管理员角色功能,系统管理员可以管理客户表和商家表的相关账号信息,后台管理和统计所有商品以及流水订单信息。
  2. 客户的订单信息如果包含多个商品信息,订单和商品间是一对多联系,则还可以通过建立中间表实现订单数据和商品数据间的数据关联处理。

九、完整项目文件及声明

代码链接:https://github.com/diadestiny/Integrated-order-management-system(觉得有用的可以给个star~)
作者:GUET_diadestiny
声明:欢迎借鉴思路以及功能实现,禁止大篇幅拷贝代码

这篇关于数据库系统原理综合实验课设(超完整详细易上手)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_43723614/article/details/107582094
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/548453

相关文章

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

spring security 超详细使用教程及如何接入springboot、前后端分离

《springsecurity超详细使用教程及如何接入springboot、前后端分离》SpringSecurity是一个强大且可扩展的框架,用于保护Java应用程序,尤其是基于Spring的应用... 目录1、准备工作1.1 引入依赖1.2 用户认证的配置1.3 基本的配置1.4 常用配置2、加密1. 密

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

Spring Boot 集成 Solr 的详细示例

《SpringBoot集成Solr的详细示例》:本文主要介绍SpringBoot集成Solr的详细示例,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录环境准备添加依赖配置 Solr 连接定义实体类编写 Repository 接口创建 Service 与 Controller示例运行

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j