#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "addbook.h"
#include "updatebook.h"
#include "modifypassword.h"
#include "login.h"
#include <QDebug>
#include <QMessageBox>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QAbstractItemView>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::recLoginUser(User *user) {
loginUser = user;
qDebug() << user->username;
ui->login_user_val->setText(loginUser->username);
}
void MainWindow::getAllBooks() {
qDeleteAll(books.begin(), books.end());
books.clear();
QFile file("books.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QByteArray t = file.readAll();
QString alltext = QString(t);
QStringList list = alltext.split("\n");
for (int i=0; i<list.size(); i++) {
QStringList temp = list[i].split("*");
if(temp.size() > 1) {
books.append(new book(temp [0], temp[1], temp[2]));
}
}
file.close();
}
void MainWindow::getSearchBooks(){
getAllBooks();
qDeleteAll(searchBooks.begin(), searchBooks.end());
searchBooks.clear();
QString search_name = ui->bookname->text();
QString search_author = ui->author->text();
for (int i=0; i<books.size(); i++) {
bool f1 = books[i]->bookname.contains(search_name);
bool f2 = books[i]->bookauthor.contains(search_author);
if(f1 && f2) {
searchBooks.append(new book(books[i]->booknumber,
books[i]->bookname,
books[i]->bookauthor));
}
}
}
void MainWindow::initTable(){
getSearchBooks();
qDebug()<<searchBooks.size();
ui->book_tb->setColumnCount(3);
ui->book_tb->setRowCount(searchBooks.size());
ui->book_tb->setSelectionBehavior(QAbstractItemView::SelectRows); //表格选中行为:行选中
ui->book_tb->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->book_tb->setHorizontalHeaderLabels(QStringList()<<"number"<<"bookname"<<"bookauthor");
for(int i = 0;i<searchBooks.size();i++)
{
ui->book_tb->setItem(i,0,new QTableWidgetItem(searchBooks[i]->booknumber)); //注意new
ui->book_tb->setItem(i,1,new QTableWidgetItem(searchBooks[i]->bookname));
ui->book_tb->setItem(i,2,new QTableWidgetItem(searchBooks[i]->bookauthor));
}
ui->book_tb->show();
}
int MainWindow::getSelectRow(){
QList<QTableWidgetSelectionRange> ranges = ui->book_tb->selectedRanges();
int count = ranges.count();
int selectRow = -1; //获取被选中的行号,行号从0开始,若没有则返回-1
for (int i=0; i<count; i++) {
int topRow = ranges.at(i).topRow();
int bottomRow = ranges.at(i).bottomRow();
for (int j=topRow; j<=bottomRow; j++) {
selectRow = j;
}
}
return selectRow;
}
void MainWindow::on_search_btn_clicked()
{
initTable();
}
void MainWindow::on_pushButton_clicked() //添加图书信息
{
QString user = ui->login_user_val->text();
if(QString::compare(user, "admin") == 0) {
addbook a;
a.exec();
}
else {
QMessageBox::warning(NULL, "WARNING", "Sorry,you have no permission to access!");
}
}
void MainWindow::on_pushButton_2_clicked() //删除图书信息
{
QString user = ui->login_user_val->text();
if(QString::compare(user, "admin") == 0) {
int selectRow = getSelectRow();
if(selectRow == -1) {
QMessageBox::about(NULL, "NOTICE", "please select one row!");
}
else {
int flag = QMessageBox::warning(NULL, "WARNING", "Do you want to delete" +
searchBooks[selectRow]->bookname + "?",
QMessageBox::Yes | QMessageBox::No);
if(flag = 16384) {
//点击yes返回值为2的14次方16384
searchBooks.removeAt(selectRow);
QFile file("books.txt");
file.open(QIODevice::ReadWrite | QIODevice::Truncate | QIODevice::Text);
QTextStream out(&file);
for (int i=0; i<searchBooks.size(); i++) {
out << searchBooks.at(i)->booknumber
<< "*" << searchBooks.at(i)->bookname
<< "*" << searchBooks.at(i)->bookauthor
<< endl;
}
QMessageBox::about(NULL, "NOTICE", "succeed to delete!");
file.close();
}
}
}
else {
QMessageBox::warning(NULL, "WARNING", "Sorry,you have no permission to access!");
}
}
void MainWindow::on_pushButton_3_clicked() //修改图书信息
{
/*QString user = ui->login_user_val->text();
if(QString::compare(user, "admin") == 0) {
updateBook a;
a.exec();
}
else {
QMessageBox::warning(NULL, "WARNING", "Sorry,you have no permission to access!");
}*/
}
void MainWindow::on_pushButton_4_clicked() //修改密码
{
modifypassword m;
m.exec();
}
void MainWindow::on_pushButton_5_clicked() //退出系统
{
this->close();
}
- 1
- 2
前往页