《从零开始的记账本开发》第2篇 概要设计

1引言

以下这些是根据《软件工程》里的要求写的概要设计,删改了一些,看看系统结构图和E-R图就行,我的个人空间的资源里有我上传的word文档,需要的同学可以去下载

1.1编写目的

概要设计说明书编制的目的是:说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。

本软件概要设计说明书的读者是系统开发人员或合同约定人员。

1.2背景

开发的系统名称:流水记账本(WasteBook)

开发者:本人

用户:有记账需求的个体用户

实现该软件的计算机网络:软件工程实验室

项目与其他软件,系统的关系:本项目采用C/S原理,服务端主要是为用户提供数据备份。客户端的程序是建立在Android5.1以上,使用Android studio,Java,以及SQLite数据库等为开发软件的应用程序。  

1.3定义

数据流图:数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。

系统的流程图:系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子的形式描绘系统里的每个部件(程序,文件,数据库,表格,人工过程等)。

用户表:存放用户数据,包括密码、头像、昵称,数据备份同步状态

账单表:存放每条记录的信息。

类型表:存放系统提供的类型和用户自定义的类型信息。

预算表:存放用户设置的年预算、月预算、类别预算信息。

2总体设计

2.1需求规定

用户可以随时使用该app来记录支出收入情况,可以增删改查记录。可以管理类型标签,可以饼状图、曲线图显示支出收入情况,并显示前十的支出、收入记录。可以设置预算(按月或按类型),登录之后可以同步信息。

本系统在用户登录,或者使用游客登录之后,即可添加账单信息,账单信息包括类别(支出或收入)、数值大小、类型(【支出】餐饮、购物、交通、娱乐等【收入】工资、兼职、理财等)日期、备注(非必填)。用户添加成功后可在主页查看添加的账单记录,可点击编辑,可左右滑动删除。也可管理类型标签,增删改查、排序标签。

流水记账本APP可以划分为如下几个部分:

  1. 记账管理:查询账单、增加账单、编辑账单、删除账单
  2. 标签管理:添加标签、编辑标签、删除标签、排序标签
  3. 用户信息管理:修改个人信息,包括密码、头像、昵称,数据备份同步,包括账单记录、标签,设置预算。

本系统对性能的规定:

1)系统的更新处理时间应该在可接受的范围内;

2)系统的数据查询时间应该在可接受的范围内;

3)系统的数据统计时间应该在可接受的范围内。

2.2运行环境

1)硬件环境:运行本软件的服务端要求处理器在奔腾Ⅲ以上,内存在512MB以上的计算机。客户端要求处理器频率至少为1Ghz,内存至少为256MB.

2)软件环境:本系统客户端支持的操作系统包仅Android5.1以上;本系统客户端支持的数据库为SQLite;服务端为数据库为:Mariadb,本软件的客户端开发工具为Android Studio,使用的开发语言为JAVA、XML。

2.3基本设计概念和处理流程

本系统的基本设计概念和处理流程如下:

1)系统启动时,激活身份验证模块。

2)通过身份验证后,对系统进行初始化,判断用户身份,导入到不同的处理页面是。

3)系统进入消息循环状态,通过事件驱动机制激活各功能模块,并执行指定模块。

4)各项功能执行完毕后,重新进入消息循环状态。

5)由退出系统事件激活关闭系统模块,退出系统。

2.4结构

 

软件结构图

 

记账管理结构图

 

标签管理结构图

 

用户信息管理结构图

 

数据流图/用例图

