C++药房管理系统设计模块代码分析

药房管理系统涉及到药品管理、库存管理、销售管理等多个模块。其中类设计如下(使用C++语言):

  1. 药品管理模块------药品类(Drug)的定义:

```cpp

class Drug {

private:

string name;

int quantity;

double price;

public:

Drug(string n, int q, double p) {

name = n;

quantity = q;

price = p;

}

// Getter and setter methods

string getName() {

return name;

}

int getQuantity() {

return quantity;

}

double getPrice() {

return price;

}

void setQuantity(int q) {

quantity = q;

}

};

```

  1. 药品库存管理模块的示例代码:

```cpp

class Inventory {

private:

vector<Drug> drugs;

public:

void addDrug(Drug drug) {

drugs.push_back(drug);

}

void updateDrugQuantity(string name, int quantity) {

for (int i = 0; i < drugs.size(); i++) {

if (drugs[i].getName() == name) {

drugs[i].setQuantity(quantity);

break;

}

}

}

void displayInventory() {

for (int i = 0; i < drugs.size(); i++) {

cout << "Name: " << drugs[i].getName() << ", Quantity: " << drugs[i].getQuantity() << ", Price: " << drugs[i].getPrice() << endl;

}

}

};

```

  1. 销售管理模块的示例代码:

```cpp

class Sales {

private:

vector<Drug> soldDrugs;

public:

void sellDrug(Drug drug, int quantity) {

if (drug.getQuantity() >= quantity) {

drug.setQuantity(drug.getQuantity() - quantity);

soldDrugs.push_back(drug);

cout << "Drug sold successfully." << endl;

} else {

cout << "Insufficient quantity in stock." << endl;

}

}

void displaySales() {

for (int i = 0; i < soldDrugs.size(); i++) {

cout << "Name: " << soldDrugs[i].getName() << ", Quantity: " << soldDrugs[i].getQuantity() << ", Price: " << soldDrugs[i].getPrice() << endl;

}

}

};

```

4.数据库创建和连接代码:

```cpp

#include <iostream>

#include <mysql/mysql.h>

int main() {

// 创建数据库连接

MYSQL* conn = mysql_init(NULL);

// 连接数据库

if (!mysql_real_connect(conn, "localhost", "root", "password", "pharmacy", 0, NULL, 0)) {

std::cout << "数据库连接失败: " << mysql_error(conn) << std::endl;

return 1;

}

// 创建药品表

std::string createTableQuery = "CREATE TABLE drugs ("

"id INT PRIMARY KEY AUTO_INCREMENT,"

"name VARCHAR(100) NOT NULL,"

"quantity INT NOT NULL,"

"price FLOAT NOT NULL"

")";

if (mysql_query(conn, createTableQuery.c_str())) {

std::cout << "创建药品表失败: " << mysql_error(conn) << std::endl;

return 1;

}

// 关闭数据库连接

mysql_close(conn);

std::cout << "数据库连接已关闭" << std::endl;

return 0;

}

```

上述代码创建一个名为"pharmacy"的数据库,其中包含一个名为"drugs"的药品表。你需要将"localhost"、"root"和"password"替换为你自己的MySQL服务器地址、用户名和密码。

5.用户管理模块代码:

```cpp

#include <iostream>

#include <vector>

using namespace std;

// 用户类

class User {

private:

string username;

string password;

public:

User(string username, string password) {

this->username = username;

this->password = password;

}

string getUsername() {

return username;

}

bool checkPassword(string password) {

return this->password == password;

}

};

// 用户管理类

class UserManager {

private:

vector<User> users;

public:

void addUser(User user) {

users.push_back(user);

}

bool loginUser(string username, string password) {

for (int i = 0; i < users.size(); i++) {

if (users[i].getUsername() == username && users[i].checkPassword(password)) {

return true;

}

}

return false;

}

};

int main() {

UserManager userManager;

// 添加用户

User user1("admin", "admin123");

User user2("guest", "guest123");

userManager.addUser(user1);

userManager.addUser(user2);

// 用户登录

string username, password;

cout << "请输入用户名:";

cin >> username;

cout << "请输入密码:";

cin >> password;

if (userManager.loginUser(username, password)) {

cout << "登录成功!" << endl;

} else {

cout << "登录失败!" << endl;

}

return 0;

}

```

代码中包括了一个User类和一个UserManager类。User类表示用户,包含用户名和密码属性,以及检查密码的方法。UserManager类表示用户管理,包含添加用户和登录验证的方法。

在main函数中,首先创建一个UserManager对象,并添加两个用户。然后通过用户输入的用户名和密码,调用UserManager的loginUser方法进行登录验证,如果登录成功,则输出"登录成功",否则输出"登录失败"。

相关推荐
eqwaak0几秒前
Matplotlib高阶技术全景解析(续):动态交互、三维可视化与性能优化
开发语言·python·语言模型·性能优化·交互·matplotlib
愚润求学4 分钟前
【专题四】前缀和(3)
开发语言·c++·笔记·leetcode·刷题·c++11
hu_yuchen15 分钟前
C++:智能指针
开发语言·c++
类似不类似32 分钟前
快速配置linux远程开发-go语言
开发语言·后端·golang
永进,33 分钟前
C++中的智能指针
开发语言·c++
香蕉可乐荷包蛋1 小时前
Python面试问题
开发语言·python·面试
ErizJ1 小时前
Golang|分布式索引架构
开发语言·分布式·后端·架构·golang
.生产的驴1 小时前
SpringBoot 接口国际化i18n 多语言返回 中英文切换 全球化 语言切换
java·开发语言·spring boot·后端·前端框架
杨筱毅1 小时前
【优秀三方库研读】【性能优化点滴】odygrd/quill 解决伪共享
c++·性能优化·三方库研读
八股文领域大手子2 小时前
深入浅出限流算法(三):追求极致精确的滑动日志
开发语言·数据结构·算法·leetcode·mybatis·哈希算法