Skip to content

Commit

Permalink
实现教师界面大创项目管理功能;完善重置数据库功能;修复登陆界面进度条问题
Browse files Browse the repository at this point in the history
  • Loading branch information
shiyu-coder committed Dec 26, 2020
1 parent 881c0ff commit c3eaa55
Show file tree
Hide file tree
Showing 12 changed files with 374 additions and 15 deletions.
3 changes: 3 additions & 0 deletions SIM_System.pro
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ SOURCES += \
modifylessonwidget.cpp \
modifystuwidget.cpp \
modifyteacherwidget.cpp \
promsgwidget.cpp \
scholarmsgwidget.cpp \
student.cpp \
studentwindow.cpp \
Expand Down Expand Up @@ -74,6 +75,7 @@ HEADERS += \
modifylessonwidget.h \
modifystuwidget.h \
modifyteacherwidget.h \
promsgwidget.h \
scholarmsgwidget.h \
student.h \
studentwindow.h \
Expand Down Expand Up @@ -102,6 +104,7 @@ FORMS += \
modifylessonwidget.ui \
modifystuwidget.ui \
modifyteacherwidget.ui \
promsgwidget.ui \
scholarmsgwidget.ui \
studentwindow.ui \
teacherwindow.ui \
Expand Down
2 changes: 1 addition & 1 deletion SIM_System.pro.user
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.0, 2020-12-26T17:34:57. -->
<!-- Written by QtCreator 4.11.0, 2020-12-26T21:05:17. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
Expand Down
2 changes: 1 addition & 1 deletion addteacherwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ void AddTeacherWidget::on_ConfirmButton_clicked()
sqls<<"GRANT SELECT ON Teacher TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ScholarAppli TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ScholarLst TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ProjectAppli TO T"+tno+"";
sqls<<"GRANT SELECT,UPDATE,INSERT,DELETE ON ProjectAppli TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ProjectLst TO T"+tno+"";
sqls<<"GRANT SELECT ON Student TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT ON T2A TO T"+tno+"";
Expand Down
25 changes: 24 additions & 1 deletion adminwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,32 @@ void AdminWindow::on_actionDeptManagement_triggered()

