项目内容
(1)设计一个学生信息管理系统,学生和老师可以通过这个平台进行信息的管理。
(2)提供用户注册登录功能,用户可使用学号进行注册。
(3)提供用户更改密码,并且提供用户找回密码的功能。
(4)在教师端提供老师修改成绩和宿舍床位的交换。
(5)教师可以在这个平台查询个人的基本信息、录入成绩和班级宿舍的管理;学生可以在这个平台查询课程成绩和选取本学期的课程。
学生端选课中心
void StudentWindow::SelectedCourseRefresh(){
QSqlQuery query(db);
query.exec("select course.cno, cname, tname, time, period, credit, assess, property "
"from course, teacher, sc "
"where sc.cno = course.cno and "
"sc.sno = '" + username + "' and "
"course.tno = teacher.tno"
);
ui->ScoreTable_4->clearContents();
int row = 0;
while(query.next()){
if(ui->ScoreTable_4->rowCount() <= row)ui->ScoreTable_4->insertRow(row);
for(int i = 0; i < ui->ScoreTable_4->columnCount(); i++){
ui->ScoreTable_4->setItem(row, i, new QTableWidgetItem(query.value(i).toString()));
ui->ScoreTable_4->item(row, i)->setTextAlignment(Qt::AlignCenter);
}
row++;
}
}
教师端成绩的录入和修改
void TeacherWindow::init_Score() {
QString cno = ui->Cno->currentText();
QSqlQuery query(db);
query.exec("select student.sno, sname, major, cname, score "
"from student, SC, course "
"where student.sno = SC.sno and course.cno = SC.cno and SC.cno = '" + cno + "'");
QStringList headerlist;
headerlist<<"学号"<<"姓名"<<"专业"<<"课程名"<<"成绩";
ui->ScoreTable->setColumnCount(headerlist.size());
for (int i = 0; i < ui->ScoreTable->columnCount(); ++i){
ui->ScoreTable->setHorizontalHeaderItem(i, new QTableWidgetItem(headerlist[i]));
}
ui->ScoreTable->horizontalHeader()->setStyleSheet("QHeaderView::section{font: Bold 13pt '微软雅黑'}");
ui->ScoreTable->horizontalHeader()->setVisible(true);
int row = 0;
while (query.next()) {
ui->ScoreTable->insertRow(row);
for (int i = 0; i < ui->ScoreTable->columnCount(); ++i) {
ui->ScoreTable->setItem(row, i, new QTableWidgetItem(query.value(i).toString()));
ui->ScoreTable->item(row, i)->setTextAlignment(Qt::AlignCenter);
if (i != 4) ui->ScoreTable->item(0, i)->setFlags(Qt::ItemIsEnabled); // 设置成绩列为可修改
}
row++;
}
}
数据库部分数据的插入
CREATE database studentmanager;
USE studentmanager;
DROP TABLE IF EXISTS student;
CREATE TABLE student (
sno VARCHAR(12) PRIMARY KEY,
sname TEXT,
sex TEXT,
age INT,
major TEXT,
classno VARCHAR(12),
status TEXT,
phonenumber TEXT,
password TEXT NOT NULL,
dormitory TEXT,
bednum INT,
jiangcheng TEXT
);
select * from student;
insert into student values('202210713201','张三','男','20','计科','2022107132','中共党员','18252462866','123456','2-C304','1','数学竞赛省一');
insert into student values('202210713202','李四','男','21','计科','2022107132','共青团员','18252462876','123456','2-C304','2','数学竞赛国一');
insert into student values('202210713203','小美','女','20','计科','2022107132','中共党员','18252462766','123456','2-D301','1','蓝桥杯省一');
insert into student values('202210713204','王五','男','20','计科','2022107132','共青团员','18252462776','123456','2-C304','3','无');
insert into student values('202210713205','阳阳','男','20','计科','2022107132','共青团员','18052462776','123456','2-C304','4','无');
insert into student values('202210713101','小葱','男','20','计科','2022107131','中共党员','18052462866','123456','3-C304','1','数学竞赛省一');
insert into student values('202210713102','小李','男','19','计科','2022107131','共青团员','18052462876','123456','3-C304','2','数学竞赛省二');
insert into student values('202210713103','小芳','女','20','计科','2022107131','中共党员','18052462766','123456','2-D301','2','蓝桥杯省一');
insert into student values('202210713104','刘三','男','20','计科','2022107131','共青团员','18052462776','123456','3-C304','3','无');
insert into student values('202210713105','小徐','男','20','计科','2022107131','共青团员','18152462776','123456','3-C304','4','无');
insert into student values('202210712101','大大','男','20','物联网工程','2022107121','中共党员','11052462866','123456','3-C301','1','数学竞赛省一');
insert into student values('202210712102','小永','男','19','物联网工程','2022107121','共青团员','11052462876','123456','3-C301','2','数学竞赛省二');
insert into student values('202210712103','小乐','女','20','物联网工程','2022107121','中共党员','12052462766','123456','2-D307','2','蓝桥杯省一');
insert into student values('202210712104','小明','男','19','物联网工程','2022107121','共青团员','12052462776','123456','3-C301','3','数学建模国一');
insert into student values('202210712105','小吴','男','20','物联网工程','2022107121','共青团员','12152462776','123456','3-C301','4','数学竞赛省三');
insert into student values('202210712201','大聪','男','20','物联网工程','2022107122','中共党员','13052462866','123456','3-C308','1','数学建模省一');
insert into student values('202210712202','小烨','男','19','物联网工程','2022107122','共青团员','13052462876','123456','3-C308','2','数学竞赛省二');
insert into student values('202210712203','欣欣','女','20','物联网工程','2022107122','中共党员','13052462766','123456','2-D307','1','蓝桥杯省一');
insert into student values('202210712204','小郭','男','19','物联网工程','2022107122','共青团员','13052462776','123456','3-C308','3','数学建模国一');
insert into student values('202210712205','小贾','男','20','物联网工程','2022107122','共青团员','13152462776','123456','3-C308','4','数学竞赛省三');
DROP TABLE IF EXISTS teacher;
CREATE TABLE teacher (
tno VARCHAR(12) PRIMARY KEY,
tname TEXT,
password TEXT
);
INSERT INTO teacher VALUES ('2002110101', '郭小芳', '123456');
INSERT INTO teacher VALUES ('2002110102', '吴刚', '123456');
INSERT INTO teacher VALUES ('2002110201', '朱艳', '123456');
INSERT INTO teacher VALUES ('2002110202', '陈红', '123456');
DROP TABLE IF EXISTS class;
CREATE TABLE class (
classno VARCHAR(12) PRIMARY KEY,
major TEXT,
tno VARCHAR(12)
);
insert into class values('2022107132','物联网工程','2002110101');
insert into class values('2022107131','物联网工程','2002110102');
insert into class values('2022107122','计科','2002110201');
insert into class values('2022107121','计科','2002110202');
DROP TABLE IF EXISTS course;
CREATE TABLE course (
cno VARCHAR(12) PRIMARY KEY,
cname text,
tno VARCHAR(12),
time text,
period int,
credit int,
assess text,
property text
);
insert into course values('19040302a','数据库','2002110101','大三上','72','4','考试','必修');
insert into course values('19040301a','计算机组成原理','2002110102','大三下','72','4','考试','必修');
insert into course values('19040301b','计算机网络','2002110201','大三上','72','4','考试','必修');
insert into course values('19040302b','数据结构','2002110202','大三下','72','4','考试','必修');
DROP TABLE IF EXISTS SC;
CREATE TABLE SC (
sno VARCHAR(12) NOT NULL,
cno VARCHAR(12) NOT NULL,
score INT
);
insert into sc values('202210713201','19040302a','90');
insert into sc values('202210713202','19040302a','99');
insert into sc values('202210713203','19040302a','89');
insert into sc values('202210713204','19040302a','88');
insert into sc values('202210713205','19040302a','95');
insert into sc values('202210713101','19040301a','98');
insert into sc values('202210713102','19040301a','96');
insert into sc values('202210713103','19040301a','78');
insert into sc values('202210713104','19040301a','85');
insert into sc values('202210713105','19040301a','63');
insert into sc values('202210712101','19040301b','83');
insert into sc values('202210712102','19040301b','77');
insert into sc values('202210712103','19040301b','78');
insert into sc values('202210712104','19040301b','72');
insert into sc values('202210712105','19040301b','65');
insert into sc values('202210712201','19040302b','75');
insert into sc values('202210712202','19040302b','96');
insert into sc values('202210712203','19040302b','100');
insert into sc values('202210712204','19040302b','56');
insert into sc values('202210712205','19040302b','62');
alter table sc add primary key(sno, cno);