当前位置: 首页 > news >正文

C++/QT

思维导图

QT设计界面:

C++题目1:自定义字符串类实现:用一个C++程序实现一个简单的自定义字符串类MyString,要求:1支持构造函数,拷贝构造函数,赋值运算符。2、实现基本的字符串操作:长度,拼接,比较,并输出结果。3、实现对MyString对象的输入、输出。4、正确处理内存管理

#include <iostream>
#include <cstring>
#include <stdexcept>
using namespace std;class MyString {
private:char* data;size_t length;public:MyString() : data(new char[1]), length(0){data[0] = '\0';}MyString(const char* str){if (str){length = strlen(str);data = new char[length + 1];strcpy(data, str);}else{length = 0;data = new char[1];data[0] = '\0';}}MyString(const MyString& other) : length(other.length){data = new char[length + 1];strcpy(data, other.data);}~MyString(){delete[] data;}MyString& operator=(const MyString& other){if (this != &other){delete[] data;length = other.length;data = new char[length + 1];strcpy(data, other.data);}return *this;}friend ostream& operator<<(ostream& os, const MyString& str){os << str.data;return os;}friend istream& operator>>(istream& is, MyString& str){char buffer[1024];is >> buffer;str = MyString(buffer);return is;}size_t size() const{return length;}// 字符串拼接MyString operator+(const MyString& other) const{MyString result;result.length = length + other.length;delete[] result.data; // 释放默认构造的空字符串内存result.data = new char[result.length + 1];strcpy(result.data, data);strcat(result.data, other.data);return result;}// 字符串比较bool operator==(const MyString& other) const{return strcmp(data, other.data) == 0;}bool operator!=(const MyString& other) const{return !(*this == other);}bool operator<(const MyString& other) const{return strcmp(data, other.data) < 0;}};int main()
{MyString a, b;cout << "Enter string a: ";cin >> a;cout << "Enter string b: ";cin >> b;cout << "a = " << a << " (Length: " << a.size() << ")\n";cout << "b = " << b << " (Length: " << b.size() << ")\n";MyString c = a + b;cout << "a + b = " << c << " (Length: " << c.size() << ")\n";cout << "a == b? " << (a == b ? "Yes" : "No") << "\n";cout << "a < b?  " << (a < b ? "Yes" : "No") << "\n";return 0;
}

运行结果

题目2:实现一个简单的图书管理系统,要求:1、使用类和对象来管理图书。2、每本图书有书名、作者、和库存数量。3、实现添加图书、借书和还书和查询功能。4、使用STL容器存储图书信息。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;// 图书类
class Book
{
private:string title;     // 书名string author;    // 作者int stock;        // 库存数量public:// 构造函数Book(string t, string a, int s) : title(t), author(a), stock(s) {}// 获取书名string getTitle() const { return title; }// 获取作者string getAuthor() const { return author; }// 获取库存int getStock() const { return stock; }// 借书void borrowBook(){if (stock > 0){stock--;}}// 还书void returnBook(){stock++;}// 显示图书信息void display() const{cout << "书名: " << title<< " | 作者: " << author<< " | 库存: " << stock << endl;}
};// 图书馆管理类
class Library
{
private:vector<Book> books;public:void addBook(string title, string author, int stock){books.emplace_back(title, author, stock);cout << "《" << title << "》添加成功!" << endl;}void borrowBook(string title){auto it = find_if(books.begin(), books.end(),[&](const Book& b) { return b.getTitle() == title; });if (it != books.end()){if (it->getStock() > 0){it->borrowBook();cout << "《" << title << "》借阅成功!" << endl;}else{cout << "库存不足,借书失败!" << endl;}}else{cout << "未找到图书《" << title << "》!" << endl;}}void returnBook(string title){auto it = find_if(books.begin(), books.end(),[&](const Book& b) { return b.getTitle() == title; });if (it != books.end()){it->returnBook();cout << "《" << title << "》归还成功!" << endl;}else{cout << "未找到图书《" << title << "》!" << endl;}}void searchBook(string title){auto it = find_if(books.begin(), books.end(),[&](const Book& b) { return b.getTitle() == title; });if (it != books.end()){cout << "\n查询结果:" << endl;it->display();} else{cout << "未找到图书《" << title << "》!" << endl;}}void displayAll(){if (books.empty()){cout << "图书馆暂无藏书!" << endl;return;}cout << "\n====== 馆藏图书清单 ======" << endl;for (const auto& book : books){book.display();}cout << "==========================" << endl;}
};int main()
{Library lib;int choice;string title, author;int stock;while (true){cout << "\n===== 图书管理系统 =====" << endl;cout << "1. 添加图书" << endl;cout << "2. 借阅图书" << endl;cout << "3. 归还图书" << endl;cout << "4. 查询图书" << endl;cout << "5. 显示所有图书" << endl;cout << "0. 退出系统" << endl;cout << "请选择操作:";cin >> choice;cin.ignore();switch (choice){case 1:  // 添加图书cout << "输入书名:";getline(cin, title);cout << "输入作者:";getline(cin, author);cout << "输入库存数量:";cin >> stock;lib.addBook(title, author, stock);break;case 2:  // 借书cout << "输入要借的书名:";getline(cin, title);lib.borrowBook(title);break;case 3:  // 还书cout << "输入要还的书名:";getline(cin, title);lib.returnBook(title);break;case 4:  // 查询cout << "输入要查询的书名:";getline(cin, title);lib.searchBook(title);break;case 5:  // 显示所有lib.displayAll();break;case 0:  // 退出cout << "系统已退出,感谢使用!" << endl;return 0;default:cout << "无效选择,请重新输入!" << endl;}}return 0;
}


文章转载自:

http://YEYmcIWi.xrtsx.cn
http://orcAPOH0.xrtsx.cn
http://HOclOoLI.xrtsx.cn
http://WI5llDZK.xrtsx.cn
http://gUbeCRY9.xrtsx.cn
http://hqPJwKYE.xrtsx.cn
http://bJpak43E.xrtsx.cn
http://cd9zeGgV.xrtsx.cn
http://qHFlQodm.xrtsx.cn
http://3nOnqxEU.xrtsx.cn
http://CQlPwwux.xrtsx.cn
http://or18dPJ2.xrtsx.cn
http://sZxxedKG.xrtsx.cn
http://BnjhRdhx.xrtsx.cn
http://8YlR2dVL.xrtsx.cn
http://GC5gqzWO.xrtsx.cn
http://x0VWIWEi.xrtsx.cn
http://k35w1GFJ.xrtsx.cn
http://c9PweuJu.xrtsx.cn
http://zaLXMgOr.xrtsx.cn
http://cmEYOYw0.xrtsx.cn
http://hBDVXhL6.xrtsx.cn
http://lf0MubJa.xrtsx.cn
http://1GO4IaW5.xrtsx.cn
http://XB1W5HcF.xrtsx.cn
http://sAaUI2oL.xrtsx.cn
http://5Poq3cDu.xrtsx.cn
http://3n6YEFNe.xrtsx.cn
http://kiGpfiHQ.xrtsx.cn
http://4gtKgnFz.xrtsx.cn
http://www.dtcms.com/a/378499.html

相关文章:

  • GPT 系列论文1-2 两阶段半监督 + zero-shot prompt
  • 昆山精密机械公司8个Solidworks共用一台服务器
  • MasterGo钢笔Pen
  • 【算法--链表】143.重排链表--通俗讲解
  • 数据库的回表
  • 《Learning Langchain》阅读笔记13-Agent(1):Agent Architecture
  • MySQL索引(二):覆盖索引、最左前缀原则与索引下推详解
  • 【WS63】星闪开发资源整理
  • 守住矿山 “生命线”!QB800系列在线绝缘监测在矿用提升机电传系统应用方案
  • Altium Designer(AD)原理图更新PCB后所有器件变绿解决方案
  • DIFY 项目中通过 Makefile 调用 Dockerfile 并使用 sudo make build-web 命令构建 web 镜像的方法和注意事项
  • 联合索引最左前缀原则原理索引下推
  • 平衡车 -- 速度环
  • BPE算法深度解析:从零到一构建语言模型的词元化引擎
  • DIPMARK:一种隐蔽、高效且具备鲁棒性的大语言模型水印技术
  • mysql多表联查
  • 审美积累 | 移动端仪表盘
  • 面阵结构光3D相机三维坐标计算
  • 【大前端++】几大特征
  • 【持续更新】高质量的项目开发过程(C++)(前后端)
  • 淘宝商品视频批量自动化获取的常见渠道分享
  • ABAP 将多层json逐层解析转成内表
  • 一样的糖果
  • linux x86_64中打包qt
  • Windows 10 22H2 64位 【原版+优化版、版本号:19045.6332】
  • 学习日记-CSS-day53-9.11
  • 线程的创建.销毁
  • pg卡死处理
  • 装饰器模式在Spring中的案例
  • 【Springboot】介绍启动类和启动过程