书店管理系统(基于MySQL存储)

news2024/11/24 1:30:09

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏:C/C++/Java课程设计100例 优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、设计思路

二、主要功能

2.1 图书管理

2.2 供应商管理

2.3 采购管理

2.4 员工管理

2.5 会员管理

2.6 销售管理

三、功能实现

2.1 图书管理

2.2 供应商管理

2.3 采购管理

2.4 员工管理

2.5 会员管理

2.6 销售管理

四、MySQL 表

4.1 图书表

4.2 供应商表

4.3  采购表

4.4 员工表

4.5 会员表

 4.6 销售表


本篇文章主要对基于 MySQL 存储的书店管理系统进行详细的讲解,包括对设计思路、主要功能、主要功能实现以及 MySQL 存储的表的讲解。

一、设计思路

本文的设计思路如下所示。

主要设计思路

 在上图中,显示主界面后,输入对应的参数进入对应的功能,包括:图书管理、供应商管理、采购管理、员工管理、会员管理、销售管理等,因为具体的小功能比较多,进一步详细的功能未在上图中展示。

主界面如下所示。

主界面

 

二、主要功能

2.1 图书管理

图书管理实现对图书的管理操作,包括:添加图书、更新价格、查询、更新状态、显示所有图书等,界面如下所示。

图1 图书菜单

2.2 供应商管理

供应商管理实现的功能包括:添加、移除和搜索,界面如下所示。

图2 供应商菜单

2.3 采购管理

采购管理实现的功能包括:新建订单、显示所有订单、取消订单、收到的订单等,界面如下所示。

图3 采购菜单

 

2.4 员工管理

员工管理实现的功能包括:新建员工、查询员工、变更为管理者、查看所有员工、更新工资等,界面如下所示。

图4 员工菜单

 

2.5 会员管理

会员管理实现的功能包括:添加会员、查询会员等,界面如下所示。

图5 会员菜单

 

2.6 销售管理

销售管理实现的功能包括:添加新账单、本年度总账单等,界面如下所示。

图6 销售菜单

 

三、功能实现

2.1 图书管理

图书管理实现对图书的管理操作,包括:添加图书、更新价格、查询、更新状态、显示所有图书等,界面如下所示。

其中,添加图书代码如下所示。

//添加图书
void books::add()
{
    //接收输入
	cout << "请输入书名 : " ;
	cin >> name;
	cout << "请输入作者 : ";
	cin >> auth;
	cout << "请输入价格 : ";
	cin >> price;
	cout << "请输入库存数量 : ";
	cin >> qty;

	//插入数据
	stmt.str("");
	stmt << "Insert into books(name,auth,price,qty) values('" << name << "','" << auth << "'," << price << "," << qty << ");";
	query = stmt.str();
	q = query.c_str();
	mysql_query(conn, q);
	res_set = mysql_store_result(conn);
	if (!(res_set))
        cout << endl << endl << "更新图书信息成功" << endl << endl << endl;
    else
        cout << endl << endl << "更新失败!请检查数据库!" << endl << endl << endl;
}

管理员需要输入书名、作者、价格、库存数量,然后组织成 SQL 语句,执行插入操作,最后根据插入返回结果,输出插入是否成功。

其它功能类似添加逻辑,不再详细展开叙述。 

2.2 供应商管理

供应商管理实现的功能包括:添加、移除和搜索,界面如下所示。

供应商管理的子菜单如下所示。

void sup_menu()
{
	int c;
	suppliers s;
	cout << "*************************************************" << endl;
	cout << "                供应商菜单" << endl;
	cout << "*************************************************" << endl;
	cout << "   1. 添加" << endl;
	cout << "   2. 移除" << endl;
	cout << "   3. 搜索" << endl;
	cout << "   4. 返回主菜单" << endl << endl << endl;
	cout << "请输入你的选择 : ";
	cin >> c;
	switch (c)
	{
		case 1:
			s.add_sup();
			break;
		case 2:
			s.remove_supplier();
			break;
		case 3:
			s.search_id();
			break;
		case 4:
			return;
		default:
			cout << "输入错误!" << endl;
			break;
	}
}

通过用户输入来判断执行哪个操作,其中 add_sup 、remove_supplier、search_id 分别对应添加、移除和搜索。 

2.3 采购管理

采购管理实现的功能包括:新建订单、显示所有订单、取消订单、收到的订单等,界面如下所示。

新建订单如下所示。

