C/C++在线餐馆预订管理系统[2023-10-25]_数据结构课程设计c/c++版--美团餐馆预定信息的管理与分析用户注册-程序员宅基地

技术标签: 算法  c++  c语言  信息系统  数据结构  课程设计  

C/C++在线餐馆预订管理系统[2023-10-25]

软件学院实训任务书

一、实训名称

实践环节 数据结构与算法实训
项目名称 在线餐馆预订管理系统

二、学生信息

班级 学号 姓名

三、实训目的

通过在线餐馆预订理系统的设计和开发实践过程,使学生巩固掌握数据结构与算法中的各种数据类型的基本概念、性质及基本算法,熟练应用C语言/Java语言进行抽象建模,并运用相关算法解决实际问题,培养科学思维能力和创新精神。
(1)能够通过文献查阅、进行需求分析,借助算法研讨理解工程问题解决方案的多样性,从现有文献寻求解决实际工程问题的方法。
(2)能够根据项目需求分析,进行模块/子系统设计与实现,并有意识地尝试新方法、新技术。
(3)能够用精练简洁规范的文字、清晰的图表表达自己的设计思想和实现结果,正确绘制图表,分析测试结果,并给出最终结论。
(4)能正确分析算法的时间复杂度和空间复杂度。

四、实训内容

本次实训是设计与实现一个在线餐馆预订管理系统,其主要内容如下:
(1) 需求分析:对系统进行需求分析确定系统的功能需求、非功能需求等。
(2)系统设计:对系统进行设计确定系统的数据管理方式、模块划分等。
(3)系统实现:用C语言或Java语言进行编码实现。
(4)系统测试:对系统进行测试,并根据结果进行分析完善系统。
(5)报告撰写:对分析、设计和实现结果的一个呈现,应包含系统需求分析、系统设计、系统实现、系统测试和实训感想内容。

五、实训功能需求

实现在线餐馆预订管理系统,主要功能需求如下:
系统设置商家和个人用户两个角色,其中,个人用户可对用户本人的个人信息进行管理,并可查询餐馆信息、预订餐馆、获取餐馆的推荐等,商家可对自身的餐馆信息进行管理、处理餐馆预订信息等。
相关数据存储在文本文件中,文件信息说明如表1所示。

源码联系UP主 -> https://space.bilibili.com/329101171

表1 相关数据说明

文件名 文件说明 具体字段信息
user.txt 用户信息 用户账号、密码、联系方式
shop.txt 商家信息 类型、ID、商家名称、密码、评分、人均消费、地址、电话、特色菜、评论
order.txt 用户订餐信息 用户账户、商家名称、预订时间
distance.txt 商家之间的距离 商家1-ID、商家1名称、商家2-ID、商家2名称、距离

user.txt文件内容示例如图1所示。

图1 user.txt文件内容示例
user.txt

shop.txt文件内容如图2所示。
shop.txt

图2 shop.txt文件内容示例
shop.txt

图3 order.txt文件内容示例
order.txt

图4 distance.txt文件内容示例
distance.txt

