基于QT可在arm開(kāi)發(fā)板運(yùn)行的學(xué)生信息管理系統(tǒng)_第1頁(yè)
基于QT可在arm開(kāi)發(fā)板運(yùn)行的學(xué)生信息管理系統(tǒng)_第2頁(yè)
基于QT可在arm開(kāi)發(fā)板運(yùn)行的學(xué)生信息管理系統(tǒng)_第3頁(yè)
基于QT可在arm開(kāi)發(fā)板運(yùn)行的學(xué)生信息管理系統(tǒng)_第4頁(yè)
基于QT可在arm開(kāi)發(fā)板運(yùn)行的學(xué)生信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式Linux應(yīng)用與開(kāi)發(fā)課程大作業(yè)題目:學(xué)生信息管理系統(tǒng)專(zhuān)業(yè):姓名:學(xué)號(hào):成績(jī):2015年 7 月任務(wù)書(shū)大作業(yè)6:學(xué)生信息管理系統(tǒng)(單人獨(dú)立完成)功能需求:本系統(tǒng)用于對(duì)學(xué)生信息的管理,要求必須對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,建立至少三個(gè)數(shù)據(jù)表,并提供“登陸驗(yàn)證界面”、“添加學(xué)生信息”、“查詢(xún)某個(gè)學(xué)生信息”、“統(tǒng)計(jì)目前學(xué)生人數(shù)”、“刪除某個(gè)學(xué)生信息”、“退出”等功能,界面設(shè)計(jì)美觀(guān),布局合理,并下載移植到ARM2440S嵌入式開(kāi)發(fā)板上。具體功能要求:1、 學(xué)生信息查詢(xún)功能1) 按姓名查詢(xún) 2) 按學(xué)號(hào)名查詢(xún) 2、 學(xué)生信息修改與刪除3、 學(xué)生信息添加功能4、 統(tǒng)計(jì)當(dāng)前學(xué)生人數(shù)5、 登錄驗(yàn)證功能提示:系統(tǒng)可采用

2、QT界面+MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)摘要本設(shè)計(jì)是嵌入式linux應(yīng)用程序開(kāi)發(fā)的典型例程,采用QT-creater編寫(xiě)的基于數(shù)據(jù)庫(kù)支持的學(xué)生信息管理系統(tǒng),移植到armTQ2440開(kāi)發(fā)板運(yùn)行。貫通了嵌入式應(yīng)用程序開(kāi)發(fā)的全過(guò)程。此系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的數(shù)據(jù)表的查詢(xún)、插入、刪除、更新操作。系統(tǒng)的編譯采用了常用的linux操作系統(tǒng)、qt-creater -opensource-5.4.2、arm-linux-gcc-4.3.3交叉編譯器。采用超級(jí)終端secureCRT工具將編譯好的工程可執(zhí)行文件移植到開(kāi)發(fā)。本系統(tǒng)在嵌入式的應(yīng)用前景廣大,各學(xué)校擁有這樣的便攜式信息系統(tǒng),可以隨時(shí)隨地的對(duì)學(xué)生信息進(jìn)行查詢(xún),便于對(duì)學(xué)生的

3、管理。關(guān)鍵字:嵌入式linux應(yīng)用程序開(kāi)發(fā) 學(xué)生信息管理系統(tǒng) armTQ2440 QTcreater目錄1 設(shè)計(jì)題目的內(nèi)容、任務(wù)及具體要求12 總體設(shè)計(jì)思路22.1 開(kāi)發(fā)環(huán)境22.1.1 編寫(xiě)語(yǔ)言22.1.2 開(kāi)發(fā)環(huán)境22.1.3 運(yùn)行環(huán)境22.2 系統(tǒng)詳細(xì)設(shè)計(jì)22.2.1 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)22.2.2 系統(tǒng)界面設(shè)計(jì)33 功能模塊的具體設(shè)計(jì)63.1 登陸驗(yàn)證模塊設(shè)計(jì)63.2 查詢(xún)學(xué)生信息模塊設(shè)計(jì)73.3 學(xué)生信息修改和刪除模塊設(shè)計(jì)93.4 添加學(xué)生信息模塊設(shè)計(jì)143.5 統(tǒng)計(jì)目前學(xué)生人數(shù)模塊設(shè)計(jì)164 功能模塊的調(diào)試及測(cè)試17總結(jié)20致謝21參考資料221 設(shè)計(jì)題目的內(nèi)容、任務(wù)及具體要求本課程

