1、 课 程 设 计 报 告 课程设计名称 移动应用软件开发 (andriod)课程设计 专 业 班 级 学 号 姓 名 指导教师 郑凯梅 成 绩 2016年 7 月 5 日 50 目 录 目录 一、
2、课程设计内容 1 二、开发环境及技术 1 三、系统需求分析 1 四、概要设计 1 1系统结构图(功能模块图) 1 2功能模块说明 1 3界面布局设计 2 4数据库设计 2 五、详细设计 2 1查找通讯录信息 2 2修改通讯录 3 3增加通讯录 3 4删除通讯录 3 5排序通讯录 3 6用户登录 3 六、运行及调试结果 3 1、程序调试 4 2、运行界面截图 4 七、收获及体会 4 八、参考文献 4 九、附录:源代码 5 一、课程设计内容 二、开发环境及技术 在无网络连接情况下,需要在线更新的两个软件SDK和Eclipse的ADT插件
3、逍遥子已经在有网络的前提下先完成在线升级之后打包。现在属于绿色低碳无公害软件,将他们解压到开发机里做一些相应的设置就可以使用了。 1. 安装java开发的JDK到本机,配置好环境变量。 2. 解压Android SDK和Eclipse,配置Eclipse的SDK路径。 (android-sdkGOOD.zip 与eclipseOK.rar)。我们可以在D盘或者是E盘建立一个目录Android,然后解压配置好的SDK和配置好的Eclipse文件到这个文件夹下面。,解压完成后生成新的两个目录:比如我是在D:/盘所以…… 在解压完Eclipse首次运行他时,由于被搬家过来软件自动检查他的工作路
4、径,需要用户设置它的默认工作路径,还需要用户选择SDK的一些配置路径。 系统默认的是在线安装新的SDK组件,我们不可能在没有网络连接的情形下升级应用组件!所以选取Use existing SDKs,然后点击下一步完成经一部的配置。完成配置到Windows里找到Android SDK Manager运行,检测是否可以正常启动。 三、系统需求分析 手机电子教师管理系统和在手机应用程序中并不常见,一般在手机上较为常见的日程提醒程序无法实现自由管理教师信息信息。经过对周边同学的调查研究,普遍认为这款软件方便实用。 本系统是用Android实现的一个教师管理软件,通过对教师需求的考察、分析,要求
5、本软件具有以下功能: 1、简洁操作界面,能保证系统的易用性; 2、教师信息的查询、添加、删除、修改和排序; 3、教师工资的添加、系别的查询。 4、每位教师的信息预览。 四、概要设计 1系统结构图(功能模块图) 教师管理系统 管理员登入 打开 或创建数据库 新建教师信息表 查询模块 插入模块 修改模块 删除模块 排序模块 退出管理系统 图1-1教师管理功能模块图 2功能模块说明 1.打开或创建数据库 用于存放教师信息 2.新建教师信息表 建表用于创
6、建教师信息各类元素 3.查询模块 查询教师信息 4.插入模块 插入教师信息 5.修改模块 用于修改教师信息 6.删除模块 用于删除教师信息 7.排序模块 对教师信息进行排序 8.退出模块 退出教师管理系统 3界面布局设计 3.1 首先是登录界面布局,登录界面我们采用绝对布局方式。组成元素主要是TextView、Button和EditText控件。界面跳转技术代码: SQLiteDatabase m_dbSQLiteDatabase=null; m_dbSQLiteDatabase=SQLiteDatabase.openOrCreateDa
7、tabase("/data/data/com.example.jsgl/JSDB.db", null);
if(m_dbSQLiteDatabase!=null){
Cursor resultCursor=m_dbSQLiteDatabase.query("gl",new String[]{"gl_name","gl_mm"},null,null,null,null,null);
if(resultCursor.moveToFirst()){
for(int i=0;i 8、){
if(username.equals(resultCursor.getString(0))&& password.equals(resultCursor.getString(1))){
Toast.makeText(//创建Toast
MainActivity.this,"恭喜您登陆成功!",Toast.LENGTH_SHORT).show();//显示Toast信息
Intent inttMainAct=new Intent
(MainActivity.thi 9、s,guanli.class);
startActivityForResult(inttMainAct,INFORMATIONACT);
}else{
Toast.makeText(MainActivity.this,"请输入正确的用户名或密码!",Toast.LENGTH_SHORT).show();
}
}
}
resultCursor.moveToNext();
3.2 主界面和子界面通过线性布局方式进行布局,这样可以显得思路清晰,明 10、朗。主要元素由Button和TextView控件组成。跳转技术:使用Intent方式进行跳转。
4数据库设计
数据库设计我们建立了一个数据库,在这个数据库下新建了两张用于保存信息的表。
教师信息表:
序号
字段名称
中文说明
数据类型
是否为空
描述
1
User_Id
教师ID
IET
Not Null
主键自动增长
2
User_Name
教师姓名
TEXT
Not Null
3
User_xb
系别
TEXT
4
User_zhic
职称
TEXT
5
User_gongz
工资
INT
表4- 11、1 教师信息表
管理员表
序号
字段名字
中文说明
数据类型
是否为空
描述
1
gl_Id
管理员ID
INT
Not Null
用户管理员登陆
2
gl_mm
管理员密码
INT
Not Null
密码
表4-2 管理员表
建数据库和建表的SQL语句:private SQLiteDatabase OpenOrCreateDB()
{
SQLiteDatabase dbSQLiteDatabase=null;
try{
dbSQLiteDatabase=SQLiteDatabase.openOrCreateDatabase 12、"/data/data/com.example.jsgl/JSDB.db", null);
}
catch(Exception ex){
return null;
}
return dbSQLiteDatabase;
}
private boolean CreateTable()
{
String sqlCreateTable ="CREATE TABLE JS " +
"(User_Id INTEGER PRIMARY KEY,User_name TEXT NOT NULL,"+
"User_ 13、xb TEXT,"+
"User_zhic TEXT,"+
"User_gongz TEXT)";
if(m_dbSQLiteDatabase==null)return false;
m_dbSQLiteDatabase.execSQL(sqlCreateTable);
return true;
}
首先第一张表是用来保存管理员登录信息,用来进行教师管理系统的登录。另一张表是用来管理教师信息,所用到的技术主要是增、删、改、查和排序。
增加sql语句:cvContextValues.put("User_I 14、d", i);//插入数据字段
cvContextValues.put("User_name", strName);
cvContextValues.put("User_xb", strxb);
cvContextValues.put("User_zhic", strzc);
cvContextValues.put("User_gongz", strgz);
m_dbSQLiteDatabase.insert("JS", null, cvContextValues);//使用insert方法实现插入数据
删除SQL语句:String 15、 strWhereClause="User_Id=?";//删除条件
String[] strArrayWhereArg={String.valueOf(str)};//删除条件参数
m_dbSQLiteDatabase.delete("JS", strWhereClause, strArrayWhereArg);//调用delete方法删除
myResult.setText("删除成功");提示信息
修改SQL语句: ContentValues 16、updateValues=new ContentValues();//对象实例化
updateValues.put("User_Id", strNew);//修改值
String strWhereClause="User_Id=?";//修改条件
String[] strArrayWhereArg={str};//修改条件参数
m_dbSQLiteDatabase.update("JS", updateValues, strWhereClause, strArrayWhereArg);//调 17、用update方法更新
查询SQL语句:String strMsg="查到的数据:\n 编号 姓名 性别 职称 工资\n";
Cursor resultCursor=m_dbSQLiteDatabase.query("JS",new String[]{"User_Id","User_Name","User_xb","User_zhic","User_gongz"},null,null,null,null,null);//调用query方法查询数据
if(resultCursor.moveToFirst()){
fo 18、r(int i=0;i 19、该模块的设计思想为,按照查询关键字从数据库表中读取所有人的信息,并显示查找信息。
先打开数据库,利用SQLiteDatabase。Query()方法进行查询,将查询关键字设为null进行整体查询,然后用cursor类实现输出。
开始
输入查询的条件
KEY是否存在
输出
结束
否
是
图1 查询流程图 m_dbSQLiteDatabase=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.jsgl/JSDB.db", null);//打开数 20、据库
if(m_dbSQLiteDatabase!=null){
String strMsg="查到的数据:\n 编号 姓名 性别 职称 工资\n";
//查询条件
Cursor resultCursor=m_dbSQLiteDatabase.query("JS",new String[]{"User_Id","User_Name","User_xb","User_zhic","User_gongz"},null,null,null,null,null);
//将查询到的数据一次列出
21、
if(resultCursor.moveToFirst()){
for(int i=0;i 22、ursor.moveToNext();
}
2修改通讯录
该模块的设计思想为,按照修改关键字从数据库表中读取所有人的信息,并进行通过输入的修改关键词进行信息的个别修改。
修改流程图:
开始
输入修改的条件
输入条件是否存在
对应修改
结束
否
是
图2 修改流程图
修改姓名代码:SQLiteDatabase m 23、dbSQLiteDatabase=null;
m_dbSQLiteDatabase=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.jsgl/JSDB.db", null);//打开数据库
String str=txtkey.getText().toString();//获取数据字符串
String strNew=txtNew.getText().toString();
if(m_dbSQLiteDatabase!=null){//判 24、断数据库是否为空
String strMsg="查到的数据:\n 编号 姓名 性别 职称 工资\n";
Cursor resultCursor=m_dbSQLiteDatabase.query("JS",new String[]{"User_Id","User_Name","User_xb","User_zhic","User_gongz"},null,null,null,null,null 25、null);//查询所有教师信息
if(resultCursor.moveToFirst()){
for(int i=0;i 26、getString(3)+" "+resultCursor.getString(4)+"\n";
resultCursor.moveToNext();
}
ContentValues updateValues=new ContentValues();
updateValues.put("User_Name", strNew);//修改条件
String strWhereClause="User_Id=?";
27、 String[] strArrayWhereArg={str};
m_dbSQLiteDatabase.update("JS", updateValues,
strWhereClause, strArrayWhereArg);//进行更新
txtresult.setText(strMsg);//显示更新后的内容
Toast.makeText(xiugai.this, "修改成功", Toast.LENGTH_LONG).show();
}
else{
28、 txtresult.setText("未找到!");
}
m_dbSQLiteDatabase.close();
}}
3增加通讯录
该模块的设计思想为,按照需要增加数据写入数据库中,并提示增加成功信息。
增加流程图:
开始
输入增加信息
输入添加成功
添加成功
结束
否
是
29、 图3 增加流程图
增加部分代码://获得各个控件引用
EditText edtname = (EditText) findViewById(R.id.EditText02);
EditText edtnum = (EditText) findViewById(R.id.EditText01);
EditText edtxb = (EditText) findViewById(R.id.EditText03);
EditText edtgz = (EditText) findViewBy 30、Id(R.id.EditText04);
EditText edtyx = (EditText) findViewById(R.id.EditText05);
SQLiteDatabase m_dbSQLiteDatabase = null;
m_dbSQLiteDatabase = SQLiteDatabase.openOrCreateDatabase(
"/data/data/com.example.jsgl/JSDB.db", null);//打开数据库
String strNum, strName, strxb, strzc, st 31、rgz;//定义字符串
//获取输入的字符串
strNum = edtnum.getText().toString();
strName = edtname.getText().toString();
strxb = edtxb.getText().toString();
strzc = edtgz.getText().toString();
strgz = edtyx.getText().toString();
int i=Integer.parseInt(strNum);
/*Toast.makeT 32、ext(
add.this,
strNum + "," + strName + "," + strTel + "," + strage
+ "," + stryx, Toast.LENGTH_LONG).show();*/
if (m_dbSQLiteDatabase != null) {
//插入数据
ContentValues cvContextValues = new ContentValues();
cvContextValues.put("User_Id", i);
cvConte 33、xtValues.put("User_name", strName);
cvContextValues.put("User_xb", strxb);
cvContextValues.put("User_zhic", strzc);
cvContextValues.put("User_gongz", strgz);
m_dbSQLiteDatabase.insert("JS", null, cvContextValues);
Toast.makeText(insert.this, "成功添加", Toast.LENGTH_LONG).s 34、how();//toast提示
}
}
4删除通讯录
开始
输入删除关键字
是否删除
删除成功
结束
该模块的设计思想为,按照修改关键字从数据库表中读取所有人的信息,并进行通过输入的删除关键词进行信息的删除。
删除流程图:
否
是
图4 删除流程图
删除模块代码:SQLit 35、eDatabase m_dbSQLiteDatabase=null;
m_dbSQLiteDatabase=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.jsgl/JSDB.db", null);
final String str=deleKey.getText().toString();
if (m_dbSQLiteDatabase != null){
// delete()
if(rId.isChecke 36、d()){
String strMsg="查到的数据:\n 编号 姓名 性别 职称 工资\n";
Cursor resultCursor=m_dbSQLiteDatabase.query("JS",new String[]{"User_Id","User_Name","User_xb","User_zhic","User_gongz"},"User_Id=?",new String 37、[]{str},null,null,null);
if(resultCursor.moveToFirst()){
for(int i=0;i 38、 "+resultCursor.getString(3)+" "+resultCursor.getString(4)+"\n";
resultCursor.moveToNext();
}
Dialog dialog=new AlertDialog.Builder(shanchu.this)//设置Dialog提示
.setTitle("删除对话框")
.setIcon(R.drawable.ic_launcher) 39、
.setMessage("确认删除吗?\n"+strMsg)
.setPositiveButton("确认",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which){
SQLiteDatabase m_dbSQLiteDatabase=null;
m_dbSQLiteDatabase=SQLiteDat 40、abase.openOrCreateDatabase("/data/data/com.example.jsgl/JSDB.db", null);
String strWhereClause="User_Id=?";//设置删除条件
String[] strArrayWhereArg={String.valueOf(str)};
m_dbSQLiteDatabase.delete("JS", strWhereClause, strArrayWhereArg);//进 41、行删除操作
myResult.setText("删除成功");
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which){
myResult.setText("取消删除");
}
})
42、 .create();
dialog.show();
}
}else{
//txtresult.setText("未找到!");
}
5排序通讯录
开始
点击降序排序
显示排序结果
结束
该模块的设计思想为,按照ID降序方式进行对数据库信息排序,并进行通过输出界面进行显示排序后的信息。
排序流程图:
图5 删除流程图
降序排序代码:btnpx.setOnClickListener(new O 43、nClickListener(){//OnClickListener事件
public void onClick(View v){//重写Onclik方法
SQLiteDatabase m_dbSQLiteDatabase=null;//判断数据库是否为空
m_dbSQLiteDatabase=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.jsgl/JSDB.db", null);//打开数据库
if(m_dbSQLiteDatabase!= 44、null){
String strMsg="查到的数据:\n 编号 姓名 性别 职称 工资\n";
Cursor resultCursor=m_dbSQLiteDatabase.query("JS",new String[]{"User_Id","User_Name","User_xb","User_zhic","User_gongz"},null,null,null,"User_Id desc",null);//排序关键字
//将排序的数据一次列出
if(resultCursor.moveToFir 45、st()){
for(int i=0;i 46、 }
}
jieg.setText(strMsg);//检结果显示在界面
m_dbSQLiteDatabase.close();//关闭数据库
}
}
});
6用户登录
该模块的设计思想为,按照数据库录入信息查找,将查到的信息与输入信息对比进行登入。
开始
输入等入信息
与数据库信息对比
登录成功
结束
登录流程图:
不存在
47、 存在
图6 登录流程图
登录模块代码:String username=user.getText().toString();//得到user字符串
String password=pass.getText().toString();//得到pass字符串
SQLiteDatabase m_dbSQLiteDatabase=null;
m_dbSQLiteDatabas 48、e=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.jsgl/JSDB.db", null);
if(m_dbSQLiteDatabase!=null){
Cursor resultCursor=m_dbSQLiteDatabase.query("gl",new String[]{"gl_name","gl_mm"},null,null,null,null,null);
if(resultCursor.moveToFirst()){
for(int i 49、0;i 50、ainAct=new Intent
(MainActivity.this,guanli.class);
startActivityForResult(inttMainAct,INFORMATIONACT);
}else{
Toast.makeText(MainActivity.this,"请输入正确的用户名或密码!",Toast.LENGTH_SHORT).show();
}
}
}
resultCursor.mo
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818