void AdminWindow::on_actionDatabaseRenew_triggered()
{
QSqlQuery query;
QSqlQuery query,query1,query2,query3;
query1.exec("Select name From SysUsers");
if(query1.lastError().type()==QSqlError::NoError){
QStringList list;
while(query1.next()){
list<<query1.value(0).toString();
}
QSqlQuery q;
for(int i=0;i<list.size();i++){
if(list.at(i).size()>=2){
if(list.at(i).at(0)=='S'||list.at(i).at(0)=='T'){
if(list.at(i).at(1)>='0' && list.at(i).at(1)<='9'){
q.exec("EXEC sp_droplogin '"+list.at(i)+"'"+" EXEC sp_dropuser '"+list.at(i)+"'");
if(q.lastError().type()!=QSqlError::NoError) qDebug()<<q.lastError().text();
}
}
}
}
}
query.exec("drop table S2A;drop table T2A;drop table Systbl;drop table ScholarAppli;drop table ScholarLst;drop table ProjectAppli;drop table ProjectLst;drop table CTime;drop table Tcourse;drop table Teacher;drop table Stu_Cour;drop table CourseBasic;drop table Student;drop table Dept");
query2.exec("select identity(int,1,1) flag,[name] names into #tmp from sysobjects where crdate>'2020-12-18' declare @tb varchar(1000) ,@a int,@b int,@sql varchar(8000) select @a=min(flag),@b=max(flag) from #tmp while @a<=@b begin select @tb=names from #tmp where flag=@a set @sql='drop view '+@tb exec(@sql) set @a=@a+1 end DROP TABLE #tmp select * from sysobjects where crdate>'2020-12-18'");
query3.exec("select identity(int,1,1) flag,[name] names into #tmp from sysobjects where crdate>'2020-12-18' declare @tb varchar(1000) ,@a int,@b int,@sql varchar(8000) select @a=min(flag),@b=max(flag) from #tmp while @a<=@b begin select @tb=names from #tmp where flag=@a set @sql='drop user '+@tb exec(@sql) set @a=@a+1 end DROP TABLE #tmp select * from sysobjects where crdate>'2020-12-18'");

if(query.lastError().type()==QSqlError::NoError){


QMessageBox::information(this,"数据库重置","数据库重置成功!");
}else{
QMessageBox::warning(this,"错误",query.lastError().text());
Expand Down
2 changes: 1 addition & 1 deletion dataquery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ QString DataQuery::init(){
sqls<<"CREATE TRIGGER Update_sholar_status ON ScholarAppli AFTER UPDATE AS DECLARE @newRes char(1),@oldRes char(1),@money SMALLINT, @sno varchar(10) SELECT @newRes=newSchoAppli.Response, @oldRes=oldSchoAppli.Response,@money=ScholarLst.money, @sno=newSchoAppli.Sno FROM inserted newSchoAppli, deleted oldSchoAppli, ScholarLst WHERE newSchoAppli.Scholarship=ScholarLst.Scholarship IF(@oldRes <>'3') BEGIN ROLLBACK TRANSACTION END ELSE IF(@money>=5000 AND @newRes='1') BEGIN UPDATE ScholarAppli SET Response='2' WHERE Sno=@sno AND Response='3' END";
sqls<<"CREATE TRIGGER Appli_sholar ON ScholarAppli AFTER INSERT AS DECLARE @newSno varchar(10),@newScholar varchar(20) SELECT @newScholar=A1.Scholarship,@newSno=A1.Sno FROM inserted A1 IF ((SELECT COUNT(ScholarAppli.Scholarship)FROM ScholarLst, ScholarAppli WHERE Sno=@newSno AND Money>=5000 AND ScholarLst.Scholarship=ScholarAppli.Scholarship AND ScholarAppli.Response='1')>=1) BEGIN ROLLBACK TRANSACTION END";
//sqls<<"CREATE TRIGGER select_course ON Stu_Cour AFTER INSERT AS DECLARE @newCno varchar(9), @newCterm SMALLINT SELECT @newCno=SC.Cno, @newCterm=SC.Cterm FROM inserted SC IF((SELECT COUNT(CT1.Cno) FROM CTime CT1, CTime CT2 WHERE CT2.Cterm=@newCterm AND CT2.Cno=@newCno AND CT2.Wday=CT1.Wday AND(NOT(CT1.Cbegin>CT2.Cend OR CT2.Cbegin>CT1.Cend)))>=1) BEGIN ROLLBACK TRANSACTION END ELSE BEGIN UPDATE CourseBasic SET Ccur=Ccur+1 WHERE Cno=@newCno END";
sqls<<"CREATE TRIGGER apply_pro ON ProjectAppli AFTER UPDATE AS DECLARE @newRes varchar(6),@oldRes varchar(6), @sno varchar(10),@NewPro varchar(40) SELECT @newRes=NPA.Response, @oldRes=OPA.Response, @sno=NPA.Sno, @NewPro=NPA.ProjectName FROM inserted NPA, deleted OPA IF(@oldRes <>'2') BEGIN ROLLBACK TRANSACTION END ELSE IF(@newRes='1' AND (SELECT COUNT(Sno) FROM deleted WHERE deleted.ProjectName=@NewPro AND deleted.Response='1')>=4) BEGIN ROLLBACK TRANSACTION END";
//sqls<<"CREATE TRIGGER apply_pro ON ProjectAppli AFTER UPDATE AS DECLARE @newRes varchar(6),@oldRes varchar(6), @sno varchar(10),@NewPro varchar(40) SELECT @newRes=NPA.Response, @oldRes=OPA.Response, @sno=NPA.Sno, @NewPro=NPA.ProjectName FROM inserted NPA, deleted OPA IF(@oldRes <>'2') BEGIN ROLLBACK TRANSACTION END ELSE IF(@newRes='1' AND (SELECT COUNT(Sno) FROM deleted WHERE deleted.ProjectName=@NewPro AND deleted.Response='1')>=4) BEGIN ROLLBACK TRANSACTION END";
for(int i=0;i<sqls.size();i++){
query.exec(sqls.at(i));
if(query.lastError().type()!=QSqlError::NoError){
Expand Down
2 changes: 1 addition & 1 deletion loadclassfromwebwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ void LoadClassFromWebWidget::getLessonMsgFromHtml(){
sqls<<"GRANT SELECT ON Teacher TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ScholarAppli TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ScholarLst TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ProjectAppli TO T"+tno+"";
sqls<<"GRANT SELECT,UPDATE,INSERT,DELETE ON ProjectAppli TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT,DELETE ON ProjectLst TO T"+tno+"";
sqls<<"GRANT SELECT ON Student TO T"+tno+"";
sqls<<"GRANT SELECT,INSERT ON T2A TO T"+tno+"";
Expand Down
33 changes: 23 additions & 10 deletions loginwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,20 @@ void LogInWidget::on_toolButton_clicked()
QString input_key=ui->KeyLineEdit->text();
//管理员:0 教师:1 学生:2
int input_type=ui->comboBox->currentIndex();
pd=new QProgressDialog(this);
pd->setRange(0,MAX_SEC);
pd->setWindowModality(Qt::WindowModal);
pd->setModal(true);
pd->setMinimumDuration(5);
pd->setWindowTitle("请稍后...");
pd->setFixedWidth(400);
pd->setValue(0);
pd->setValue(0);
pd->show();


if(input_type==0){
if(input_userName=="admin" && input_key=="123"){
pd=new QProgressDialog(this);
pd->setRange(0,MAX_SEC);
pd->setWindowModality(Qt::WindowModal);
pd->setModal(true);
pd->setMinimumDuration(5);
pd->setWindowTitle("请稍后...");
pd->setFixedWidth(400);
pd->setValue(0);
pd->setValue(0);
pd->show();
AdminWindow *adminWindow;
adminWindow=new AdminWindow();
pd->setValue(MAX_SEC/5);
Expand Down Expand Up @@ -103,7 +105,17 @@ void LogInWidget::on_toolButton_clicked()
DataQuery *query=DataQuery::getDataQuery();
bool canLogIn=query->canLogInSIMS(input_userName,input_key,input_type);
if(canLogIn){
pd=new QProgressDialog(this);
pd->setRange(0,MAX_SEC);
pd->setWindowModality(Qt::WindowModal);
pd->setModal(true);
pd->setMinimumDuration(5);
pd->setWindowTitle("请稍后...");
pd->setFixedWidth(400);
pd->setValue(0);
pd->setValue(0);
if(input_type==1){
pd->show();
Data* data=Data::getData();
data->tno=input_userName;

Expand All @@ -126,6 +138,7 @@ void LogInWidget::on_toolButton_clicked()
teacherWindow->show();
this->close();
}else if(input_type==2){
pd->show();
Data* data=Data::getData();
data->sno=input_userName;
StudentWindow *studentWindow=new StudentWindow();
Expand Down
98 changes: 98 additions & 0 deletions promsgwidget.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#include "promsgwidget.h"
#include "ui_promsgwidget.h"

ProMsgWidget::ProMsgWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ProMsgWidget)
{
ui->setupUi(this);
}

ProMsgWidget::~ProMsgWidget()
{
delete ui;
}

void ProMsgWidget::setName(QString name){
ui->NameEdit->setText(name);
on_FlushButton_clicked();

}

void ProMsgWidget::on_QuitButton_clicked()
{
QList<QTableWidgetItem*> items=ui->ApplyWidget->selectedItems();
if(items.size()<=0){
QMessageBox::warning(this,"错误","您没有选中任何申请!");
}else{
QString res;
QSqlQuery query;
for(int i=0;i<items.size();i++){
int index=ui->ApplyWidget->row(items.at(i));
query.exec("update ProjectAppli set Response='0' where Sno='"+ui->ApplyWidget->item(index,0)->text()+"' and ProjectName='"+ui->NameEdit->text()+"'");
if(query.lastError().type()!=QSqlError::NoError){
res+=query.lastError().text();
}
}
if(res==""){
QMessageBox::information(this,"拒绝申请","拒绝申请成功!");
}else{
QMessageBox::warning(this,"拒绝申请",res);
}
}
}

void ProMsgWidget::on_ConfirmButton_clicked()
{
QList<QTableWidgetItem*> items=ui->ApplyWidget->selectedItems();
if(items.size()<=0){
QMessageBox::warning(this,"错误","您没有选中任何申请!");
}else{
QString res;
QSqlQuery query;
for(int i=0;i<items.size();i++){
int index=ui->ApplyWidget->row(items.at(i));
query.exec("update ProjectAppli set Response='1' where Sno='"+ui->ApplyWidget->item(index,0)->text()+"' and ProjectName='"+ui->NameEdit->text()+"'");
if(query.lastError().type()!=QSqlError::NoError){
res+=query.lastError().text();
}
}
if(res==""){
QMessageBox::information(this,"通过申请","通过申请成功!");
}else{
QMessageBox::warning(this,"通过申请",res);
}
}
}

void ProMsgWidget::on_FlushButton_clicked()
{
ui->ApplyWidget->clearContents();
ui->AdmittedWidget->clearContents();
ui->ApplyWidget->setRowCount(0);
ui->AdmittedWidget->setRowCount(0);

QSqlQuery query1,query2;
query1.exec("select ProjectAppli.Sno,Sname,Reason from ProjectAppli,Student where ProjectAppli.Sno=Student.Sno and Response='3' and ProjectName='"+ui->NameEdit->text()+"'");
query2.exec("select ProjectAppli.Sno,Sname,Reason from ProjectAppli,Student where ProjectAppli.Sno=Student.Sno and Response='1' and ProjectName='"+ui->NameEdit->text()+"'");
if(query1.lastError().type()==QSqlError::NoError){
while(query1.next()){
ui->ApplyWidget->setRowCount(ui->ApplyWidget->rowCount()+1);
ui->ApplyWidget->setItem(ui->ApplyWidget->rowCount()-1,0,new QTableWidgetItem(query1.value(0).toString()));
ui->ApplyWidget->setItem(ui->ApplyWidget->rowCount()-1,1,new QTableWidgetItem(query1.value(1).toString()));
ui->ApplyWidget->setItem(ui->ApplyWidget->rowCount()-1,2,new QTableWidgetItem(query1.value(2).toString()));
}
}else{
QMessageBox::warning(this,"获取未审核申请信息错误",query1.lastError().text());
}
if(query2.lastError().type()==QSqlError::NoError){
while(query2.next()){
ui->AdmittedWidget->setRowCount(ui->AdmittedWidget->rowCount()+1);
ui->AdmittedWidget->setItem(ui->AdmittedWidget->rowCount()-1,0,new QTableWidgetItem(query2.value(0).toString()));
ui->AdmittedWidget->setItem(ui->AdmittedWidget->rowCount()-1,1,new QTableWidgetItem(query2.value(1).toString()));
ui->AdmittedWidget->setItem(ui->AdmittedWidget->rowCount()-1,2,new QTableWidgetItem(query2.value(2).toString()));
}
}else{
QMessageBox::warning(this,"获取成员申请信息错误",query2.lastError().text());
}
}
32 changes: 32 additions & 0 deletions promsgwidget.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#ifndef PROMSGWIDGET_H
#define PROMSGWIDGET_H

#include <QWidget>
#include<adminwindow.h>

namespace Ui {
class ProMsgWidget;
}

class ProMsgWidget : public QWidget
{
Q_OBJECT

public:
explicit ProMsgWidget(QWidget *parent = nullptr);
~ProMsgWidget();

void setName(QString name);

private slots:
void on_QuitButton_clicked();

void on_ConfirmButton_clicked();

void on_FlushButton_clicked();

private:
Ui::ProMsgWidget *ui;
};

#endif // PROMSGWIDGET_H
Loading

0 comments on commit c3eaa55

Please sign in to comment.