系统功能包括用户子系统和商家子系统。
1.用户子系统
用户子系统为注册并登录的个人用户提供个人信息管理功能、餐馆查询功能、餐馆预订功能、餐馆推荐功能等。用户进入该子系统时。需要选择注册或登录。注册时,根据用户输入的个人信息,将该用户的信息按照账号升序排列插入到文件user.txt中;登录时根据输入的账号和密码判断该用户是否存在,密码是否正确,登录成功后,进入该子系统。
1)个人信息管理
用户登录后,可通过读写user.txt文件实现对用户个人信息进行管理的功能。
(1)查看个人信息。查找该用户信息,然后将该用户的账号和联系方式显示出来。
(2)修改个人信息。用户可以对自己的个人信息进行修改,包括密码和联系方式,将修改后的信息存储到user.txt文件中。
(3)注销个人信息。用户可以注销当前账号,注销成功后将该用户的个人信息从文件user.txt中删除。
2)餐馆查询
餐馆信息保存在文件shop.txt中,文件中的ID和餐馆名称均是唯一的,由于用户一般是通过名称来查询餐馆,因此将餐馆名称作为查找的关键字,利用哈希表查找算法来实现,若该餐馆存在,则返回餐馆的基本信息,及用户到该餐馆的最短距离。假设用户的地址为郑州轻工业大学,通过读取餐馆之间的距离文件distance.txt,求郑州轻工业大学到该餐馆的最短距离。
3)餐馆预订
一个用户可以预订多家餐馆,一个餐馆也可以被多个用户预订,为了简化处理,所有预订信息均保存在用户订餐信息文件order.txt中,用户可通过读写文件order.txt中的信息,实现个人对预订信息的管理。
(1)查询用户所有预订。查询用户本人的所有预订信息,可能包含多个餐馆的预订。
(2)查询某餐馆的预订。通过输入餐馆名称,查询该用户在该餐馆的预订信息。
(3)添加预订。输入餐馆的名称,如果该餐馆在文件shop.txt中存在,则说明可以进行预订,增加一条新的预订信息存储到文件order.txt的最后;如果餐馆不在文件中,则预订失败。
(4)餐馆推荐。通过字符串匹配算法,借助文件shop.txt中提供的类别,特色菜、评论、评分等信息为用户推荐餐馆。用户选择推荐功能后,依次提示输入餐馆类别、特色菜、餐馆特点,系统将查询到的符合要求的餐馆按评分降序输出。推荐排序尽量采用时间复杂度较低的算法。
2.商家子系统
商家子系统为商家提供餐馆信息管理功能和餐馆预订信息管理功能。商家进入该系统时,需要进行登录。登录时输入商家名称和密码,读取文件shop.txt中的数据,通过哈希表查找判断商家是否存在。登录成功后,进入该子系统。
1)餐馆信息管理
商家登录后,可以通过读写文件shop.txt,采取哈希表对餐馆信息进行管理。
(1)查询餐馆信息。根据登录时的餐馆名称进行哈希查找,显示餐馆自身的相关信息。
(2)修改餐馆信息。商家可以对自身的信息进行修改,根据提示,深入餐馆信息,包括类型、商家名称、密码、人均消费、地址、电话、特色菜等,将更新后的信息存储到shop.txt文件中。
(3)注销餐馆信息。商家可以注销当前账号,注销成功后从文件shop.txt中删除该餐馆信息。
2)餐馆预订信息管理
与个人用户一样,商家可通过读写order.txt文件中的信息,实现对餐馆预订信息进行管理。
(1)查询餐馆所有预订。查询该餐馆的所有预订信息,可能包含多个用户的预订。
(2)查询某用户预订。通过输入用户名称,查询该用户预订的该餐馆信息。
(3)处理预订。商家根据用户预订该餐馆的先后顺序来处理预订,处理后的预订直接删除。通过输入待处理预订的个数n,将目前排在前面的前n条预订该餐馆的信息从order.txt文件中删除。

六、项目开发与实训文档撰写要求

  1. 用C语言/Java语言开发。
  2. 需求分析分组完成。其余任务个人真实地、独立地完成。
  3. 需求分析:根据题目进行需求分析,分析项目的可行性,包括功能分析、技术可行性等。
  4. 系统设计:依据需求分析结果,设计系统方案。分析比较几种可行方案,选择最优方案,完成系统设计。
  5. 系统实现:
    (1)图形用户界面设计:用C语言或Java语言设计系统界面。
    (2)功能实现:根据实际需求对系统进行改进或者进行模拟。
    (3)鼓励需求创新,实现更多功能。
    (4)规范编码:变量名、函数名应规范,语句嵌套采用缩进格式;尽量采用结构化和模块化的程序设计方法;能够清楚注释程序中功能语句块的具体含义。
  6. 系统测试:对系统进行简单测试,并根据结果进行分析完善系统。
  7. 撰写规范的实训报告:应包含软件需求分析;设计思路和整体框架;各功能或者模块实现的思路(或者用带注释的程序代替)并交待模块之间的接口关系;系统设计的结果(可以用一些屏幕拷贝的图来补充说明)。
  8. 设计的系统能够运行,提交源程序、实训日志和实训报告。

七、进度安排