4、是嵌入式linux應(yīng)用程序開(kāi)發(fā),所以在本次課程中我們應(yīng)該熟悉掌握應(yīng)用程序開(kāi)發(fā)的具體流程,所以本次課題選擇用QT5.4.2編寫(xiě)一個(gè)簡(jiǎn)易的基于數(shù)據(jù)庫(kù)操作的學(xué)生信息管理系統(tǒng),由于QT5版本支持?jǐn)?shù)據(jù)庫(kù),所以就不用再用其他的數(shù)據(jù)庫(kù)開(kāi)發(fā)軟件了,免除了數(shù)據(jù)庫(kù)的連接及移植操作。系統(tǒng)任務(wù):本系統(tǒng)主要用于對(duì)學(xué)生信息的管理,提供“登陸驗(yàn)證界面”、“添加學(xué)生信息”、“查詢(xún)某個(gè)學(xué)生信息”、“統(tǒng)計(jì)目前學(xué)生人數(shù)”、“刪除某個(gè)學(xué)生信息”、“退出”等功能,界面設(shè)計(jì)美觀(guān),布局合理,并下載移植到ARM2440S嵌入式開(kāi)發(fā)板上。具體功能要求:1、學(xué)生信息查詢(xún)功能1) 按姓名查詢(xún) 2) 按學(xué)號(hào)名查詢(xún) 2、學(xué)生信息修改與刪除3、學(xué)生信息

5、添加功能4、統(tǒng)計(jì)當(dāng)前學(xué)生人數(shù)5、登錄驗(yàn)證功能2 總體設(shè)計(jì)思路2.1 開(kāi)發(fā)環(huán)境2.1.1 編寫(xiě)語(yǔ)言本設(shè)計(jì)使用基于C+的圖形用戶(hù)界面軟件Qt軟件編寫(xiě)。Qt應(yīng)用程序框架由奇趣科技公司開(kāi)發(fā)(現(xiàn)屬諾基亞公司),是一種基于C+語(yǔ)言的面向用戶(hù)的圖形界面語(yǔ)言,可以構(gòu)建出工業(yè)級(jí)的跨平臺(tái)應(yīng)用程序。在源代碼不經(jīng)任何修改的情況下,程序即可流暢的運(yùn)行于Windows、Linux/UNIX、Mac OS X和嵌入式Linux上,“一次編寫(xiě),隨處編譯”,具有較強(qiáng)的可移植性。2.1.2 開(kāi)發(fā)環(huán)境本設(shè)計(jì)在linux操作系統(tǒng)下,使用qt-creator-win-opensource-5.4.2程序編寫(xiě)。2.1.3 運(yùn)行環(huán)境在li

6、nux下安裝arm-linux-gcc-4.3.3交叉編譯器,通過(guò)qmake、make操作生成arm開(kāi)發(fā)板可執(zhí)行的文件。然后將此文件移植到開(kāi)發(fā)板運(yùn)行即可。本設(shè)計(jì)采用的是armTQ2440開(kāi)發(fā)板。2.2 系統(tǒng)詳細(xì)設(shè)計(jì)2.2.1 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)通過(guò)QSqlDatabase定義了一個(gè) QSQLITE類(lèi)型的數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)中創(chuàng)建了兩個(gè)數(shù)據(jù)表user、student,分別存儲(chǔ)用戶(hù)登錄信息和學(xué)生具體信息。Table User(id int primary key, password varchar)Table Student(id int primary key, name varchar, se

7、x varchar, age int, course varchar)2.2.2 系統(tǒng)界面設(shè)計(jì)本系統(tǒng)根據(jù)功能共設(shè)計(jì)了6個(gè)界面,分別有用戶(hù)登錄界面、功能菜單界面、信息查詢(xún)功能界面、信息修改與刪除功能界面、信息添加功能界面、學(xué)生信息統(tǒng)計(jì)功能界面。各界面具體設(shè)計(jì)如圖所示: 圖 2.1 用戶(hù)登錄界面 圖 2.2 功能菜單界面 圖 2.3 信息查詢(xún)功能界面 圖 2.4 信息修改與刪除功能界面 圖 2.5 信息添加功能界面 圖 2.6 信息統(tǒng)計(jì)功能界面各界面中使用到的控件有l(wèi)able、line Edit、Group Box、Push Button、Check Box等。界面form統(tǒng)一大小400x270。

