文档库

最新最全的文档下载
当前位置:文档库 > Android课程设计报告

Android课程设计报告

《移动应用技术》

课程设计报告

题目:基于Android的金源书店库存管理系统的开发与设计

学生姓名:

专业:信息管理与信息系统

班级:

指导教师:

信息管理与工程系

2015年 5 月 28 日

基于Android的金源书店库存管理系统的开发与设计

摘要:

金源书店库存管理系统是典型的信息管理系统(MIS Management Information System),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。

经过分析,本小组决定采用 SQLite 建立数据库后台,使用Eclipse开发工具,利用其提供的各种面向对象的开发工具进行开发。本系统通过基本信息管理对供应商、顾客和商品进行基本信息的管理。通过库存管理进行商品的入库出库操作来完成商品信息的管理。

经过本小组近一个月的刻苦学习与实践,如期完成了系统的开发工作,实现了金源书店库存管理系统一些基本功能。

关键字:信息管理系统,数据库,出库,入库

目录

1 项目简介与分工 (1)

1.1 项目简介 (1)

1.2 项目分工 (2)

2 项目设计方案 (3)

3 用到的技术 (5)

3.1用户登录模块 (5)

3.2基本信息管理 (11)

3.3 库存信息管理 (26)

3.4 系统设置 (38)

3.5 关于 (42)

3.6相关技术 (42)

4项目总结及展望 (44)

5心得体会 (45)

参考文献 (47)

1项目简介与分工

1.1项目简介

金源书店库存管理是通过采购、仓储、综合、出库、配送等活动,解决物资供需之间存在的时间、空间、数量、品种价格等方面的矛盾,以此衔接社会生产的各环节,从而确保生产的顺利进行。

传统仓库管理完全由人来完成,以手工记录为主,当企业的物流业务成长到一定规模之后,随着订单数量的增加,客户需求不断个性化,执行效率就成为物流发展的瓶颈,单纯依靠人力资源的增加已不能提升出入库执行的速度,反而带来成本的大幅度上升与差错频频。因此,本系统以提高仓库管理人员的工作效率,降低其工作量、减少手工操作的差错率、提高库存的准确率为初衷,针对金院地下超市仓库的管理模式,提出此项目的制作,且利用计算机技术与现代的管理技术相互配合,来更加准确、高速地完成工业企业日常的仓库管理工作。使企业能够以最少的人员来完成更多的工作。为此实现了本系统的完成。

本小组采用 SQLite 建立数据库后台,使用Eclipse开发工具,利用其提供的各种面向对象的开发工具进行开发。本系统通过基本信息管理对供应商、顾客和商品进行基本信息的管理。通过库存管理进行商品的入库出库操作来完成商品信息的管理。

1.2项目分工

本项目分工情况如表1-1所示:

表1-1 项目分工表

Android课程设计报告

2项目设计方案

Android课程设计报告

图2-1系统功能模块图

图2-1系统功能模块图列出了系统的主要功能模块。包括基本信息管理,库存信息管理以及系统设置。其中基本信息管理又包括供应商信息管理,顾客信息管理以及商品信息管理。库存信息管理包括入库管理和出库管理。系统设置包括登录注册、修改密码和退出三个功能。其中供应商信息管理包括添加供应商信息、修改供应商信息、删除供应商信息、查询供应商信息四个子功能。顾客信息管理包括添加顾客信息、修改顾客信息、删除顾客信息、查询顾客信息四个子功能。商品信息管理包括添加商品信息、修改商品信息、删除商品信息、查询商品信息四个子功能。入库管理包括添加入库商品信息、修改入库商品信息、删除入库商品信息、查询入库商品信息四个子功能。出库管理包括添加出库商品信息、修改出库商品信息、删除出库商品信息、查询出库商品信息四个子3功能。

总体框架如图2-2所示:

Android课程设计报告

图2-2总体框架图

3用到的技术

3.1用户登录模块

用户登录模块是系统模块中一个重要的子系统模块,它是系统安全的一个保障。它的主要功能是安全帐号管理,需要正确帐号和密码才能进入系统。对于错误帐号和密码给出提示。

Android课程设计报告

图3-1 登录界面

处理流程:

输入:用户名和密码。

处理:

(1)用户登录窗体启动。

(2)用户填写用户名并输入密码。

(3)从操作人员表中检查是否有相应的用户名和密码。

(4)如果用户名或密码错误,进行提示。

(5)如果输入的用户名和相应密码正确,则根据该用户的权限类别进行权限设置。

(6)进入主控制平台。

设计流程图,如图3-2所示:

Android课程设计报告

图3-2 登录流程图

相关代码如下:

