




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式Linux应用与开发课程大作业题目:学生信息管理系统专业:姓名:学号:成绩:2015年 7 月任务书大作业6:学生信息管理系统(单人独立完成)功能需求:本系统用于对学生信息的管理,要求必须对数据库进行操作,建立至少三个数据表,并提供“登陆验证界面”、“添加学生信息”、“查询某个学生信息”、“统计目前学生人数”、“删除某个学生信息”、“退出”等功能,界面设计美观,布局合理,并下载移植到ARM2440S嵌入式开发板上。具体功能要求:1、 学生信息查询功能1) 按姓名查询 2) 按学号名查询 2、 学生信息修改与删除3、 学生信息添加功能4、 统计当前学生人数5、 登录验证功能提示:系统可采用
2、QT界面+MySQL数据库实现摘要本设计是嵌入式linux应用程序开发的典型例程,采用QT-creater编写的基于数据库支持的学生信息管理系统,移植到armTQ2440开发板运行。贯通了嵌入式应用程序开发的全过程。此系统实现了数据库的数据表的查询、插入、删除、更新操作。系统的编译采用了常用的linux操作系统、qt-creater -opensource-5.4.2、arm-linux-gcc-4.3.3交叉编译器。采用超级终端secureCRT工具将编译好的工程可执行文件移植到开发。本系统在嵌入式的应用前景广大,各学校拥有这样的便携式信息系统,可以随时随地的对学生信息进行查询,便于对学生的
3、管理。关键字:嵌入式linux应用程序开发 学生信息管理系统 armTQ2440 QTcreater目录1 设计题目的内容、任务及具体要求12 总体设计思路22.1 开发环境22.1.1 编写语言22.1.2 开发环境22.1.3 运行环境22.2 系统详细设计22.2.1 系统数据结构设计22.2.2 系统界面设计33 功能模块的具体设计63.1 登陆验证模块设计63.2 查询学生信息模块设计73.3 学生信息修改和删除模块设计93.4 添加学生信息模块设计143.5 统计目前学生人数模块设计164 功能模块的调试及测试17总结20致谢21参考资料221 设计题目的内容、任务及具体要求本课程
4、是嵌入式linux应用程序开发,所以在本次课程中我们应该熟悉掌握应用程序开发的具体流程,所以本次课题选择用QT5.4.2编写一个简易的基于数据库操作的学生信息管理系统,由于QT5版本支持数据库,所以就不用再用其他的数据库开发软件了,免除了数据库的连接及移植操作。系统任务:本系统主要用于对学生信息的管理,提供“登陆验证界面”、“添加学生信息”、“查询某个学生信息”、“统计目前学生人数”、“删除某个学生信息”、“退出”等功能,界面设计美观,布局合理,并下载移植到ARM2440S嵌入式开发板上。具体功能要求:1、学生信息查询功能1) 按姓名查询 2) 按学号名查询 2、学生信息修改与删除3、学生信息
5、添加功能4、统计当前学生人数5、登录验证功能2 总体设计思路2.1 开发环境2.1.1 编写语言本设计使用基于C+的图形用户界面软件Qt软件编写。Qt应用程序框架由奇趣科技公司开发(现属诺基亚公司),是一种基于C+语言的面向用户的图形界面语言,可以构建出工业级的跨平台应用程序。在源代码不经任何修改的情况下,程序即可流畅的运行于Windows、Linux/UNIX、Mac OS X和嵌入式Linux上,“一次编写,随处编译”,具有较强的可移植性。2.1.2 开发环境本设计在linux操作系统下,使用qt-creator-win-opensource-5.4.2程序编写。2.1.3 运行环境在li
6、nux下安装arm-linux-gcc-4.3.3交叉编译器,通过qmake、make操作生成arm开发板可执行的文件。然后将此文件移植到开发板运行即可。本设计采用的是armTQ2440开发板。2.2 系统详细设计2.2.1 系统数据结构设计本系统通过QSqlDatabase定义了一个 QSQLITE类型的数据库。在数据库中创建了两个数据表user、student,分别存储用户登录信息和学生具体信息。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 系统界面设计本系统根据功能共设计了6个界面,分别有用户登录界面、功能菜单界面、信息查询功能界面、信息修改与删除功能界面、信息添加功能界面、学生信息统计功能界面。各界面具体设计如图所示: 图 2.1 用户登录界面 图 2.2 功能菜单界面 图 2.3 信息查询功能界面 图 2.4 信息修改与删除功能界面 图 2.5 信息添加功能界面 图 2.6 信息统计功能界面各界面中使用到的控件有lable、line Edit、Group Box、Push Button、Check Box等。界面form统一大小400x270。
8、背景颜色为紫色。3 功能模块的具体设计3.1 登陆验证模块设计操作说明:输入正确的用户信息,点击“登录”按钮就会跳转到下一个菜单界面,并且关闭登录界面。如果输入的信息不正确,如图3.1所示,会提示错误。如果点击“退出”按钮,就会关闭界面,退出系统。 图 3.1 用户登录界面本模块主要实现用户登录验证功能。通过数据库查询操作,将line text输入的数据与User表中的数据进行比较。然后做出相应的操作。具体程序设计如下: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("用户名或密码错误!"); 3.2 查询学生信息模块设计操作说明:本模块提供学号查询以及姓名查询两种查询方式,如果勾选学号查询,然后输入学号,如果有此相关信息,便会显示出这个学生的信息,如图3.2。姓名查询与学号查询操作一样,如图3.3。点击“返回上级”可返回菜单界面。点击“退出”可关闭界面,退出系统
11、。 图 3.2 学号查询 图 3.3 姓名查询本模块主要实现数据库查询功能,通过条件查询显示出相关信息,具体程序设计如下: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); 程序中定义了标志量flag,当姓名查询被勾选时,flag=1,当学号查询被勾选时,flag=2。3.3 学生信息修改
17、和删除模块设计操作说明:首先输入相关学号,然后点击“确认”,如果有相关信息,则显示,如果没有,则提示没有相关信息。如果显示了相关信息,点击“删除信息”,则会删除此条信息;如若需要修改,在文本框中修改信息后,点击“保存修改”,则会保存修改后的信息。点击“返回”可返回菜单界面。点击“退出”可关闭界面,退出系统。删除例子:输入学号“2012442201”,点击“确认”,结果如图3.4所示;然后点击“删除信息”,提示删除成功!,结果如图3.5。然后再点击确认查询“2012442201”这条相关信息,此时提示没有相关信息,如图3.6所示。 图 3.4 图 3.5 图 3.6信息修改例子:输入学号“201
18、2442202”,点击“确认”,结果如图3.7,然后将年龄修改为“22”,专业班级修改为“计算机科学与技术1201”,点击“保存修改”,如图3.8,提示修改成功。然后再点击“确认”,结果显示如图3.9,信息已经被成功修改。 图 3.7 图 3.8 图 3.9具体程序设计如下: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("没有相关信息!");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("修改成功!");信息修改功能有两种情况,一是学号没有修改,只需用update更新数据;另一个是学号被修改,那么首先先删除原来学号的相关信息,然后再用insert插入一条新的数据。3.4 添加学生信息模块设计操作说明:本模块具体实现信息插入,在文本框中输入需要插入的数据,然后点击“添加”。 图 3.10 添加成功具体程
29、序设计: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 统计目前学生人数模块设计本模块实现统计当前系统学生人数,点击”统计”即可显示具体人数。 图 3.11 统计具体程序设计:void count:on_pB_countOK_clicked() int count=0; QString m; QSqlQuery query; query.exec(&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年5G网络的5G网络技术发展
- 2025年5G网络的安全漏洞与防护对策
- 浙江省义乌市2025年八年级上学期月考英语测试附答案
- 2025年蜡疗技术操作考试题及答案
- 北京市公共资源交易目录(2025年本)
- 2025年稻草人阅读测试卷及答案
- 中国邮政2025巴中市秋招采购管理岗位面试模拟题及答案
- 个人收入证明范本制作与财产继承法律效力确认合同
- 禾青幼儿园幼儿成长教育教玩具与设备采购合同
- 2025年高考数学保险试题及答案
- 以气体制备为主体的实验-2025年高考化学专项复习(解析版)
- 护理工作中的冲突与管理
- 北京地区建筑地基基础勘察设计准则
- 《社区调查报告》课件
- 2025-2025学年外研版七年级英语上册教学计划
- 《胸腔穿刺术》课件
- 《人才选用育留》课件
- 农村土地使用权转让协议书
- 任务1 混合动力汽车动力系统基本组成与原理
- 富血小板血浆(PRP)临床实践与病例分享课件
- 华为HCSA-Presales-IT售前认证备考试题及答案
评论
0/150
提交评论