数据库课设——简单的图书管理系统

  • 前言
  • 实验环境
  • 实验设计
  • 功能设计
  • 表格设计
  • 大致思路
    • 与数据库的连接(网上一般有教程,简单放一段代码)
    • 从一个界面跳转到另一个界面(父界面到子界面 和 子界面到父界面)
    • sql语句
    • connect 妙用
    • 一些小的点
    • 一些经验
  • 结语

前言

第一次写博客,也不知道该写点啥,正好要做一个数据库作业,就简单地记录一下我做作业的吧!因为时间比较紧促,就做了一个阉割版的图书管理,将就着看吧!
附github源代码:图书管理系统

实验环境

qt creator 4.8.1 、sql server

实验设计

两个实体(学生实体、图书实体),三张表(学生表、图书表、借阅关系表)
大致关系如下图所示:
Student(stu_id,stu_name,sex,enrollment_date,telephone,password)
Book(book_id,book_name,author,press,type,book_num,borrow_num)
Borrow(stu_id,book_id,borrow_date,return_data,condition)

功能设计

表格设计

Student表

Book表

Borrow表

大致思路

与数据库的连接(网上一般有教程,简单放一段代码)

bool OpenDatabase()
{/* 连接数据库 */QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); QString dsn = QString::fromLocal8Bit("user_name");  //user_name是自己设置的,根据具体情况填写db.setHostName("127.0.0.1");db.setDatabaseName(dsn);db.setUserName("sa");  //数据库的用户db.setPassword("123456");  //数据库密码if(!db.open()){qDebug()<<db.lastError().text();return false;}else{qDebug()<<"open success!";return true;}
}

从一个界面跳转到另一个界面(父界面到子界面 和 子界面到父界面)

//Widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include "son_dialog.h"namespace Ui {class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();void reshow(); //实现子界面到父界面private:Ui::Widget *ui;son_dialog *s;
};#endif // WIDGET_H
//Widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);s = new son_dialog;connect(s,SIGNAL(retsignal()),this,SLOT(reshow()));
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{this->hide(); //隐藏该界面s->setWindowTitle("title");//设置窗口名称s->show(); //显示下一界面
}void Widget::reshow()
{this->show();
}
//son_dialog.h
#ifndef SON_DIALOG_H
#define SON_DIALOG_H#include <QDialog>namespace Ui {class son_dialog;
}class son_dialog : public QDialog
{Q_OBJECTpublic:explicit son_dialog(QWidget *parent = nullptr);~son_dialog();private:Ui::son_dialog *ui;signals:void retsignal();
private slots:void on_pushButton_clicked();
};#endif // SON_DIALOG_H
//son_dialog.c
#include "son_dialog.h"
#include "ui_son_dialog.h"son_dialog::son_dialog(QWidget *parent) :QDialog(parent),ui(new Ui::son_dialog)
{ui->setupUi(this);
}son_dialog::~son_dialog()
{delete ui;
}void son_dialog::on_pushButton_clicked()
{this->hide();emit retsignal(); //发送信号
}

sql语句

//查询语句
void student::on_view_book_clicked()
{QSqlQueryModel *model = new QSqlQueryModel();QString sql;sql = "select * from Book";model->setQuery(sql);ui->book_view->setModel(model);QString book_id = model->record(0).value("book_id").toString(); //想要得到查询出来的值
}//增加语句、更新语句(删除类似)
void student::on_insert_clicked()
{QSqlQueryModel *model = new QSqlQueryModel;QString sql1,sql2;QString condition = "1";sql1 ="insert into Borrow values ('"+user_id+"','"+book+"','"+condition+"','"+current_date+"',NULL)";//user_id等等变量属于自己从各钟途径获得的,属于QString变量model->setQuery(sql1);sql2 = "update Book set book_num=book_num-1,borrow_num=borrow_num+1 where book_id = '"+book+"' ";model->setQuery(sql2);
}

connect 妙用

// 当文本框内容改变时,就会给你传递信号,查询时配上like语句,动态输出你想要的东西,超好用的
connect(ui->find,SIGNAL(textChanged(QString)),this,SLOT(find()));void student::find()
{QSqlQueryModel *model = new QSqlQueryModel();QString find,sql,way;way = ui->comboBox->currentText();find = ui->find->text();if(way == "书名") sql = "select book_id,book_name,author,press,book_type,book_num from Book where book_name LIKE '%"+find+"%'";else if(way == "种类") sql = "select book_id,book_name,author,press,book_type,book_num from Book where book_type LIKE '%"+find+"%'";else sql = sql = "select book_id,book_name,author,press,book_type,book_num from Book where author LIKE '%"+find+"%'";model->setQuery(sql);ui->book_view->setModel(model);
}

一些小的点

ui->label->text(); //获取label信息
ui->label->setText(content); //向label写信息
//大量显示数据可以用tableview
//以后想起什么了再说吧
//...

一些经验

1.当你觉得你做的对但系统总是给你报错时,就qmake一下,或者构建。(不要问我怎么知道的)
2.sql语句不确定的话,可以先在数据库里面试验一下,再移植到代码中。

结语

也不知道说了些啥,就把我做课设时遇到的一些重要的点写了一下,有问题的话,还望指正,也欢迎交流。
补充一句,数据库课设挺好做的,基本上就是界面的问题了,sql语句执行起来挺方便的,所以,这个完全能自己写完,我大概花了一星期,期间有过划水,所以,不要觉得很困难,就这样。

