qt实现汽车销售管理系统(一)-- 登录界面的实现
实现思路
运行程序–>登录界面–>验证用户名和密码–>进入主界面
数据库设计
数据库的实现
创建一个cardb数据库,并使用该数据库
create database cardb;
use cardb;
创建用户表(user),并往里面插入数据
create table user(
id int NOT NULL AUTO_INCREMENT primary key,
user varchar(20),
pwd varchar(20)
);
insert into user(user,pwd) values('tom','tom');
insert into user(user,pwd) values('djx','djx');
insert into user(user,pwd) values('xiu','xiu');
创建厂商表(factory),并插入数据
create table factory(id int not null auto_increment primary key,
name varchar(255)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into factory(name) values('大众');
insert into factory(name) values('华晨宝马');
insert into factory(name) values('东风日产');
insert into factory(name) values('林肯');
创建品牌表(brand),并插入数据
create table brand(id int not null auto_increment primary key,
name varchar(255),fname varchar(255),
color varchar(255),price int not null,
sum int not null,sell int not null,
last int not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into brand(name,fname,color,price,sum,sell,last) values('甲壳虫','大众','白色',20,520,250,270);
insert into brand(name,fname,color,price,sum,sell,last) values('奥迪A6','大众','金色',20,520,250,270);
insert into brand(name,fname,color,price,sum,sell,last) values('宝马X3','华晨宝马','白色',35,520,250,270);
insert into brand(name,fname,color,price,sum,sell,last) values('宝马X4','华晨宝马',' 金色,35,520,250,270);
insert into brand(name,fname,color,price,sum,sell,last) values('贵士','东风日产','金色',20,520,250,270);
insert into brand(name,fname,color,price,sum,sell,last) values('林肯MKC','林肯','白色',36,520,250,270);
登录界面的实现
登录界面如下所示:
- 链接数据库
bool login::connectDB(){
m_db = QSqlDatabase::addDatabase("QMYSQL");
//设置链接数据库的主机名,数据库名,用户名和密码
m_db.setHostName("127.0.0.1");
m_db.setDatabaseName("cardb");
m_db.setUserName("djx");
m_db.setPassword("111");
if(m_db.open() == false){
QMessageBox::critical(this,"ERROR","链接数据库失败");
return false;
}
return true;
}
- 登录按钮槽函数的实现
void login::on_ulogin_clicked()
{
/*
1.从编辑框中获取用户输入的用户名和密码
2.检测用户名和密码是否为空
3.利用select pwd form user where user = (用户输入的用户名)来查询用户的密码
4.如果密码正确,则将用户名和密码写入到配置文件中
*/
name = ui->name->text();
pwd = ui->pwd->text();
if(name.isEmpty()){
QMessageBox::warning(this,"WARNING","用户名不能为空");
return;
}
if(name.isEmpty()){
QMessageBox::warning(this,"WARNING","密码不能为空");
return;
}
bool flag = false;
QSqlQuery query;
QString sql = QString("select pwd from user where user = '%1'").arg(name);
query.exec(sql);
while(query.next()){
if(pwd == query.value(0).toString()){
flag = true;
break;
}
}
if(flag){
WriteInit("username",name);
WriteInit("password",pwd);
QDialog::accept();
}else {
QMessageBox::critical(this,"ERROR","用户名或密码错误");
return;
}
}
- 写配置文件的函数
//将用户名和密码写入到配置文件中
void login::WriteInit(QString key, QString value){
QString path="login.ini";
QSettings *config = new QSettings(path,QSettings::IniFormat);
QVariant variant;
variant.setValue(value);
//将信息写入到配置文件中
config->beginGroup("config");
config->setValue(key,variant);
config->endGroup();
delete config;
}
- 退出按钮的槽函数
void login::on_quit_clicked()
{
QDialog::reject();
}
- 在main函数中判断,如果登录成功,显示主页面。如果是关闭,则终止程序
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
login l;
if(l.exec() == QDialog::Accepted){
MainWindow w;
w.show();
return a.exec();
}else {
return 0;
}
}
- 在主界面函数中读配置文件(读出登录时候写入配置文件的用户名和密码)
void MainWindow::ReadInit(QString key, QString &value){
value.clear();
QString path = "login.ini";
QSettings *config = new QSettings(path,QSettings::IniFormat);
//读取配置信息
QVariant variant = config->value(QString("config/")+key);
value=variant.value<QString>();
delete config;
}
//从配置文件中读取用户名和密码
void MainWindow::loadcfg(){
ReadInit("username",username);
ReadInit("password",passwd);
qDebug() << username << passwd;
}