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方法进行登录验证,如果登录成功,则输出"登录成功",否则输出"登录失败"。

相关推荐
legend_jz4 分钟前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
嘿BRE13 分钟前
【C++】几个基本容器的模拟实现(string,vector,list,stack,queue,priority_queue)
c++
tangliang_cn24 分钟前
java入门 自定义springboot starter
java·开发语言·spring boot
程序猿阿伟25 分钟前
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
java·开发语言·前端
新知图书36 分钟前
Rust编程与项目实战-模块std::thread(之一)
开发语言·后端·rust
威威猫的栗子38 分钟前
Python Turtle召唤童年:喜羊羊与灰太狼之懒羊羊绘画
开发语言·python
力透键背38 分钟前
display: none和visibility: hidden的区别
开发语言·前端·javascript
bluefox197939 分钟前
使用 Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别
开发语言·c#
ö Constancy1 小时前
c++ 笔记
开发语言·c++
fengbizhe1 小时前
笔试-笔记2
c++·笔记