天/日期 任务描述 通过标准
第1天 包括功能需求和非功能需求的分析、定义。 能够通过查阅和利用文献,能够参与讨论,总结系统需求。需求分析文档规范、合理。
构思思路和整体框架;
定义数据结构类型,设计系统框架;
设计被系统调用的main函数;
设计界面函数。 能够根据项目需求分析,提出项目设计方案,完成系统设计、代码设计。
设计方案,设计思路、实验(论证)方法无原则性错误。
第2-4天 根据选择的数据结构,完成系统的基本功能 各子模块调试通过,系统测试没有错误。
系统界面不友好度在可接受范围。
设计算法,完成算法功能并编码实现。
第5天 实训报告包括系统分析、系统设计、系统实现、系统测试和实训感想等。 论述基本完整,条理基本清晰,有一定逻辑性。图、表、文字表述较规范。成果形式基本规范,内容完整。
验收程序、讨论、成果提交。 汇报基本简明扼要,思路不够清晰;关键技术表达准确。
基本问题回答准确,基本概念清楚。

八、考核评价方式

本课程采用“目标+环节+报告”的考核方式,围绕课程目标达成情况,从实训过程、项目代码和实训文档质量等几个方面进行考核,成绩评定依据实训日志成绩(10%)、实训验收成绩(60%)和实训报告成绩(30%)进行核定。最终成绩采用优秀、良好、中等、及格、不及格五级制。

程序效果
程序效果

源码联系UP主 -> https://space.bilibili.com/329101171

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_52963792/article/details/134032041

智能推荐

hive使用适用场景_大数据入门:Hive应用场景-程序员宅基地

文章浏览阅读5.8k次。在大数据的发展当中,大数据技术生态的组件,也在不断地拓展开来,而其中的Hive组件,作为Hadoop的数据仓库工具,可以实现对Hadoop集群当中的大规模数据进行相应的数据处理。今天我们的大数据入门分享,就主要来讲讲,Hive应用场景。关于Hive,首先需要明确的一点就是,Hive并非数据库,Hive所提供的数据存储、查询和分析功能,本质上来说,并非传统数据库所提供的存储、查询、分析功能。Hive..._hive应用场景

zblog采集-织梦全自动采集插件-织梦免费采集插件_zblog 网页采集插件-程序员宅基地

文章浏览阅读496次。Zblog是由Zblog开发团队开发的一款小巧而强大的基于Asp和PHP平台的开源程序,但是插件市场上的Zblog采集插件,没有一款能打的,要么就是没有SEO文章内容处理,要么就是功能单一。很少有适合SEO站长的Zblog采集。人们都知道Zblog采集接口都是对Zblog采集不熟悉的人做的,很多人采取模拟登陆的方法进行发布文章,也有很多人直接操作数据库发布文章,然而这些都或多或少的产生各种问题,发布速度慢、文章内容未经严格过滤,导致安全性问题、不能发Tag、不能自动创建分类等。但是使用Zblog采._zblog 网页采集插件

Flink学习四:提交Flink运行job_flink定时运行job-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏2次。restUI页面提交1.1 添加上传jar包1.2 提交任务job1.3 查看提交的任务2. 命令行提交./flink-1.9.3/bin/flink run -c com.qu.wc.StreamWordCount -p 2 FlinkTutorial-1.0-SNAPSHOT.jar3. 命令行查看正在运行的job./flink-1.9.3/bin/flink list4. 命令行查看所有job./flink-1.9.3/bin/flink list --all._flink定时运行job

STM32-LED闪烁项目总结_嵌入式stm32闪烁led实验总结-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏6次。这个项目是基于STM32的LED闪烁项目,主要目的是让学习者熟悉STM32的基本操作和编程方法。在这个项目中,我们将使用STM32作为控制器,通过对GPIO口的控制实现LED灯的闪烁。这个STM32 LED闪烁的项目是一个非常简单的入门项目,但它可以帮助学习者熟悉STM32的编程方法和GPIO口的使用。在这个项目中,我们通过对GPIO口的控制实现了LED灯的闪烁。LED闪烁是STM32入门课程的基础操作之一,它旨在教学生如何使用STM32开发板控制LED灯的闪烁。_嵌入式stm32闪烁led实验总结

