当前位置:首页>文档>软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)

软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)

  • 2026-03-06 15:10:19 2026-01-21 12:16:24

文档预览

软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)
软件设计说明书_436套软件开发需求文档_VD516-软件开发需求文档_03软件设计说明书(23份)

文档信息

文档格式
doc
文档大小
0.402 MB
文档页数
22 页
上传时间
2026-01-21 12:16:24

文档内容

软件设计说明书 姓名: 第 1 页目 录 第一章 引言........................................................3 1.1项目介绍.......................................................................................................................3 第二章 系统概述........................................................4 2.1 系统需求分析................................................................................................................4 2.2 Android平台介绍..........................................................................................................4 第三章 系统设计........................................................6 3.1 数据库设计....................................................................................................................6 3.2 系统界面设计................................................................................................................7 第四章 系统的实现.....................................................13 4.1 系统文件列表..............................................................................................................13 4.2 登录功能的实现..........................................................................................................14 4.2 注册功能的实现..........................................................................................................15 4.3 添加账目的实现..........................................................................................................16 4.4 业务逻辑层实现..........................................................................................................16 } 4.5 数据库操作的实现...................................................................................................18 4.6 配置文件的设置..........................................................................................................21 第 2 页第一章 引言 随着科学技术的发展,Android系统平台的逐渐普及,加之人们在日常生活中随 时随地记账的需要。纸质记账本已经不能满足需求,一种基于智能手机操作平台的 记账软件的需求逐渐显现出来。基于此原因,本文展开了对基于Android手机平台记 账软件的设计与实现的研究。虽然目前智能手机操作系统不少,但就目前的市场份 额和发展趋势来看,谷歌基于Linux的手机操作系统Android一度被业内视为最有希 望的移动平台。它不但开源免费,而且有强大的技术支持。本次选择的手机平台是 Android,这样能使本项目开发出的软件能运行在尽可能多的移动设备中,方便人们 的生活记账。 1.1项目介绍 该项目是基于android系统开发的一套手机记账系统,随着人们理财观念的不断 提升越来约需要一款软件能够随时的记住自己的消费和花费记录,能够对自己每天 的消费能有一些总结从而能培养自己的理财观念,不至于使自己陷入盲目的花销之 中,使自己真正的能够及时的掌握自己的消费信息,从而节约花销,使自己的钱能够 真正用在该用的地方从而达到节约自己消费的目的。 第 3 页第二章 系统概述 2.1 系统需求分析 针对记账软件的性质,用户最基础的的需求是记账。这也是需要着重开发和重 点设计的基础功能。 系统总体功能可以描述为以下几点: (1) 注册功能 (2) 登录功能 (3) 添加账目功能 (4) 查看账目功能 2.2 Android平台介绍 以下图表展示了Android操作系统的主要组成部分: 图2.1 系统架构图 第 4 页以下是系统架构的详细介绍: (1) 应用程序。Android会同一些核心程序包一起发布,包括日历、地图、浏览器 等。所有的应用程序均是用Java语言编写。 (2) 应用程序框架。这种框架可以使开发人员可以完全的访问核心程序所使用的 API框架,简化了组件的使用。同时也使用户可以方便的替换程序组件。 (3) 系统运行库。Android包含一些C/C++库,这些库能被Android系统中不同的 组件使用。一般情况下如果要将Android移植到其他硬件去运行,只需要实现这部分 代码即可。Android也包括了一个核心库,该核心库提供了Java编程语言核心库的大 多数功能。 (4) Linux内核。Android的核心系统服务依赖于Linux 2.6内核,如安全性、内存 管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间 的抽象层。 第 5 页第三章 系统设计 本章描述了软件的各个模块的设计以及整个软件系统的功能框架。本软件使用 了面向对象的设计思想来对整个系统进行设计。 3.1 数据库设计 1、数据的设计 a)建立表 create table 表名 ( 列名 数据类型 约束, 列名 数据类型 约束, 列名 数据类型 约束 ) b)插入数据 insert into 表名(列名,列名) values(值,值) c)删除数据 delete from 表名 where 条件 d)修改数据 update 表名 set 列名=值,列名=值 where 条件 e)查询数据 select 列名,列名 from 数据来源 where 条件 group by 分组列 having 条件 order by 排序列 【asc|desc】 3.2现金日记账的数据库结构 表1:用户表 表名 ACCOUNTS 说明 用户表 字段名 数据类型 约束 说明 备注 USERNAME TEXT 主键 用户名 USERPASS TEXT 密码 表2:账目明细表 表名 JOURNALS 说明 字段名 数据类型 约束 说明 备注 JID INTEGER 主键、 编号 autoincrement JDATE TEXT 日期 JEVENT TEXT 事由 JAMOUNT REAL 金额 第 6 页USERNAME TEXT 用户名 3.2 系统界面设计 表结构设计 软件界面如下: 第 7 页图3.1 登录界面 第 8 页图3.2 创建新账户 第 9 页图3.3 账目列表 第 10 页图3.4 添加账目 第 11 页图3.5按日期查询 第 12 页图3.6查询结果 第四章 系统的实现 4.1 系统文件列表 Activity类: AddActivity 第 13 页LoginActivity MainActivity RegisterActivity Biz类: AccountsBiz JournalsBiz Dao类: AccountsDao JournalsDao Dbutil类: DBHelp Vo类: Accounts Journals 4.2 登录功能的实现 类被初始点击登录按钮后去数据库查询,然后返回结果。关键代码为: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); //按钮绑定 btn_login = (Button) findViewById(R.id.btn_login); btn_register = (Button) findViewById(R.id.btn_register); //设置监听器 Moniter mnt = new Moniter(); btn_login.setOnClickListener(mnt); btn_register.setOnClickListener(mnt); } 监听类,代码为: public class Moniter implements OnClickListener{ @Override 第 14 页public void onClick(View v) { switch (v.getId()) { case R.id.btn_login: //获取界面数据 EditText txtName = (EditText) findViewById(R.id.userNameLG); EditText txtPass = (EditText) findViewById(R.id.passwordLG); String strName = txtName.getText().toString().trim(); String strPass = txtPass.getText().toString().trim(); Accounts user = new Accounts(strName, strPass); AccountsBiz biz = new AccountsBiz(LoginActivity.this); boolean flag = biz.login(user); if(flag){ //登录成功 Intent intent = new Intent(LoginActivity.this, MainActivity.class); intent.putExtra("uname", user.getUserName());//传数据 startActivity(intent); }else{ //登录失败 Toast.makeText(LoginActivity.this, " 用 户 名 或 密 码 错 误 ", Toast.LENGTH_LONG).show(); } break; case R.id.btn_register: Intent intent =new Intent(); intent.setClass(LoginActivity.this, RegisterActivity.class); startActivity(intent); break; default: break; } } } 4.2 注册功能的实现 关键代码: EditText txtName = (EditText) findViewById(R.id.userNameRG); EditText txtPass = (EditText) findViewById(R.id.passwordRG); 第 15 页String strName = txtName.getText().toString().trim(); String strPass = txtPass.getText().toString().trim(); Accounts oneUser = new Accounts(strName, strPass); AccountsBiz biz = new AccountsBiz(RegisterActivity.this); boolean flag = biz.register(oneUser); if(flag){ Toast.makeText(RegisterActivity.this, " 注 册 成 功 , 请 登 录 ", Toast.LENGTH_LONG).show(); RegisterActivity.this.finish(); }else{ Toast.makeText(RegisterActivity.this, " 注 册 失 败 ", Toast.LENGTH_LONG).show(); } 4.3 添加账目的实现 关键代码: //获取文本 EditText txtDate = (EditText) findViewById(R.id.addDate); EditText txtEvent = (EditText) findViewById(R.id.addEvent); EditText txtAmount = (EditText) findViewById(R.id.addAmount); //封装到vo中 Journals ones = new Journals(); ones.setJamount(Double.parseDouble(txtAmount.getText().toString().trim())); ones.setJdate(txtDate.getText().toString().trim()); ones.setJevent(txtEvent.getText().toString().trim()); ones.setUserName(getIntent().getStringExtra("uname")); //调用biz JournalsBiz biz = new JournalsBiz(AddActivity.this); boolean flag = biz.add(ones); //执行结果 if(flag){ Toast.makeText(AddActivity.this, " 添 加 成 功 ", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(AddActivity.this, " 添 加 失 败 ", Toast.LENGTH_LONG).show(); } 第 16 页4.4 业务逻辑层实现 AccountsBiz类: public class AccountsBiz { public Activity ac; public AccountsBiz(Activity ac) { super(); this.ac = ac; } public boolean register(Accounts user) { boolean flag = false; AccountsDao dao = new AccountsDao(ac); long row = dao.insert(user); if (row > 0) flag = true; return flag; } public boolean login(Accounts user) { boolean flag = false; AccountsDao dao=new AccountsDao(ac); flag=dao.search(user); return flag; } } JournalsBiz类: public class JournalsBiz { private Activity ac; public JournalsBiz(Activity ac) { super(); this.ac = ac; } public boolean add(Journals one){ boolean flag =false; 第 17 页JournalsDao dao=new JournalsDao(ac); long row=dao.insert(one); if(row>0){ flag=true; } return flag; } public List getInfo(String name,String date){ List list=new ArrayList(); JournalsDao dao=new JournalsDao(ac); List listOne=dao.searchByNameAndDate(name, date); double sum=0; for(Journals nn:listOne){ list.add(nn.toString()); sum+=nn.getJamount(); } list.add("合计:"+sum); return list; } 4.5 数据库操作的实现 } AccountsDao类: public class AccountsDao { private Activity ac; public AccountsDao(Activity ac) { super(); this.ac = ac; } /** * 注册 */ public long insert(Accounts user){ DBHelp hp = new DBHelp(ac); ContentValues cv = new ContentValues(); cv.put("USERNAME", user.getUserName()); cv.put("USERPASS", user.getUserPass()); 第 18 页return hp.insert("ACCOUNTS", cv); } /** * 登录 */ public boolean search(Accounts user){ DBHelp hp = new DBHelp(ac); String[] columns = {"USERNAME", "USERPASS"}; String[] selectionArgs = {user.getUserName(),user.getUserPass()}; Cursor cur = hp.select(false, "ACCOUNTS", columns, "USERNAME=? and USERPASS=?", selectionArgs, null, null, null, null); System.out.println(user.getUserName().toString()); boolean flag = cur.moveToNext(); System.out.println(flag); cur.close(); return flag; } } JournalsDao类: public class JournalsDao { private Activity ac; public JournalsDao(Activity ac) { super(); this.ac = ac; } //添加消费记录的方法 public long insert(Journals one){ DBHelp hp = new DBHelp(ac); ContentValues cv = new ContentValues(); cv.put("JDATE", one.getJdate()); cv.put("JEVENT", one.getJevent()); cv.put("JAMOUNT", one.getJamount()); cv.put("USERNAME", one.getUserName()); return hp.insert("JOURNALS", cv); } } 第 19 页DBHelp类: public class DBHelp extends SQLiteOpenHelper { private final static String dbName="cashjournal.db"; private final static int DB_VERSION=1; public DBHelp(Context context){ super(context, dbName, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sqlUser="CREATE TABLE ACCOUNTS (USERNAME TEXT primary key,USERPASS TEXT);"; String sqlJournal="CREATE TABLE JOURNALS (JID INTEGER primary key autoincrement,JDATE TEXT,JEVENT TEXT,JAMOUNT REAL,USERNAME TEXT);"; db.execSQL(sqlUser); db.execSQL(sqlJournal); } @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { String sql="DROP TABLE IF EXISTS ACCOUNTS"; String sql2="DROP TABLE IF EXISTS JOURNALS"; db.execSQL(sql); db.execSQL(sql2); onCreate(db); } //查询 public Cursor select(boolean distinct,String tableName,String []columns,String selection,String [] selectionArgs,String groupBy,String having,String orderBy,String limit){ SQLiteDatabase db=this.getReadableDatabase(); return db.query(distinct, tableName, columns, selection, selectionArgs, groupBy, having, orderBy, limit); } //添加 public long insert(String tableName,ContentValues cv){ SQLiteDatabase db=this.getReadableDatabase(); return db.insert(tableName, null, cv); } //修改 public long update(String tableName,ContentValues cv,String whereClause,String[] 第 20 页whereArgs){ SQLiteDatabase db=this.getReadableDatabase(); return db.update(tableName, cv, whereClause, whereArgs); } //删除 public long delete(String tableName,String whereClause,String[] whereArgs){ SQLiteDatabase db=this.getReadableDatabase(); return db.delete(tableName, whereClause, whereArgs); } } 4.6 配置文件的设置 AndroidManifest.xml文件的配置: 第 21 页 第 22 页