顶层:

  • 9
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android手机天气预报项目报告 1.2 开发目标 现有的3G技术和移动互联网技术的快速发展,智能手机功能的不断增强,让基于Android平台的查询需求越来越多。 本软件就是利用现有的网络快速获取网络上的天气信息并显示到手机终端上,为用户提供实时的天气查询和近期天气查询服务,为工作、出行等带来便利。通过Web Service等技术让用户体验到前所未有的移动计算。 第2章 项目设计 2.1 项目总体设计 本软件是一个App Widget应用程序,启动程序后可以进行城市、更新频率的设置,可以通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。这些天气数据是通过后台服务获取的,这个后台服务可以按照一定的时间间隔,通过Google提供的服务获取天气预报信息,并将天气信息保存在数据库中。 该软件的基本功能需求有: (1) 启动App Widget应用程序; (2) 设置界面:对要显示天气预报的城市及更新频率进行设置; (3) 显示界面:通过文字和图片显示当前的天气情况,包括日期、时间、城市、最高温度、最低温度、当前温度等。 (4) 详细界面:在显示出"显示界面"上所有信息的同时用列表的形式显示今后四天的天气情况。 2.2 技术框架设计 2.2.1 开发环境 Android的上层应用程序是用Java语言开发的,一般情况下是基于Dalvik虚拟机的,所以Google公司推荐使用主流的Java集成开发环境Eclipse。而用Java语言进行开发,需要用到SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,需要使用Google提供的Android SDK。同时,要在Eclipse上安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级或下载的工具。 简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发Android手机天气预报项目报告全文共12页,当前为第1页。(1) Java SDK Android手机天气预报项目报告全文共12页,当前为第1页。 (2) Eclipse (3) Android SDK (4) ADT 2.2.2  技术支持 本软件使用基于SOAP(简单对象访问协议)的Web Service技术来实现与服务器端的信息交互,获取网络上的数据。Web Service使用基于XML技术的消息处理,作为基本的数据通讯方式。Web Service建立在一些通用协议的基础上,如HTTP、SOAP、XML、WSDL、UDDI等。各应用程序通过网络协议和规定的一些标准数据格式(HTTP、XML、SOAP)来访问Web Service。 而所有的SOAP消息都使用XML编码。 条SOAP消息就是一个包含有一个必需的SOAP的封装包,一个可选的SOAP标头和一个必需的SOAP体块的XML文档。 XML文档在Android平台上的解析可以通过SAX的方式方便快速的完成。解析Android应用程序中获得的列表数据XML文件,对XML文件中的数据实现分离,得到指定的所需要的信息,然后执行存入数据库或显示到页面等相应的处理。 Android开发组Activity、Intent Receiver、Service、Content Provider等,可以实现不同页面之间的跳转;数据的获取和实现与数据库的实时交互;不同页面和进程间数据的共享。 2.3 数据库设计 本软件中有两部分数据需要存储,一个是显示页面的数据,另一个是详细页面的数据。但是数据量都不是很大,因此可以选择SQLite数据库作为存储数据的方法,建立数据库forecasts.db,并且建立两张表weather_widget和weather_forecast,分别存储显示页面的数据和详细页面的数据。 表2-1 详细页面的数据库表weather_forecast的结构 属性 数据类型 说明 _id integer 自动增加的主键 widgetId integer 组件的ID号 dayOfWeek text 周几 low integer 最低温度 hight integer 最高温度 icon text 显示天气的图标 condition text 未来天气情况 Android手机天气预报项目报告全文共12页,当前为第2页。表2-2 显示页面的数据库表weather_widget的结构 Android手机天气预报项目报告全文共12页,当前为第2页。 属性 数据类型 说明 _id integer 存储Widget组件id city text 进行天气信息查询的城市名 updateMilis
好的,下面是一个简单的Python记账本的课程设计: ## 1.需求分析 本记账本需要实现以下功能: 1. 记录每天的收入和支出。 2. 可以查询某一天或某一段时间的收支情况。 3. 可以计算某一段时间的总收入和总支出。 4. 可以输出每个月的总结报表。 ## 2.设计思路 本记账本采用文件存储的方式,每一天的收支情况以及月度总结都保存在一个文本文件中。具体设计思路如下: 1. 创建一个`Record`类,用于记录每一笔收支情况,包括日期、类型(收入或支出)、金额和备注。 2. 创建一个`Account`类,用于管理所有的收支记录。这个类包括以下方法: - `add_record(record)`:添加一条新的收支记录。 - `query(date)`:查询某一天的收支情况。 - `query_range(start_date, end_date)`:查询某一段时间的收支情况。 - `total_income(start_date, end_date)`:计算某一段时间的总收入。 - `total_expense(start_date, end_date)`:计算某一段时间的总支出。 - `report_monthly(year, month)`:生成某个月的总结报表。 3. 创建一个`FileManager`类,用于管理所有的文本文件。这个类包括以下方法: - `get_file_name(date)`:根据日期生成对应的文件名。 - `write_record(record)`:将一条收支记录入对应的文件中。 - `read_records(date)`:从对应的文件中读取所有的收支记录。 ## 3.代码实现 下面是一个简单的Python记账本的代码实现。具体实现过程中,还需要处理一些异常情况和输入参数的格式,这里只展示主要的代码结构。 ```python import os import datetime class Record: def __init__(self, date, type, amount, note): self.date = date self.type = type self.amount = amount self.note = note class Account: def __init__(self): self.records = [] def add_record(self, record): self.records.append(record) def query(self, date): result = [] for record in self.records: if record.date == date: result.append(record) return result def query_range(self, start_date, end_date): result = [] for record in self.records: if start_date <= record.date <= end_date: result.append(record) return result def total_income(self, start_date, end_date): total = 0 for record in self.records: if record.type == 'income' and start_date <= record.date <= end_date: total += record.amount return total def total_expense(self, start_date, end_date): total = 0 for record in self.records: if record.type == 'expense' and start_date <= record.date <= end_date: total += record.amount return total def report_monthly(self, year, month): start_date = datetime.date(year, month, 1) end_date = datetime.date(year, month, 1) + datetime.timedelta(days=30) income = self.total_income(start_date, end_date) expense = self.total_expense(start_date, end_date) balance = income - expense print(f'{year}年{month}月总收入:{income}元') print(f'{year}年{month}月总支出:{expense}元') print(f'{year}年{month}月结余:{balance}元') class FileManager: def __init__(self, data_dir): self.data_dir = data_dir def get_file_name(self, date): return os.path.join(self.data_dir, f'{date}.txt') def write_record(self, record): file_name = self.get_file_name(record.date) with open(file_name, 'a') as f: f.write(f'{record.type},{record.amount},{record.note}\n') def read_records(self, date): file_name = self.get_file_name(date) if not os.path.exists(file_name): return [] records = [] with open(file_name, 'r') as f: for line in f: parts = line.strip().split(',') type = parts[0] amount = float(parts[1]) note = parts[2] record = Record(date, type, amount, note) records.append(record) return records ``` ## 4.使用示例 下面是一个简单的使用示例,展示了如何创建一个记账本、添加记录、查询记录、计算总收支等功能。 ```python data_dir = '/path/to/data' file_manager = FileManager(data_dir) account = Account() # 添加记录 record1 = Record(date=datetime.date(2021, 1, 1), type='income', amount=1000, note='工资') record2 = Record(date=datetime.date(2021, 1, 3), type='expense', amount=200, note='餐饮') record3 = Record(date=datetime.date(2021, 1, 5), type='expense', amount=300, note='购物') file_manager.write_record(record1) file_manager.write_record(record2) file_manager.write_record(record3) account.add_record(record1) account.add_record(record2) account.add_record(record3) # 查询记录 records = account.query(datetime.date(2021, 1, 3)) for record in records: print(record.date, record.type, record.amount, record.note) # 计算总收支 total_income = account.total_income(datetime.date(2021, 1, 1), datetime.date(2021, 1, 31)) total_expense = account.total_expense(datetime.date(2021, 1, 1), datetime.date(2021, 1, 31)) print('总收入:', total_income) print('总支出:', total_expense) # 生成月度总结报表 account.report_monthly(2021, 1) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值