




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拆遷安置房買(mǎi)賣(mài)保險(xiǎn)代理合同
- 股權(quán)代持變更合同范本
- 茶山茶葉種植基地承包與茶葉品質(zhì)提升合作合同
- 保姆租賃合同協(xié)議書(shū)怎么寫(xiě)
- 瑜伽健身館轉(zhuǎn)讓及瑜伽課程開(kāi)發(fā)合同
- 股權(quán)擔(dān)保合同擔(dān)保合同擔(dān)保物評(píng)估及價(jià)值確認(rèn)協(xié)議范本
- 企業(yè)戰(zhàn)略規(guī)劃與實(shí)施顧問(wèn)合同
- 瓷磚電商平臺(tái)會(huì)員體系合作運(yùn)營(yíng)合同
- 車(chē)輛抵押貸款抵押權(quán)解除通知合同
- 烘焙甜品廚師雇傭服務(wù)合同
- 鉻(六價(jià))方法驗(yàn)證方法證實(shí)報(bào)告
- 陜西省西安市蓮湖區(qū)2023-2024學(xué)年六年級(jí)下學(xué)期期末英語(yǔ)試題
- 企業(yè)錄用通知書(shū)offer模板
- 人際溝通與禮儀智慧樹(shù)知到課后章節(jié)答案2023年下河北工業(yè)職業(yè)技術(shù)學(xué)院
- 臨床藥理學(xué)(完整課件)
- 田徑運(yùn)動(dòng)會(huì)競(jìng)賽團(tuán)體總分記錄表
- 《中小學(xué)綜合實(shí)踐活動(dòng)課程指導(dǎo)綱要》
- 公共資源交易中心政府采購(gòu)業(yè)務(wù)流程圖
- 建筑施工單位職業(yè)危害歸類(lèi)表
- 重慶市醫(yī)療服務(wù)價(jià)格-重慶市《醫(yī)療服務(wù)價(jià)格手冊(cè)-》
- 《融媒體實(shí)務(wù)》教學(xué)課件(全)
評(píng)論
0/150
提交評(píng)論