Debezium安装部署和将服务托管到systemctl-程序员宅基地

文章浏览阅读63次。本文介绍了安装和部署Debezium的详细步骤,并演示了如何将Debezium服务托管到systemctl以进行方便的管理。本文将详细介绍如何安装和部署Debezium,并将其服务托管到systemctl。解压缩后,将得到一个名为"debezium"的目录,其中包含Debezium的二进制文件和其他必要的资源。注意替换"ExecStart"中的"/path/to/debezium"为实际的Debezium目录路径。接下来,需要下载Debezium的压缩包,并将其解压到所需的目录。

Android 控制屏幕唤醒常亮或熄灭_android实现拿起手机亮屏-程序员宅基地

文章浏览阅读4.4k次。需求:在诗词曲文项目中,诗词整篇朗读的时候,文章没有读完会因为屏幕熄灭停止朗读。要求:在文章没有朗读完毕之前屏幕常亮,读完以后屏幕常亮关闭;1.权限配置:设置电源管理的权限。

随便推点

目标检测简介-程序员宅基地

文章浏览阅读2.3k次。目标检测简介、评估标准、经典算法_目标检测

记SQL server安装后无法连接127.0.0.1解决方法_sqlserver 127 0 01 无法连接-程序员宅基地

文章浏览阅读6.3k次,点赞4次,收藏9次。实训时需要安装SQL server2008 R所以我上网上找了一个.exe 的安装包链接:https://pan.baidu.com/s/1_FkhB8XJy3Js_rFADhdtmA提取码:ztki注:解压后1.04G安装时Microsoft需下载.NET,更新安装后会自动安装如下:点击第一个傻瓜式安装,唯一注意的是在修改路径的时候如下不可修改:到安装实例的时候就可以修改啦数据..._sqlserver 127 0 01 无法连接

js 获取对象的所有key值,用来遍历_js 遍历对象的key-程序员宅基地

文章浏览阅读7.4k次。1. Object.keys(item); 获取到了key之后就可以遍历的时候直接使用这个进行遍历所有的key跟valuevar infoItem={ name:'xiaowu', age:'18',}//的出来的keys就是[name,age]var keys=Object.keys(infoItem);2. 通常用于以下实力中 <div *ngFor="let item of keys"> <div>{{item}}.._js 遍历对象的key

粒子群算法(PSO)求解路径规划_粒子群算法路径规划-程序员宅基地

文章浏览阅读2.2w次,点赞51次,收藏310次。粒子群算法求解路径规划路径规划问题描述    给定环境信息,如果该环境内有障碍物,寻求起始点到目标点的最短路径, 并且路径不能与障碍物相交,如图 1.1.1 所示。1.2 粒子群算法求解1.2.1 求解思路    粒子群优化算法(PSO),粒子群中的每一个粒子都代表一个问题的可能解, 通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。    在路径规划中,我们将每一条路径规划为一个粒子,每个粒子群群有 n 个粒 子,即有 n 条路径,同时,每个粒子又有 m 个染色体,即中间过渡点的_粒子群算法路径规划

量化评价:稳健的业绩评价指标_rar 海龟-程序员宅基地

文章浏览阅读353次。所谓稳健的评估指标,是指在评估的过程中数据的轻微变化并不会显著的影响一个统计指标。而不稳健的评估指标则相反,在对交易系统进行回测时,参数值的轻微变化会带来不稳健指标的大幅变化。对于不稳健的评估指标,任何对数据有影响的因素都会对测试结果产生过大的影响,这很容易导致数据过拟合。_rar 海龟

IAP在ARM Cortex-M3微控制器实现原理_value line devices connectivity line devices-程序员宅基地

文章浏览阅读607次,点赞2次,收藏7次。–基于STM32F103ZET6的UART通讯实现一、什么是IAP,为什么要IAPIAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录了,如果在设备使用过程中需要进行应用代码的更换、升级等操作的话,则可能需要将设备返回原厂并拆解出来再使用J-Link重新烧录代码,这就增加了很多不必要的麻烦。站在用户的角度来说,就是能让用户自己来更换设备里边的代码程序而厂家这边只需要提供给_value line devices connectivity line devices