数据库课设——简单的图书管理系统相关推荐

  1. 数据库课设(足球联赛管理系统)

    一:前言 如果有关注博主的粉丝,可能会发现贴心杰又缺更好几天了,但是我是宠粉杰啊,怎么可能会忘了我的宝贝粉丝呢,只不过是临近期末,各种大作业课设如期而至,这几天我在写数据库课设,对于一个没有写过任何项 ...

  2. 【数据库课设】学生成绩管理系统 (JAVA+ swing + JDBC)

    正道的光 源代码资源获取!!!!! 百度网盘: https://pan.baidu.com/s/1fQab5mOfpZ14rv7yhT_TAQ 提取码:0307 Github: https://git ...

  3. 超超超超超详细的数据库课设报告-学生公寓管理系统

    学生公寓管理系统 摘要: 随着社会的发展以及教育水平的提高,当今在校生数量越来越多.与此同时,目前还有一些学校还在使用手工的方式对学生的住宿信息进行管理,手工记录对于规模小的学校来说还可以勉强接受,但 ...

  4. 【数据库课设】图书馆资源管理系统 源码+流程图+结构设计(借还图书 逾期罚款 图书管理 读者管理 信息查询)python实现

    文章目录 一 实现功能 (1)管理员功能 (2)读者功能 二 数据流图 三 概念结构设计 四 文件目录 五 源码:main.py 六 运行截图 一 实现功能 (1)管理员功能 一个管理员编号对应一个密 ...

  5. 数据库课设——汽车信息租赁管理系统

    目录 课程设计目的   时间及任务安排 基本要求      系统实现     功能需求     系统分析与设计 数据库设计    运行结果截图   开发环境        个人总结        此处 ...

  6. 数据库课设之学生成绩管理系统

    系统设计的内容 本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化.规范化和自动化,其主要任务是用计算机对学生信息进行日常管理,如查询.修改.增加.删除,另外还考虑到用户登录的权限,针 ...

  7. 数据库课设作业《公寓管理系统》

    <数据库原理与应用> 课程设计报告 设计题目:乌鸦中学(高中部)公寓管理数据库系统设计 公寓管理数据库系统设计(小二号宋体加粗) 一.数据库需求分析(4号黑体) 1.调查对象基本情况说明 ...

  8. JAVA+MySQL 数据库课设的问题及解答的整理 以【学生管理系统】为例

    JAVA+MySQL 数据库课设的问题及解答的整理 以[学生管理系统]为例.帅气学长哦! 编写这篇博文初衷 MySQL的一些问题 Eclipse导入项目的一些问题 数据库的建立和连接 最后一步 编写这 ...

  9. php+mysql实现简单的图书管理系统(简单的数据库操作)

    php+mysql实现简单的图书管理系统 ps:前端页面设计得有点丑,将就着用,哈哈哈.不具备用户和管理员功能,如要实现只需将首页的功能根据数据库中账号信息选择性使用就可以了.数据库关系设计什么的完全 ...

  10. 数据库课设:java实现的本地电脑专卖店管理系统

    概述:本文是一篇介绍数据库课设文件的文章,文件包括前期的数据库准备和软件的具体实现. 课设全套文件下载地址:https://download.csdn.net/download/Koweico/125 ...

最新文章

  1. How UI5 and FIORI deliver central Javacript library code MIME
  2. 提交时是使用防抖还是节流_使用BlockingExecutor进行节流任务提交
  3. 使用vue+webpack从零搭建项目
  4. LeetCode 419. 甲板上的战舰
  5. 2020年2月数据库流行度排行:冬日虽然寒冷,春光必定灿烂
  6. Tomcat错误解决
  7. 小型论坛php,PHP练手:一个小型论坛(带后台)_PHP教程
  8. 谷歌用AI诊断早期肺癌超越人类医生,登上Nature子刊
  9. 控件readonly之后的取值
  10. 常见危险函数及特殊函数(一)
  11. centos服务器安装docker步骤
  12. 2020-10-20 Java基础_定义和语法
  13. 互联网15年风云变幻:改变世界的15个网站
  14. 网络打不其他计算机的共享文件,快速解决“电脑无法访问共享文件夹”的4种方法!...
  15. 四面体体积公式 hdu 1411
  16. 创建自己的WordPress主题的三种方法
  17. 2021 Hexo+Next7最全搭建个人网站(合集)
  18. Ubuntu 商店无法安装应用
  19. 全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门AI智能问答应用场景——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
  20. NOIP 2018 提高组初赛试题 题目+答案+简要解析

热门文章

  1. c语言链表学生考勤,(完整word版)学生考勤管理系统
  2. 机原自检——第7章 机械的运转及其速度波动的调节
  3. 8个顶级云安全解决方案
  4. 安装Adobe Reader 时报错:HRESULT:0x80070422
  5. minitab怎么算西格玛水平_计算西格玛水平.ppt
  6. 金士顿u盘写保护修复教程
  7. python唯美壁纸_Python爬虫教程-爬取5K分辨率超清唯美壁纸源码
  8. MeasureSpec的简单说明
  9. 高可靠性——TSN (Time Sensitive Network 时间敏感网络) 802.1Qci 协议介绍
  10. drawRGB在N7370上的问题