void purchases::new_ord()
{
	cout << "请输入图书 ID : ";
	cin >> book_id;
	cout << "请输入供应商 ID : ";
	cin >> sup_id;
	cout << "请输入数量 : ";
	cin >> qty;
	cout << "预计交付量(天) : ";
	cin >> eta;
	stmt.str("");
	stmt << "Insert into purchases (book_id,sup_id,qty,dt_ord,eta) values ( " << book_id << "," << sup_id << "," << qty << ",curdate(),Date_add(curdate(), INTERVAL " << eta << " DAY)" << ";";
	query = stmt.str();
	q = query.c_str();
	mysql_query(conn,q);
	cout << "添加订单成功!";
}

管理员需要输入图书 ID、供应商 ID、数量、预计交付量,然后组织为 SQL 语句,执行对应 SQL 语句即可。 

2.4 员工管理

员工管理实现的功能包括:新建员工、查询员工、变更为管理者、查看所有员工、更新工资等,界面如下所示。

将普通员工变更为管理者的代码实现如下所示。

void employees::assign_mgr_stat()
{
	cout << "请输入 ID : ";
	cin >> id ;
	stmt.str("");
	stmt << "Select mgr_stat from employees where id  = " << id << ";";
	query = stmt.str();
	q = query.c_str();
	mysql_query(conn,q);
	res_set = mysql_store_result(conn);
	if ((row = mysql_fetch_row(res_set)) == NULL)
	{
		cout << "员工未发现!!" << endl << endl << endl;
		return;
	}
	else
	{
		mgr_status = (char*) row[0];
		if (mgr_status == "T")
		{
			cout << "你没有管理员权限!!!" << endl << endl ;
			return;
		}
	}
	cout << "请输入授权为管理员的 ID : ";
	cin >> id;
	stmt.str("");
	stmt << "update employees set mgr_stat = 'T' where id = " << id << ";";
	query = stmt.str();
	q = query.c_str();
	mysql_query(conn,q);
	cout << endl << endl << endl;
	cout << "授权管理员成功!";
	cout << endl << endl << endl;
}

首先,需要输入 ID,验证员工是否存在,同时需要具备管理员权限,然后执行 SQL 语句,修改指定员工为管理员。 

2.5 会员管理

会员管理实现的功能包括:添加会员、查询会员等,界面如下所示。

void members::search_mem()
{
	cout << "请输入会员 ID : ";
	cin >> id;
	stmt.str("");
	stmt << "Select * from members where id  = " << id << ";";
	query = stmt.str();
	q = query.c_str();
	mysql_query(conn,q);
	res_set = mysql_store_result(conn);
	if ((row = mysql_fetch_row(res_set)) != NULL)
	{
		cout << "会员详情:" << endl ;
		cout << "姓名 : " << row[1] << endl;
		cout << "地址 : " << endl << row[2] << endl << row[3] << endl << row[4] << endl;
		cout << "国家 : " << row[5] << endl;
		cout << "联系方式 : " << row[6] << endl;
		cout << "开始日期 : " << row[7] << endl;
		cout << "结束日期  : " << row[8] << endl;
		cout << "当前状态 : " << row[9] << endl << endl << endl;
	}
	else
	{
		cout << "没有查询到会员信息!" << endl << endl << endl;
	}
}

输入会员 ID 后查询对应的员工,然后输入员工的详细信息。 

2.6 销售管理

销售管理实现的功能包括:添加新账单、本年度总账单等,销售菜单界面代码实现如下所示。

void sal_menu()
{
	int c;
	sales s;
	cout << "*************************************************" << endl;
	cout << "                 销售菜单" << endl;
	cout << "*************************************************" << endl;
	cout << "   1. 添加新账单" << endl;
	cout << "   2. 本年度总账单" << endl;
	cout << "   3. 返回主菜单" << endl << endl << endl;
	cout << "请输入 : ";
	cin >> c;
	switch (c)
	{
		case 1:
			s.add();
			break;
		case 2:
			s.find_total_sales();
			break;
		case 3:
			return;
		default:
			cout << "输入错误!" << endl;
			break;
	}
}

输入操作对应的数字,执行对应的函数,其中,add 对应添加新账单,find_total_sales 对应本年度总账单。 

四、MySQL 表

4.1 图书表

图书表包括字段如下所示。

int id			// Primary Key
string name
string auth
int price
int qty

4.2 供应商表

