简易教务系统的Qt+sqlite实现(1)

第一篇博文,先介绍一下这个数据库实现之后的样子,为后续的说明作参考

!!!我回来了!!!

我直接传百度网盘了呜呜呜~感觉太久没上这里回复了

链接: https://pan.baidu.com/s/1jVWg5QlrFkMXXnNeUesDNQ  密码: uid9

用户注册:

框内输入用户名和密码,按Register即可注册(数据库后台记录下用户名和密码保存到用户表中)再按一次Login(数据库验证通过)即可登录;复选框可以选择用户类型,学生类和老师类

比如先注册一个教师帐号

登录教师帐号进入教师操作页面

在框中依次输入教师用户名,申请开课的课程号,课程名,上课时间,上课教室名称

点击classroom按钮,确认该上课时间该教室是否有空

有空教室,点击Certificate录入课程

换一个教师帐号,按照上面的方法再开一门课,只不过在同一时间,不同教室,为后续做准备

如果同一时间,同一地点另外一个老师选同一个教室,系统提示没有空教室

按照类似方法注册并登录学生帐号,进入学生界面选课

如果选刚才有意录入的一门冲突的课

而且也不能选了

把刚才第一门课退掉

现在可以成功选上

选未注册的课会报错

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
图书管理系统是一个常见的应用场景,Qt+SQLite是一种较为常见的实现方式。下面我简单介绍一下Qt+SQLite实现图书管理系统的原理架构以及代码实现。 ## 原理架构 Qt是一个跨平台的GUI应用程序开发框架,可以方便地进行界面设计和事件处理。而SQLite是一种轻量级的关系型数据库,它的特点是占用资源少、易于部署和使用。将两者结合起来,就可以实现一个轻量级的图书管理系统。 具体的实现过程如下: 1. 设计数据库表结构,包括书籍信息表、借阅信息表等。 2. 使用Qt提供的SQL API连接SQLite数据库,创建数据库表和索引等。 3. 编写界面代码,设计图书添加、删除、修改、查询等功能的界面。 4. 在界面代码中调用SQL API,实现数据库的增删改查操作。 5. 编写业务逻辑代码,实现借阅、归还等功能。 ## 代码实现 下面是一个简单的图书管理系统的实现代码,包括数据库的创建和表结构的定义、界面设计和业务逻辑的实现。 ### 数据库的创建和表结构的定义 ```cpp #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug> // 创建数据库连接 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("library.db"); // 打开数据库 if (!db.open()) { qDebug() << "Open database failed."; return; } // 创建书籍信息表 QSqlQuery query(db); query.exec("CREATE TABLE books (" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "name TEXT, " "author TEXT, " "publisher TEXT, " "isbn TEXT UNIQUE, " "count INTEGER)"); // 创建借阅信息表 query.exec("CREATE TABLE borrow (" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "book_id INTEGER, " "borrower TEXT, " "borrow_date TEXT, " "return_date TEXT, " "FOREIGN KEY(book_id) REFERENCES books(id))"); ``` ### 界面设计 使用Qt提供的界面设计工具,可以轻松地设计出图书管理系统的各个界面,包括添加、删除、修改、查询等功能。 ### 业务逻辑实现 ```cpp // 添加一本书籍 void addBook(const QString& name, const QString& author, const QString& publisher, const QString& isbn, int count) { QSqlQuery query(db); query.prepare("INSERT INTO books (name, author, publisher, isbn, count) " "VALUES (:name, :author, :publisher, :isbn, :count)"); query.bindValue(":name", name); query.bindValue(":author", author); query.bindValue(":publisher", publisher); query.bindValue(":isbn", isbn); query.bindValue(":count", count); query.exec(); } // 借阅一本书籍 void borrowBook(int bookId, const QString& borrower, const QString& borrowDate, const QString& returnDate) { QSqlQuery query(db); query.prepare("INSERT INTO borrow (book_id, borrower, borrow_date, return_date) " "VALUES (:bookId, :borrower, :borrowDate, :returnDate)"); query.bindValue(":bookId", bookId); query.bindValue(":borrower", borrower); query.bindValue(":borrowDate", borrowDate); query.bindValue(":returnDate", returnDate); query.exec(); // 减少书籍数量 query.prepare("UPDATE books SET count = count - 1 WHERE id = :id"); query.bindValue(":id", bookId); query.exec(); } // 查询所有书籍 QSqlQueryModel* queryAllBooks() { QSqlQueryModel* model = new QSqlQueryModel(); model->setQuery("SELECT * FROM books"); return model; } // 查询借阅信息 QSqlQueryModel* queryBorrowInfo(int bookId) { QSqlQueryModel* model = new QSqlQueryModel(); model->setQuery(QString("SELECT * FROM borrow WHERE book_id = %1").arg(bookId)); return model; } ``` 这样,一个简单的图书管理系统就实现了。当然,实际应用中还需要进行一些优化和完善,例如加入用户登录、权限管理、数据备份等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值