public class StoreManagementActivity extends Activity {

private EditText use;// 用户名

private EditText password;// 密码

SqlHelpdemo db;

SQLiteDatabase sDatabase = null;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(http://www.wendangku.net/doc/59539e90b4daa58da1114a35.htmlyout.main);

use = (EditText) findViewById(R.id.edi1);

password = (EditText) findViewById(R.id.edi2);

db = new SqlHelpdemo(getApplicationContext(), "store.db", null, 1);

sDatabase = db.getWritableDatabase();

}

// 登录按钮监听

public void onload(View v)

{

// 定义取数据的字符串

String userName = "";

String userPw = "";

String i = use.getText().toString();

// 编写数据库语句

String select_sql = "select username,password from user_info where username = '"+ i + "'"; // 执行语句

Cursor cursor = sDatabase.rawQuery(select_sql, null);

cursor.moveToFirst();

// 将从数据中取出的用户名和密码赋值给两个字符串变量

try

{

userName = cursor.getString(0);

userPw = cursor.getString(1);

} catch (Exception e)

{

// TODO: handle exception

userName = "";

userPw = "";

}

// 判断用户名是否为空

if (use.getText().toString().equals(""))

{

DialogDemo.builder(StoreManagementActivity.this, "错误信息",

"用户名不能为空!");

}

// 判断密码是否为空

else if (password.getText().toString().equals(""))

{

DialogDemo.builder(StoreManagementActivity.this, "错误信息",

"密码不能为空!");

}

// 判断用户名和密码是否正确

else if (!(use.getText().toString().equals(userName) && password .getText().toString().equals(userPw)))

{

DialogDemo.builder(StoreManagementActivity.this, "错误信息",

"用户名或密码错误,请重新输入");

}

// 全部正确跳转到操作界面

else

{

cursor.close();

Intent intent = new Intent();

Bundle bundle = new Bundle();

bundle.putString("username",userName);

intent.putExtras(bundle);

intent.setClass(getApplicationContext(), MenuDemo.class);

startActivity(intent);

}

}

注册界面如图3-3所示:

Android课程设计报告

图3-3 注册界面

相关代码如下:

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(http://www.wendangku.net/doc/59539e90b4daa58da1114a35.htmlerregister);

name = (EditText) findViewById(http://www.wendangku.net/doc/59539e90b4daa58da1114a35.htmlename);

pass = (EditText) findViewById(R.id.password);

passsure = (EditText) findViewById(R.id.passwordsure);

workid = (EditText) findViewById(http://www.wendangku.net/doc/59539e90b4daa58da1114a35.htmleide);

db = new SqlHelpdemo(getApplicationContext(), "store.db", null, 1);

sDatabase = db.getWritableDatabase();

}

public void sure(View v) {

db = new SqlHelpdemo(getApplicationContext(), "store.db", null, 1);

sDatabase = db.getWritableDatabase();

if (name.getText().toString().equals("")

|| pass.getText().toString().equals("")

|| passsure.getText().toString().equals("")

|| workid.getText().toString().equals("")) {

DialogDemo.builder(UserRegister.this, "错误信息", "请填写完整信息!");

} else if (!pass.getText().toString()

.equals(passsure.getText().toString())) {

DialogDemo.builder(UserRegister.this, "错误信息", "两次密码输入不一致!"); } else {

String ename = name.getText().toString();

String epass = pass.getText().toString();

String eid = workid.getText().toString();

// 查询语句

String selectStr = "select username from user_info";

Cursor select_cursor = sDatabase.rawQuery(selectStr, null);

select_cursor.moveToFirst();

String string = null;

do {

try {

string = select_cursor.getString(0);

} catch (Exception e) {

// TODO: handle exception

string = "";

}

if (string.equals(ename)) {

DialogDemo.builder(UserRegister.this, "错误信息",

"用户名已存在,请另设用户名");

select_cursor.close();

break;

}

} while (select_cursor.moveToNext());

// 没有重名注册开始

if (!string.equals(ename)) {

// 定义ID

int id = 0;

String select = "select max(_id) from user_info";

Cursor seCursor = sDatabase.rawQuery(select, null);

try {

seCursor.moveToFirst();

id = Integer.parseInt(seCursor.getString(0));

id += 1;

} catch (Exception e) {

// TODO: handle exception

id = 0;

}

sDatabase.execSQL("insert into user_info values('" + id + "','"+ ename + "','" + epass + "','" + eid + "')");

DialogDemo.builder(UserRegister.this, "提示", "注册成功,请返回登录界面登录");

seCursor.close();

}

}

3.2基本信息管理

基本信息管理包括供应商信息管理、客户信息管理和商品信息管理:

供应商是商品在入库时提供商品的人,在进行入库操作时必须先添加该商品的供应商的信息。供应商的信息包括供应商的公司名称,联系人姓名,联系人地址,城市名称,地区名称,邮政编码,联系电话,传真号码,公司主页等基本信息。这些都是必须要求输入的。本程序提供了增加,删除,修改和查询供应商信息的功能。增加:当有新的供应商提供商品的时候需要使用此功能。删除:当与某供应商取消贸易关系时,需要把供应商信息从系统中删除。修改:当某供应商基本信息发生改变时,可以修改供应商信息。查询:可以查询库中任何供应商的信息。因此仓库管理员可以方便的进行供应商信息的管理。添加供应商信息的对

话框如图3-4所示:

N

图3-4 添加供应商信息

添加供应商信息操作步骤及处理流程:

(1)选择基本信息管理->供应商信息管理->添加供应商信息

(2)出现图3-4所示对话框

(3)用户输入公司名称,联系人姓名,联系人地址,城市名称,地区名称,

邮政编码,联系电话,传真号码,公司主页

(4)点击保存.如果其中有空项,会提示该项不能为空.要求用户重新输入

(5)弹出提示框显示供应商信息已经加入。

(6)用户可以继续加入供应商信息或者点返回进行其它操作。

设计流程图,如图3-5所示:

Android课程设计报告

图3-5 添加供应商流程图相关代码如下:

protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(http://www.wendangku.net/doc/59539e90b4daa58da1114a35.htmlyout.tianjiag);

setTitle("添加供应商信息");

Intent inte = getIntent();

Bundle name = inte.getExtras();

names = inte.getStringExtra("username");

db = new SqlHelpdemo(getApplicationContext(), "store.db", null, 1);

sDatabase = db.getWritableDatabase();

gsmc=(EditText) findViewById(R.id.gsmce);

lxr=(EditText) findViewById(R.id.lxre);

csmc=(EditText) findViewById(R.id.csmce);

lxdz=(EditText) findViewById(R.id.lxdze);

dqmc=(EditText) findViewById(R.id.dqmce);

yzbm=(EditText) findViewById(R.id.yzbme);

lxdh=(EditText) findViewById(R.id.lxdhe);

czhm=(EditText) findViewById(R.id.czhme);

gszy=(EditText) findViewById(R.id.gszye);

}

public void save1(View v){

if(gsmc.getText().toString().equals("")){

DialogDemo.builder(Tianjiag.this, "提示", "请输入公司名称");

}

else{

// 查询语句

String egsmc=gsmc.getText().toString();

String elxr=lxr.getText().toString();

String elxdz=lxdz.getText().toString();

String ecsmc=csmc.getText().toString();

String edqmc=dqmc.getText().toString();

String eyzbm=yzbm.getText().toString();

String elxdh=lxdh.getText().toString();

String eczhm=czhm.getText().toString();

String egszy=gszy.getText().toString();

String selectStr = "select comname from gongys";

Cursor cursor = sDatabase.rawQuery(selectStr, null);

cursor.moveToFirst();

String nameg = null;

do {

try {

nameg = cursor.getString(0);

} catch (Exception e) {

// TODO: handle exception

nameg = "";

}

if (nameg.equals(egsmc)) {

DialogDemo.builder(Tianjiag.this, "错误信息","该公司信息已存在");

cursor.close();

break;

}

} while (cursor.moveToNext());

if (!nameg.equals(egsmc)) {

// 定义ID

int id = 0;

String select = "select max(_id) from gongys";

Cursor seCursor = sDatabase.rawQuery(select, null);

try {

seCursor.moveToFirst();

id = Integer.parseInt(seCursor.getString(0));

id += 1;

} catch (Exception e) {

// TODO: handle exception

id = 0;

}

sDatabase.execSQL("insert into gongys values('" + id +

"','"+ egsmc + "','" + elxr + "','" +elxdz+ "','"+ecsmc+ "','"+ edqmc+ "','"+eyzbm+ "','"+ elxdh+ "','"+eczhm+ "','"+egszy+ "')");

Toast.makeText(Tianjiag.this, "添加成功", Toast.LENGTH_LONG).show();

seCursor.close();

}

}

}

修改供应商信息步骤及处理流程:

(1)选择要修改的供应商信息

(2)选择基本信息管理->供应商信息管理->修改供应商信息

(3)用户可以修改供应商的基本信息,修改完后点保存

(4)如果其中有空项或非法字符,会提示该项不能为空或输入不合要求.要

求用户重新输入

(5)更新供应商信息列表。显示信息已经修改

(6)用户可以继续加入供应商信息或者点返回进行其它操作

Android课程设计报告

图3-6 修改供应商信息流程图

相关代码如下: