freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于qt的教務(wù)管理系統(tǒng)的實(shí)現(xiàn)本科論文-資料下載頁

2025-06-27 18:41本頁面
  

【正文】 )。 thismainfaceuiupdscore_btmsetEnabled(true)。 thismainfaceuiaddscore_btm_2setEnabled(true)。 thismainfaceuidelscore_btmsetEnabled(true)。 thismainfaceuimanaguser_btmsetEnabled(false)。 mainfaceshow()。 } }}}由以上代碼可以看出,不同的登錄對(duì)象對(duì)應(yīng)于不同的操作界面的設(shè)置是在頁面的顯示時(shí)動(dòng)態(tài)生成的,在界面重新登錄時(shí)可以保證提供給用戶正確的界面。系統(tǒng)先獲得在登錄界面中Qlineedit中的數(shù)據(jù),然后將這些用戶信息跟數(shù)據(jù)庫中存放的用戶信息相比對(duì),并且使用if嵌套來判斷不同的情況。對(duì)于信息錯(cuò)誤的信息,系統(tǒng)會(huì)彈出一個(gè)QMessageBox來提示用戶輸入有誤,并且用戶可以重新輸入;對(duì)于正確的信息,系統(tǒng)將對(duì)信息做出判斷,根據(jù)不同的用戶來配置不同的用戶界面,即通過將一些控件禁用來實(shí)現(xiàn)。QRegExp regExp([09]{1,10})。 QRegExpValidator *pRegExpValidator=new QRegExpValidator(regExp,this)。uiname_LineTxtsetValidator(pRegExpValidator)。uipasswd_LineTxtsetEchoMode(QLineEdit::Password)。 在登錄界面中需要輸入用戶名以及密碼,出于安全的考慮,在輸入用戶名的文本框中設(shè)置了輸入限制,根據(jù)正則表達(dá)式的規(guī)范,在這個(gè)文本框中將無法輸入數(shù)字之外的其它字符,并且有字?jǐn)?shù)限制,此處根據(jù)我的實(shí)際情況設(shè)置成了最多十位的輸入。而且密碼框的輸入字符會(huì)顯示為小黑點(diǎn),這樣就可以避免密碼在無意之間泄漏。 數(shù)據(jù)庫的操作上面的代碼中涉及到了數(shù)據(jù)庫的操作,對(duì)于數(shù)據(jù)庫的操作,可以新建一個(gè)封裝數(shù)據(jù)庫操作的類,在這個(gè)類中完成對(duì)數(shù)據(jù)庫的交互部分。一般數(shù)據(jù)庫鏈接有五大步驟,分別是:(注冊(cè))數(shù)據(jù)庫bool sql_reg::connectionDB(){ db=QSqlDatabase::addDatabase(QSQLITE)。 ()。 if(()) { qDebug()數(shù)據(jù)庫打開成功。 return true。 } else { qDebug()數(shù)據(jù)庫打開失敗。 ()。 qDebug()****************。 return false。}}這是一個(gè)連接數(shù)據(jù)庫的函數(shù)。對(duì)于要執(zhí)行數(shù)據(jù)操作的程序來說,所有的操作都是基于數(shù)據(jù)庫的連接成功,所以將數(shù)據(jù)庫的連接部分單獨(dú)分為一個(gè)函數(shù),并且在這個(gè)函數(shù)中添加了一些輸出語句;如果出錯(cuò),()來提供出錯(cuò)的信息,并且可以通過使用qdebug來定外錯(cuò)誤的位置,這樣可以給程序員的檢錯(cuò)提供幫助,使程序員快速的發(fā)現(xiàn)錯(cuò)誤以至解決錯(cuò)誤。bool sql_reg::selectuser(QString type,QString id,QString passwd){ bool *ok。 (ok,10)。 QSqlQuery query。 ( QString( select * from user where type = 39。%139。 and id= %2 and passwd= 39。%339。 ). arg( type ).arg(id).arg(passwd))。 //qDebug()QString( select * from user where type = 39。%139。 and id= %2 and passwd= 39。%339。 ). arg( type ).arg(id).arg(passwd)。 if (!query. next()) { qDebug() none 。 qDebug()selectuser error。 qDebug()()。 qDebug()************。 return false。 } else { qDebug() query. value( 0 ). toInt() query. value( 1 ). toString()。 return true。 }} 查詢用戶,這是點(diǎn)擊登錄按鈕后的槽函數(shù)要調(diào)用的函數(shù),將用戶在登錄界面提供的信息傳參到這個(gè)函數(shù),這個(gè)函數(shù)負(fù)責(zé)將傳入的信息與數(shù)據(jù)庫中的信息進(jìn)行比對(duì),并且返回比對(duì)結(jié)果;如果比對(duì)結(jié)果發(fā)現(xiàn)數(shù)據(jù)正確,返回true,否則返回false,程序根據(jù)函數(shù)的不同返回結(jié)果來選擇不同的程序流程走向。//查詢用戶信息QSqlTableModel * sql_reg::queryuserinfo(int id,QString type){ QSqlTableModel * model = new QSqlTableModel。 modelsetTable(user)。modelsetEditStrategy(QSqlTableModel::OnManualSubmit)。//添加過濾器 modelsetFilter(QObject::tr(id = %1 and type= 39。%239。).arg(id).arg(type))。 modelselect()。 //選取整個(gè)表的所有行 modellastError()。 //uitableViewsetModel(model)。 return model。} 這個(gè)函數(shù)查詢用戶在數(shù)據(jù)庫中的信息,程序根據(jù)函數(shù)返回結(jié)果QsqlTableModel的對(duì)象來設(shè)置程序界面中的Qtableview,使得在這個(gè)視圖中顯示用戶登錄信息,并且在這個(gè)函數(shù)中使用了過濾器,根據(jù)傳入的參數(shù)將數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行過濾,得到自己想要的數(shù)據(jù),這些操作都得益于Qt提供的封裝函數(shù),調(diào)用現(xiàn)有的函數(shù)來實(shí)現(xiàn)自己程序的目的,這也是面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)之一。 管理員模塊的實(shí)現(xiàn)對(duì)于程序中的QstackWdiget與QtoolBox來說,在程序界面初始化的時(shí)候需要將它們也進(jìn)行初始化,否則無法確定在程序界面顯示的時(shí)候出現(xiàn)的是什么功能的界面,這樣程序就是沒法控制的,所以需要初始化。初始化代碼如下:uileft_toolboxsetCurrentIndex(0)。 uistackedWidgetsetCurrentIndex(0)。 uisystem_manager_stacksetCurrentIndex(0)。在管理員模塊中,程序提供最多的功能,對(duì)于每一個(gè)功能按鈕在代碼部分都得注冊(cè)相應(yīng)的槽函數(shù)。初始化界面的時(shí)候在界面的上半部分會(huì)有圖片背景的顯示,代碼實(shí)現(xiàn)如下:uilabel_widgetsetAutoFillBackground(true)。 QPalette palette。 QPixmap pixmap(D:/)。(QPalette::Window, QBrush(pixmap))。界面背景圖片的填充也需要設(shè)置填充屬性為真,否則無法填充。在Qt中提供QPalette類,通過新建QPalette類的對(duì)象并且用圖片的路徑來初始化它,最后設(shè)置setBrush的參數(shù)值來達(dá)到填充界面背景的目的。connect(uileft_toolbox,SIGNAL(currentChanged(int)), uistackedWidget,SLOT(setCurrentIndex(int)))。connect(uihelp_listwidget,SIGNAL(currentRowChanged(int)), uiabout_widget,SLOT(setCurrentIndex(int)))。connect(uiquery_classnumbtm,SIGNAL(clicked()),this,SLOT(on_query_classnumbtm_clicked())); 這是三個(gè)注冊(cè)槽函數(shù)的代碼,第一個(gè)是將界面中左邊的QToolBox與界面右邊的QstackWidget相連接,這樣的設(shè)計(jì)可以使界面按照既定的方案進(jìn)行跳轉(zhuǎn)。第二個(gè)是連接QtoolBox的子界面與QstackWidget中的子界面,實(shí)現(xiàn)子界面中的不同條目與不同的功能界面之間的跳轉(zhuǎn)。第三個(gè)則是界面中功能按鈕的連接,在按鈕上注明不同的功能,然后讓不同的功能對(duì)于不同的槽函數(shù),這樣就可以在槽函數(shù)中實(shí)現(xiàn)對(duì)應(yīng)的功能。 對(duì)于功能按鈕來說,大多數(shù)的按鈕都是在QstackWidget的界面中來完成的,所以就只需要將按鈕的槽函數(shù)設(shè)置為界面跳轉(zhuǎn)就可以了,程序中有很多這樣的按鈕,它們都是用相同的方法設(shè)置成功的,下面用一個(gè)按鈕的槽函數(shù)來簡(jiǎn)單說明下功能的槽函數(shù)的設(shè)置:void MainFace::on_query_recordbtm_clicked(){ uileft_toolboxsetCurrentIndex(2)。 uistudent_listwidgetsetCurrentRow(3)。 uistackedWidgetsetCurrentIndex(2)。 uistudent_record_manager_widgetsetCurrentIndex(3)。} 管理員最重要的也是最特殊的功能是注冊(cè)用戶,什么人可以登錄到系統(tǒng)需要管理員進(jìn)行管理,所以對(duì)于這部分的功能按鈕的設(shè)計(jì)是彈出一個(gè)管理用戶的窗口,這樣就避免將管理用戶的操作與其它的操作相混淆。void MainFace::on_managuser_btm_clicked(){ thisregwidgetshow()。} 在regwidget界面中提供管理員需要對(duì)用戶的操作的所有操作按鈕,并且也都有相對(duì)應(yīng)的槽函數(shù)。并且這部分操作大多要設(shè)計(jì)到數(shù)據(jù)庫的操作,所有在這個(gè)類的操作中也新建了一個(gè)數(shù)據(jù)庫類的對(duì)象,通過這個(gè)對(duì)象來調(diào)用數(shù)據(jù)庫類中的函數(shù)。void Reg_Widget::on_query_btm_clicked(){ bool *ok。 QString arg=uiqueryuser_lineedittext()。 int id=(ok,10)。 thisusermodel=(user)。 thisusermodelsetFilter(QObject::tr(id = %1).arg(id))。 thisusermodelselect()。 uimanageruser_tableViewsetModel(thisusermodel)。}void Reg_Widget::on_queryAll_btm_clicked(){ thisusermodel=(user)。 thisusermodelselect()。 uimanageruser_tableViewsetModel(thisusermodel)。}void Reg_Widget::on_adduser_btm_clicked(){ thisusermodel=(user)。 thisusermodelselect()。 uimanageruser_tableViewsetModel(thisusermodel)。 int rowNum = thisusermodelrowCount()。 thisusermodelinsertRow(rowNum)。 }void Reg_Widget::on_conadd_btm_clicked(){ thisusermodelsubmitAll()。}void Reg_Widget::on_condel_btm_clicked(){ int curRow = uimanageruser_tableViewcurrentIndex().row()。 //獲取選中的行 thisusermodelremoveRow(curRow)。 //刪除該行 if(QMessageBox::warning(this,tr(刪除當(dāng)前行!),tr(你確定刪除當(dāng)前行嗎?),QMessageBox::Yes,QMessageBox::No) == QMessageBox::No) { thisusermodelrevertAll()。 } else thisusermodelsubmitAll()。 }void Reg_Widget::on_conupd_btm_clicked(){ thisusermodelsubmitAll()。}這樣就完成了管理員的大部分操作,還有一些操作是與學(xué)生或者是教師所共有的,那部分功能將在學(xué)生模塊
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1