最近在进行Qt的学习,所以,动手制作了一个成绩管理系统,期间也参照其他博主的界面设计。
这款成绩管理系统的核心也是采用的c++。(因为本人在ui上的造诣不高,所以,这个系统的ui美观性可能不太好)
我们可以先分析我们这个系统的大体结构:(有几个功能我并没去实现它,但是并不影响整体性)
一、首先打开Qt,建立工程文件。我们首先,搭建登录界面设计,就采用Mainwindown这个基类。
(这里不知道怎样建立工程文件以及简单的背景布局的小伙伴 可以看看我之前的博客,可以参照的哦)
这里解释一下,当我们输入账号密码后 ,选择管理员或学生会进入不同的界面。然后,了解系统前面的 ... 可以点击,显示:
二、搭建管理员界面,这里的基类可以任意选择了,MainWindow、Widget...
然后是各个功能的代码实现
成绩管理:
#include "addgrade.h"
#include "ui_addgrade.h"
#include<usersql.h>
#include<QMessageBox>
#include<QDebug>
#include<addmin.h>
Addgrade::Addgrade(QWidget *parent) :
QWidget(parent),
ui(new Ui::Addgrade)
{
ui->setupUi(this);
}
Addgrade::~Addgrade()
{
delete ui;
}
void Addgrade::on_pushButton_gengxincj_clicked()
{
QString addId=ui->Id->text();
QString addname=ui->name->text();
QString addclass=ui->class_2->text();
QString addGs=ui->gaoshu->text();
QString addEg=ui->yingyu->text();
QString addCom=ui->computer->text();
QString addC=ui->C->text();
QSqlQuery query;
query.exec("select Id from grade");
bool isExist=false;
if(addId.isEmpty()||addname.isEmpty()||addclass.isEmpty()||addEg.isEmpty()||addGs.isEmpty()||addCom.isEmpty()||addC.isEmpty())
{
QMessageBox::information(this,"温馨提示","信息未修改!",QMessageBox::Ok);
}
while(query.next())
{
QString id=query.value(0).toString();
if(id.compare(addId)!=0){
QMessageBox::information(this, "警告", "该账号不存在!");
isExist=false;
break;
}
isExist=true;
}
if(!query.next()){
isExist=true;
}
if(isExist){
QString sql=QString("insert into grade(Id,name,class,gaoshu,Eg,Com,Cplus)values('%1','%2','%3','%4','%5','%6','%7')").arg(addId).arg(addname).arg(addclass).arg(addGs).arg(addEg).arg(addCom).arg(addC);
query.exec(sql);
QMessageBox::information(this, "温馨提示", "恭喜,学号:"+addId+"成绩更新成功");
qDebug()<<addId+"成绩更新成功";
this->close();
}
}
void Addgrade::on_pushButton_cannal_clicked()
{
this->close();
Addmin *a=new Addmin;
a->show();
}
修改管理员:
#include "changeadmin.h"
#include "ui_changeadmin.h"
#include<usersql.h>
#include<QMessageBox>
#include<QDebug>
#include<addmin.h>
Changeadmin::Changeadmin(QWidget *parent) :
QWidget(parent),
ui(new Ui::Changeadmin)
{
ui->setupUi(this);
}
Changeadmin::~Changeadmin()
{
delete ui;
}
void Changeadmin::on_pushButton_add_clicked()
{
QString addId=ui->username->text();
QString addPassword=ui->password->text();
if(addId.isEmpty()||addPassword.isEmpty())
{
QMessageBox::information(this,"提示!","输入不能为空!",QMessageBox::Ok);
}
QSqlQuery query;
QString sql=QString("select username from admin");
query.exec(sql);
bool isExist=false;
while(query.next())
{
QString id=query.value(0).toString();
if(id.compare(addId)==0)
{
QMessageBox::information(this, "警告!", "该管理员已存在!");
isExist=false;
break;
}
isExist=true;
}
if(!query.next())
{
isExist=true;
}
if(isExist)
{
QString sql=QString("insert into admin(username,password)values('%1','%2')").arg(addId).arg(addPassword);
query.exec(sql);
QMessageBox::information(this, "温馨提示", "恭喜!管理员:"+addId+"添加成功");
this->close();
}
}
void Changeadmin::on_showadmin_clicked()
{
QSqlQuery query;
QString sql=QString("select username,password from admin");
query.exec(sql);
while(query.next())
{
QString showId=query.value(0).toString();
QString showname=query.value(1).toString();
ui->show->append("管理员:"+showId+" "+"密码:"+showname);
}
}
void Changeadmin::on_pushButton_del_clicked()
{
QString deleteusername=ui->del_username->text();
if(deleteusername=="")
{
QMessageBox::information(this, "警告", "您未输入想要删除的管理员");
return;
};
QSqlQuery query;
query.exec("select username from admin");
bool isExist=false;
while(query.next())
{
QString findusername=query.value(0).toString();
if(findusername.compare(deleteusername)==0){
QString sql=QString("delete from admin where username='%1'").arg(deleteusername);
query.exec(sql);
QMessageBox::information(this, "温馨提示", "恭喜!管理员:"+deleteusername+"删除成功");
isExist=false;
this->close();
Addmin *a=new Addmin;
a->show();
break;
}
isExist=true;
}
if(isExist){
QMessageBox::information(this, "警告", "抱歉!不存该管理员:"+deleteusername);
ui->del_username->setText("");
}
}
void Changeadmin::on_return_2_clicked()
{
this->close();
Addmin *a=new Addmin;
a->show();
}
显示学生信息:
#include "showgrade.h"
#include "ui_showgrade.h"
#include<addmin.h>
#include<QMessageBox>
#include<usersql.h>
Showgrade::Showgrade(QWidget *parent) :
QWidget(parent),
ui(new Ui::Showgrade)
{
ui->setupUi(this);
}
Showgrade::~Showgrade()
{
delete ui;
}
void Showgrade::on_pushButton_Find_clicked()
{
QString findId=ui->Id->text();
QSqlQuery query;
if(!findId.isEmpty())
{
QString sqlById1=QString("select Id,name,class,gaoshu,Eg,Com,Cplus from grade where Id='%1'").arg(findId);
query.exec(sqlById1);
bool Notfond=true;
while (query.next())
{
QString Id1=query.value(0).toString();
QString name1=query.value(1).toString();
QString Class1=query.value(2).toString();
QString gaoshu1=query.value(3).toString();
QString Eg1=query.value(4).toString();
QString Com1=query.value(5).toString();
QString Cplus1=query.value(6).toString();
ui->Id_2->setText(Id1);
ui->name_2->setText(name1);
ui->class_2->setText(Class1);
ui->gaoshu->setText(gaoshu1);
ui->Eg->setText(Eg1);
ui->Com->setText(Com1);
ui->Cplus->setText(Cplus1);
Notfond=false;
}
if(Notfond){
QMessageBox::information(this, "警告", "未找到相关信息");
this->close();
Addmin *a=new Addmin;
a->show();
}
}
else {
QString findname=ui->name->text();
QString sqlByName1=QString("select Id,name,class,gaoshu,Eg,Com,Cplus from grade where name='%2'").arg(findname);
query.exec(sqlByName1);
bool Notfond=true;
while (query.next())
{
QString Id1=query.value(0).toString();
QString name1=query.value(1).toString();
QString Class1=query.value(2).toString();
QString gaoshu1=query.value(3).toString();
QString Eg1=query.value(4).toString();
QString Com1=query.value(5).toString();
QString Cplus1=query.value(6).toString();
ui->Id_2->setText(Id1);
ui->name_2->setText(name1);
ui->class_2->setText(Class1);
ui->gaoshu->setText(gaoshu1);
ui->Eg->setText(Eg1);
ui->Com->setText(Com1);
ui->Cplus->setText(Cplus1);
Notfond=false;
Notfond=false;
}
if(Notfond)
{
QMessageBox::information(this, "警告", "未找到相关信息");
this->close();
Addmin *a=new Addmin;
a->show();
}
}
}
void Showgrade::on_pushButton_return_clicked()
{
QString updateId=ui->Id->text();
QString updatename=ui->name->text();
QString updateclass=ui->class_2->text();
QString updateGs=ui->gaoshu->text();
QString updateEg=ui->Eg->text();
QString updateCom=ui->Com->text();
QString updateC=ui->Cplus->text();
QSqlQuery query;
QString sql=QString("update grade set Id='%1',name='%2',class='%3',gaoshu='%4',Eg='%5',Com='%6',Cplus='%7'").arg(updateId).arg( updatename).arg( updateclass).arg( updateGs).arg( updateEg).arg( updateCom).arg( updateC);
query.exec(sql);
QMessageBox::information(this, "温馨提示", "恭喜!信息修改成功!");
this->close();
Addmin *a=new Addmin;
a->show();
}
void Showgrade::on_pushButton_return_2_clicked()
{
this->close();
Addmin *a=new Addmin;
a->show();
}
退出系统:
void Addmin::on_quit_clicked()
{
this->close();
}
Ok,我们现在可以搭建数据库了:(这里提醒,Qt的数据不会连接,可以查看我之前的博客)
这是我的数据库名称:
数据库里的表
然后,我们实现登录的实现:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QMessageBox>
#include<usersql.h>
#include<QDebug>
#include<addmin.h>
#include<stu.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Usersql usersql;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_toolButton_clicked()
{
QMessageBox::information(this,"温馨提示!","登陆账号为学号,密码为手机号",QMessageBox::Ok);
}
void MainWindow::on_pushButton_login_clicked()
{
QString username=ui->username->text();
QString password=ui->password->text();
if( ui->radioButton_addmin->isChecked())
{
QSqlQuery query;
query.exec("select username,password from admin");
bool temp=false;
while(query.next())
{
QString Username=query.value(0).toString();
QString Password=query.value(1).toString();
if(username.compare(Username)==0&&password.compare(Password)==0)
{
temp=true;
//loginer=username;
this->hide();
Addmin *a=new Addmin();
a->show();
}
}
if(temp==false)
{
QMessageBox::information(this,"提示!","输入账户或密码有错!",QMessageBox::Ok);
}
}
if(ui->radioButton_stu->isChecked())
{
QSqlQuery query;
query.exec("select username,password from stu");
bool temp=false;
while(query.next())
{
QString Username=query.value(0).toString();
QString Password=query.value(1).toString();
if(username.compare(Username)==0&&password.compare(Password)==0)
{
temp=true;
this->hide();
Stu *s=new Stu;
s->show();
}
}
}
}
由于篇幅的原因,其他的代码片段就不展示了,我将我们的项目打包,大家可以参照的哦。https://download.csdn.net/download/m0_59711726/84348565