供应商表包含的字段如下所示。

int id				//Primary Key
string name
long int phn
string addr_line1
string addr_line2
string addr_city
string addr_state

4.3  采购表

采购表包含的字段如下所示。

int ord_id			//Primary Key
int book_id		    //FK ref (books)
int sup_id			//FK ref (suppliers)
int qty
date dt_ordered
int eta
char received		// Check(T or C or F) def (F)
int inv

4.4 员工表

 员工表包含的字段如下所示。

int id				//Primary Key
string name
string addr_line1
string addr_line2
string addr_city
string addr_state
long int phn
date date_of_joining
long int salary
string mgr_status	//check(T or F) def f

4.5 会员表

会员表包含的字段如下所示。

int id				//Primary Key
string name
string addr_line1
string addr_line2
string addr_city
string addr_state
long int phn
date date_of_joining
long int salary
string mgr_status	//check(T or F) def f

 4.6 销售表

销售表包含的字段如下所示。

int invoice_id		//Primary key
int member_id		//FK ref member(id)
int book_id		//FK ref books(id)
int qty
int amount
date date_s

 

🍓🍓🍓 如果需要源码请订阅专栏C/C++/Java课程设计100例 后联系获取🎉🎉🎉


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对标测评YD云电脑和天翼云电脑公众版

最近听说YD也推出了自研云电脑产品&#xff0c;抱着吃瓜心态网上充值体验了一把YD云电脑&#xff0c;正好我手上有天翼云电脑&#xff0c;凑一对测试看看两家央企在云计算领域的技术实力究竟如何。 测试环境搭建在我的个人pc上&#xff0c;分别下载YD云和天翼云电脑最新Windows…

[思维模式-3]:《如何系统思考》-3- 认识篇 - 什么是系统?系统的特征?

目录 第1章 什么是系统 1.1 万事万物都是一个有机的系统 1.2 系统的科学定义 1.3 系统的构成 1.4 系统的分类 第2章 动态复杂系统的八大特征 2.1 目的性 2.8 边界 2.3 结构影响行为 2.4 总体大于部分之和 2.5 因果互动 2.6 反馈 2.7 动态稳定性&#xff08;动态自…

SAP ABAP 小工具 获取两个日期时间秒数和输出时间转换文本

SAP ABAP 小工具 获取两个日期时间秒数和输出时间转换文本 引言&#xff1a; 小工具 获取两个日期时间秒数和输出时间转换文本&#xff0c;用于加强用户交互直观性。 关键字&#xff1a;SAP ABAP 日期时间间隔 秒数 转换时间文本 文章目录SAP ABAP 小工具 获取两个日期时间秒…

[附源码]Python计算机毕业设计Django吾悦商城管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

计算机毕业设计springboot+vue基本微信小程序的小区防疫监管系统

项目介绍 编写工具用idea 、Maven包,后端数据库是mysql,Java语言,springboot框架。其间,在健康打卡位置和物资选购要调用接口才可实现其功能。 1、研究对象&#xff1a;小区居民普通用户和小区管理员 管理员权限&#xff1a;管理员是整个系统的操作者,系统的各个模块都能进行信…

python中pandas进行数据分析与可视化(3)

1.创建数据源 在前几篇博客中&#xff0c;都是手动创建少量数据充当数据源&#xff0c;这次通过随机生成&#xff0c;让数据量多一些 # 导入所有需要的库 import pandas as pd import numpy.random as np import openpyxl import xlrd import matplotlib.pyplot as plt#创建一…

Python基础 - 本地模块的绝对导入/引用

目录 1. 项目入口文件 2. 绝对导入 Python本地模块的引入是比较简单的&#xff0c;包括绝对引用和相对引用(相对引用的博客参考下一篇Python基础 - 本地模块的相对导入/引用)&#xff0c;个人比较推荐使用绝对引用&#xff0c;会避免掉很多错误&#xff0c;本篇文章主要介绍绝…

【Javassist】快速入门系列01 使用Javassist实现Hello World

系列文章目录 01 使用Javassist实现Hello World 文章目录系列文章目录前言引入Javassist jar包使用Javassist实现Hello World总结说明前言 本篇文章为Javassist入门系列文章&#xff0c;适合了解Java基础语法的人零基础学会使用Javassist实现一个Hello World程序。 引入Javas…

国企招聘: 中国雄安集团2023校园招聘,面向全国,不限户籍