8、背景顏色為紫色。3 功能模塊的具體設(shè)計(jì)3.1 登陸驗(yàn)證模塊設(shè)計(jì)操作說(shuō)明:輸入正確的用戶(hù)信息,點(diǎn)擊“登錄”按鈕就會(huì)跳轉(zhuǎn)到下一個(gè)菜單界面,并且關(guān)閉登錄界面。如果輸入的信息不正確,如圖3.1所示,會(huì)提示錯(cuò)誤。如果點(diǎn)擊“退出”按鈕,就會(huì)關(guān)閉界面,退出系統(tǒng)。 圖 3.1 用戶(hù)登錄界面本模塊主要實(shí)現(xiàn)用戶(hù)登錄驗(yàn)證功能。通過(guò)數(shù)據(jù)庫(kù)查詢(xún)操作,將line text輸入的數(shù)據(jù)與User表中的數(shù)據(jù)進(jìn)行比較。然后做出相應(yīng)的操作。具體程序設(shè)計(jì)如下:void Init_interface:on_pB_enter_clicked() QString ID = ui->lineEdit_userID->text()

9、; QString Password = ui->lineEdit_password->text(); QSqlQuery query; query.exec("select * from user"); while(query.next() int tmp1=ID.toInt(); QString tmp2=Password; int R1=query.value(0).toInt(); QString R2=query.value(1).toString(); int x = QString:compare(tmp2,R2,Qt:CaseInsensitiv

10、e); if(tmp1=R1 && x=0 ) this->close(); menu *m = new menu(); m->show(); else ui->label_error->setText(QString:fromUtf8("用戶(hù)名或密碼錯(cuò)誤!"); 3.2 查詢(xún)學(xué)生信息模塊設(shè)計(jì)操作說(shuō)明:本模塊提供學(xué)號(hào)查詢(xún)以及姓名查詢(xún)兩種查詢(xún)方式,如果勾選學(xué)號(hào)查詢(xún),然后輸入學(xué)號(hào),如果有此相關(guān)信息,便會(huì)顯示出這個(gè)學(xué)生的信息,如圖3.2。姓名查詢(xún)與學(xué)號(hào)查詢(xún)操作一樣,如圖3.3。點(diǎn)擊“返回上級(jí)”可返回菜單界面。點(diǎn)擊“退出”可關(guān)閉界面,退出系統(tǒng)

11、。 圖 3.2 學(xué)號(hào)查詢(xún) 圖 3.3 姓名查詢(xún)本模塊主要實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢(xún)功能,通過(guò)條件查詢(xún)顯示出相關(guān)信息,具體程序設(shè)計(jì)如下:void refer:on_pB_selectOk_clicked() if(flag=1) QString Name = ui->lineEdit_refercondition->text(); QSqlQuery query; query.exec(QString("select id,name,sex,age,course from student where name='%1'").arg(Name); while(q

12、uery.next() int id = query.value(0).toInt(); QString name = query.value(1).toString(); QString sex = query.value(2).toString(); QString age = query.value(3).toString(); QString course = query.value(4).toString(); / qDebug()<<id<<name<<sex<<age<<course; ui->label_StuI

13、D->setText(QString(" %1").arg(id); ui->label_StuName->setText(QString(" %1").arg(name); ui->label_StuSex->setText(QString(" %1").arg(sex); ui->label_StuAge->setText(QString(" %1").arg(age); ui->label_StuClass->setText(QString("

14、%1").arg(course); if(flag=2) QString ID= ui->lineEdit_refercondition->text(); QSqlQuery query; query.exec(QString("select id,name,sex,age,course from student where id='%1'").arg(ID); while(query.next() int id = query.value(0).toInt(); QString name = query.value(1).toStri

15、ng(); QString sex = query.value(2).toString(); QString age = query.value(3).toString(); QString course = query.value(4).toString(); / qDebug()<<id<<name<<sex<<age<<course; ui->label_StuID->setText(QString(" %1").arg(id); ui->label_StuName->setText(

16、QString(" %1").arg(name); ui->label_StuSex->setText(QString(" %1").arg(sex); ui->label_StuAge->setText(QString(" %1").arg(age); ui->label_StuClass->setText(QString(" %1").arg(course); 程序中定義了標(biāo)志量flag,當(dāng)姓名查詢(xún)被勾選時(shí),flag=1,當(dāng)學(xué)號(hào)查詢(xún)被勾選時(shí),flag=2。3.3 學(xué)生信息修改

17、和刪除模塊設(shè)計(jì)操作說(shuō)明:首先輸入相關(guān)學(xué)號(hào),然后點(diǎn)擊“確認(rèn)”,如果有相關(guān)信息,則顯示,如果沒(méi)有,則提示沒(méi)有相關(guān)信息。如果顯示了相關(guān)信息,點(diǎn)擊“刪除信息”,則會(huì)刪除此條信息;如若需要修改,在文本框中修改信息后,點(diǎn)擊“保存修改”,則會(huì)保存修改后的信息。點(diǎn)擊“返回”可返回菜單界面。點(diǎn)擊“退出”可關(guān)閉界面,退出系統(tǒng)。刪除例子:輸入學(xué)號(hào)“2012442201”,點(diǎn)擊“確認(rèn)”,結(jié)果如圖3.4所示;然后點(diǎn)擊“刪除信息”,提示刪除成功!,結(jié)果如圖3.5。然后再點(diǎn)擊確認(rèn)查詢(xún)“2012442201”這條相關(guān)信息,此時(shí)提示沒(méi)有相關(guān)信息,如圖3.6所示。 圖 3.4 圖 3.5 圖 3.6信息修改例子:輸入學(xué)號(hào)“201

18、2442202”,點(diǎn)擊“確認(rèn)”,結(jié)果如圖3.7,然后將年齡修改為“22”,專(zhuān)業(yè)班級(jí)修改為“計(jì)算機(jī)科學(xué)與技術(shù)1201”,點(diǎn)擊“保存修改”,如圖3.8,提示修改成功。然后再點(diǎn)擊“確認(rèn)”,結(jié)果顯示如圖3.9,信息已經(jīng)被成功修改。 圖 3.7 圖 3.8 圖 3.9具體程序設(shè)計(jì)如下:void modifyAnddelete:on_pB_referOK_clicked() int flag=0; QString ID= ui->lineEdit_referID->text(); QSqlQuery query; query.exec(QString("select id,name,

19、sex,age,course from student where id='%1'").arg(ID); while(query.next() flag=1; int id = query.value(0).toInt(); QString name = query.value(1).toString(); QString sex = query.value(2).toString(); QString age = query.value(3).toString(); QString course = query.value(4).toString(); / qDeb

20、ug()<<id<<name<<sex<<age<<course; ui->lineEdit_MDid->setText(QString("%1").arg(id); ui->lineEdit_MDname->setText(QString("%1").arg(name); ui->lineEdit_MDsex->setText(QString("%1").arg(sex); ui->lineEdit_MDage->setTex

21、t(QString("%1").arg(age); ui->lineEdit_MDcourse->setText(QString("%1").arg(course); ui->label_MDflag->clear(); if(flag=0) ui->label_MDflag->setText(QString:fromUtf8("沒(méi)有相關(guān)信息!");void modifyAnddelete:on_pB_modideleDelete_clicked() QString ID = ui->line

22、Edit_MDid->text(); QSqlQuery query; query.exec(QString("delete from student where id='%1'").arg(ID); ui->lineEdit_MDid->clear(); ui->lineEdit_MDname->clear(); ui->lineEdit_MDsex->clear(); ui->lineEdit_MDage->clear(); ui->lineEdit_MDcourse->clear();

23、ui->label_MDflag->setText(QString:fromUtf8("刪除成功!");void modifyAnddelete:on_pB_modideleSave_clicked() QString ID1= ui->lineEdit_referID->text(); QString id = ui->lineEdit_MDid->text(); QString name = ui->lineEdit_MDname->text(); QString sex = ui->lineEdit_MDsex-&

24、gt;text(); QString age = ui->lineEdit_MDage->text(); QString course = ui->lineEdit_MDcourse->text(); QSqlQuery query; if(id.toInt() != ID1.toInt() query.exec(QString("delete from student where id='%1'").arg(ID1); query.prepare("insert into student(id,name,sex,age,c

25、ourse) values (:id, :name, :sex, :age, :course)"); int idValue = id.toInt(); QString nameValue = name; QString sexValue = sex; QString ageValue = age; QString courseValue = course; query.bindValue(":id",idValue); query.bindValue(":name",nameValue); query.bindValue(":sex

26、",sexValue); query.bindValue(":age",ageValue); query.bindValue(":course",courseValue); query.exec(); ui->lineEdit_MDid->clear(); ui->lineEdit_MDname->clear(); ui->lineEdit_MDsex->clear(); ui->lineEdit_MDage->clear(); ui->lineEdit_MDcourse->clear

27、(); else query.exec(QString("update student set name='%1',sex='%2',age='%3',course='%4'where id='%5'").arg(name).arg(sex).arg(age).arg(course).arg(ID1); ui->lineEdit_MDid->clear(); ui->lineEdit_MDname->clear(); ui->lineEdit_MDsex->c

28、lear(); ui->lineEdit_MDage->clear(); ui->lineEdit_MDcourse->clear(); ui->label_MDflag->setText(QString:fromUtf8("修改成功!");信息修改功能有兩種情況,一是學(xué)號(hào)沒(méi)有修改,只需用update更新數(shù)據(jù);另一個(gè)是學(xué)號(hào)被修改,那么首先先刪除原來(lái)學(xué)號(hào)的相關(guān)信息,然后再用insert插入一條新的數(shù)據(jù)。3.4 添加學(xué)生信息模塊設(shè)計(jì)操作說(shuō)明:本模塊具體實(shí)現(xiàn)信息插入,在文本框中輸入需要插入的數(shù)據(jù),然后點(diǎn)擊“添加”。 圖 3.10 添加成功具體程

29、序設(shè)計(jì):void add:on_pB_addOK_clicked() QString id = ui->lineEdit_addid->text(); QString name = ui->lineEdit_addname->text(); QString sex = ui->lineEdit_addsex->text(); QString age = ui->lineEdit_addage->text(); QString course = ui->lineEdit_addcourse->text(); QSqlQuery quer

30、y; query.prepare("insert into student(id,name,sex,age,course) values (:id, :name, :sex, :age, :course)"); int idValue = id.toInt(); QString nameValue = name; QString sexValue = sex; QString ageValue = age; QString courseValue = course; query.bindValue(":id",idValue); query.bindVa

31、lue(":name",nameValue); query.bindValue(":sex",sexValue); query.bindValue(":age",ageValue); query.bindValue(":course",courseValue); query.exec(); ui->label_flag->setText(QString:fromUtf8("添加成功!");void add:on_pB_addOKgoon_clicked() ui->lineEd

32、it_addid->clear(); ui->lineEdit_addname->clear(); ui->lineEdit_addsex->clear(); ui->lineEdit_addage->clear(); ui->lineEdit_addcourse->clear(); ui->label_flag->clear();3.5 統(tǒng)計(jì)目前學(xué)生人數(shù)模塊設(shè)計(jì)本模塊實(shí)現(xiàn)統(tǒng)計(jì)當(dāng)前系統(tǒng)學(xué)生人數(shù),點(diǎn)擊”統(tǒng)計(jì)”即可顯示具體人數(shù)。 圖 3.11 統(tǒng)計(jì)具體程序設(shè)計(jì):void count:on_pB_countOK_clicked() int count=0; QString m; QSqlQuery query; query.exec(&qu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論