中国雄安集团有限公司2023年校园招聘公告 中国雄安集团有限公司&#xff08;以下简称“中国雄安集团”&#xff09;成立于2017年7月18日&#xff0c;是雄安新区开发建设的主要载体和运作平台。结合雄安新区建设需要&#xff0c;中国雄安集团布局金融与投资、城市发展与城市资源…

高低电平报警器-(模电、数电电子课程设计,毕业设计)Multisim仿真图

目录1 背景与意义1.1 研究背景1.2 研究内容1.3 技术指标2 电路设计2.1 各单元电路设计2.1.1 步进电源电路设计2.1.2 比较电路设计2.1.3 报警电路设计2.2 总体电路设计3 Multisim电路仿真与调试3.1仿真过程3.1.1 步进电源仿真调试3.1.2 总体电路仿真与调试3.2仿真结果分析4 总结…

Java项目:SSM婚纱影楼摄影商城项目网站

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录…

R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

R语言 R语言学习笔记——高级篇&#xff1a;第十四章-主成分分析和因子分析 文章目录R语言前言一、R中的主成分和因子分析二、主成分分析2.1、判断主成分的个数2.2、提取主成分2.3、主成分旋转2.4、获取主成分得分三、探索性因子分析3.1、判断需提取的公共因子数3.2、提取公共…

uboot启动流程

目录 1. 从汇编到C语言 1. 从汇编到C语言 uboot整个程序的入口是 ./arch/arm/lib/vectors.S 的 start 其中&#xff0c;reset 来自于 ./arch/arm/cpu/armv7/start.S&#xff0c; ./arch/arm/cpu/armv7/start.S 程序的执行路径为 reset --> save_boot_params_ret --> cp…

【C语言数据结构(基础版)】第四站:栈和队列

目录 一.栈的表示和实现 1.栈的概念及结构 2.栈的实现 二、栈的实现 1.栈的声明和定义 2.栈的初始化 3.栈的销毁 4.入栈 5.出栈 6.返回栈顶元素 7.返回栈的元素个数 8.栈是否为空 9.测试 三、栈的完整代码 四、队列的表示和实现 1.队列的概念和结构 2.队列的实现…

光环:工业互联网探索及案例——杨宝刚

摘要&#xff1a;文章内容主要来源于光环国际2022年第三届中国科创者大会杨宝刚老师的分享&#xff0c;原分享名称为"工业互联网助力企业数智化转型"。讲述了工业互联网概念及用友锅炉的一个实例运用。业互联网是一个整合平台&#xff0c;把你的需求告诉平台&#xf…

比亚迪携手亚洲足球小姐王霜发布品牌广告:为梦想,一路向前

在世界杯进入半决赛的最后一天——12月15日&#xff0c;比亚迪发布了全新的品牌宣传片《为梦想&#xff0c;一路向前》&#xff1a;携手亚洲足球小姐王霜&#xff0c;通过足球与梦想的故事&#xff0c;向每一位勇敢前行的追梦人致敬。业内几乎所有人都肯定了此次合作&#xff0…

java基于微信小程序的点餐系统-计算机毕业设计

开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;…

JavaEE【Spring】:SpringMVC 程序开发

文章目录一、概念1、MVC 定义2、MVC 和 Spring MVC 的关系3、Spring MVC 和 Spring 的关系二、Spring MVC 创建和连接1、创建 Spring MVC 项目① 对比② 注意2、RequestMapping 注解介绍3、RequestMapping 是 post 还是 get 请求&#xff1f;① GET② POST4、GetMapping 和 Pos…

Transformer16 ~Robotics

还是Transformer相关 ,谷歌机器人团队等提出了 Robotics Transformer 1 (RT-1)。这是一种多任务模型&#xff0c;可以 tokenize 机器人的输入和输出动作&#xff0c;从而在运行时实现高效推理&#xff0c;使实时控制成为可能。 论文 1&#xff1a;RT-1: Robotics Transformer …

最强工程项目进度计划管理系统Oracle Primavera P6软件最新版本 22.12发布啦,新特征介绍

目录 一&#xff1a;前言 二&#xff1a;P6 22.12 新特征&#xff08;EN&#xff09; 三&#xff1a;P6 22.12 新特征&#xff08;CN&#xff09; 一&#xff1a;前言 近日&#xff0c;甲骨文(Oracle)公司发布了最新版本Primavea P6 2022版&#xff0c;最新版本号 22.12 Or…