...wd...齐 齐 哈 尔 大 学 现代交换技术应用课程设计题 目 基于Java的美食步行街销售记录查询系统设计 学 院 通信与电子工程学院 专业班级 xXXXXXXXXxxxxxx 学生姓名 xxxxxxxxxxxxxxxxxxxxx 指导教师 xxxxxxxxxxxxxx 摘 要随着计算机的普及和计算机科学技术的飞速开展,人们开场越来越多地利用计算机来解决我们生活中的实际问题了近几年来,由于工作的忙碌与生活频率的加快,人们的相关的事务信息量也随之增多,健忘的事也越来越多,为了改变人们的易记忘的事务,特意开发美食步行街销售记录查询系统以前手功的账簿管理,是纯手工书写,不仅慢而且不易储存,造成数据的遗漏,过失,从而给个人的生活带来不便因此,开发一个界面友好,功能全面,操作简单的基于JAVA构造的美食步行街销售记录查询系统变得十分重要,这也正是本系统开发的目的和意义所在。
此美食步行街销售记录查询管理系统将个人的生活事务与工作事务信息管理进展了有机结合,能有效地管理个人信息资源,使工作事务与个人事务两不误,有效的信息组合条件查询,更新,用户的密码设置和帐本管理等功能,从而提升个人的生活质量与工作效率,满足了现代个人信息管理的需要 关键词:销售记录查询系统 ;JAVA ;个人信息AbstractWith the popularity of computer and the computer the rapid development of science and technology, people began to used more and more on computers to solve practical problems in our life. In recent years, due to the human resource system reform, all levels of the personnel department of human resources information management computerized demand is growing. For most of the enterprise managers, how effective management enterprise human resources, make its maximum benefit, is each enterprise managers continuously problems and challenges. So enterprise revenue and expenditure management become the enterprise management in the priority. Previous human resource management even using human processing method, which is not only a low efficiency, is not easy to preserve and search, more will due to human reason, cause data of errors, omissions, material misstatement, thus brings to the enterprise significant loss. Therefore, development of a friendly interface, comprehensive functions, operation simple based on B/S structure of enterprise revenue and expenditure management system has become very important, it is the systematic development of purpose and meaning. This system will be adopted at present more advanced development tools and Server database design. This enterprise revenue and expenditure management system will personnel management and office automation management organically, and can effectively management enterprise inside all sorts of human resources information, causes the enterprise to each department staff can timely and easily get to personnel, and various kinds of information for the combination of information inquiry, update, conditions administrator password setup and wage statistics distribution functions, thus promotes the enterprise the work efficiency and competitiveness, and meet the needs of modern enterprise management. · Key words:Consumption record query management system;java ;personal information目 录摘 要IAbstractII第1 章 绪论 11.1 课题背景11.2 目的和意义 11.3 研究内容及目标 11.4 Java简介 21.4.1 Java的特点31.5 系统开发平台 4第2 章 可行性分析 52.1 经济可行性 52.2 技术可行性 52.3 操作可行性 6第3 章 需求分析 73.1 功能需求 73.1.1 商家收支管理系统的规划 83.1.2 商家收支管理系统的需求分析 83.1.3 商家收支管理系统的功能概述 93.2性能需求 9第4章 系统的软件设计 114.1开发与设计的总体思想 114.2系统模块构造图 114.2.1录入系统模块 124.2.2查询系统模块 134.3调试与测试 14结论 18参考文献 19附录1 20附录2 30致谢 37第1 章 绪论1.1 课题背景要想通过美食步行街销售记录查询系统来提高个人的管理水平,光是选取一个好的或比较好的、适合本个人特点的商家收支管理软件还是远远不够的。
在以人为本的观念的熏陶下,美食步行街销售记录查询管理系统在组织中的作用日益突出但是,人员的复杂性和组织的特有性使得销售记录的管理成为难题,基于这个时代背景,销售记录管理将成为重要内容,美食步行街销售记录查询管理系统成为许多商家中非常重要的局部美食步行街销售记录查询管理系统的作用之一是为财务资源规划,建设人事档案它的出现使得人事档案查询、调用的速度加快,也使得准确分析大量财务的知识、经历、技术、能力和职业抱负成为可能从而,实现美食步行街销售记录查询管理系统的标准化、科学化、数字化和网络化是很有必要的 1.2 目的和意义随着美食步行街销售记录查询系统的网络化和系统化的日益完善,美食步行街销售记录查询管理系统在商家管理中越来越受到个人管理者的青睐设计该系统的目的是记录收入和支出的每一笔账;从多种角度分析收入和支出;根据分析结果调整优化自己的收支美食步行街销售记录查询管理系统的功能全面、操作简单,可以存放个人的 根本信息、通讯录和财务管理,能够方便快捷地掌握个人健忘的个人信息、通讯录,财务状态等,降低商家收支管理的人力和本钱,并提高商家收支管理的效率使商家管理真正实现网络化、系统化和科学化 1.3 研究内容及目标目前在市面上流行的商家收支管理系统很少,因此对于每个商家来说,具有特殊性,因此需要设计一个操作方便,功能实用,简单明了的商家收支管理系统。
作为计算机应 用的一局部,为了使商家收支管理工作具有较高的使用价值本系统使用计算机对商家 收支信息进展管理,具有手工管理所无法比较的优点例如检索迅速,查找方便,可靠性高,存储量大,保密性好,本钱低等这些优点能够极大提高商家收支管理的效率 根本信息的添加、修改、删除和查询 我国在商家收支管理的开展过程中遇到了不少问题与阻力,但随着中间阶层的兴起 和壮大,商家收支管理必将成为金融机构瞄准的目标入世后,外资银行全面进入国内市场,并且随着国内截图收支管理的逐渐成熟,商家收支管理将日趋活泼,相信在不就得将来,商家收支管理的开展前景将是十分广阔有人的,且随着同业竞争的家具,商家收支管理也将更趋专业化目前我国在商家收支管理系统上应用的软件也很多 Java 美食步行街销售记录查询管理系统主要实现了商家收支信息的管理,便于管理美食街收支的各项信息下面是系统介绍:java 美食步行街销售记录查询管理系统主界面有录入模块,查询模块,俩个模块主框架包括修改个人信息,日程信息管理,即时信息管理,日常收支管理和安全退出系统几大模块[1]1.4 Java简介Java语言是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
Java语言不同于一般的编译语言和直译语言它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行〞的跨平台特性它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、 、闹钟、烤面包机等家用电器的控制和通讯问题由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项方案就在Oak几近失败之时,随着互联网的开展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java〞的名称正式发布[2] Java 编程语言的风格十分接近C、C++语言Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java舍弃了C ++语言中容易引起错误的指针〔以引用取代〕、运算符重载〔operator overloading〕、多重继承〔以接口取代〕等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧在 Java SE 1.5 版本中,Java 又引入了泛型编程〔Generic Programming〕、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容Java 语言靠群体的力量而非公司的力量〞是 Sun 公司的口号之一,并获得了广阔软件开发商的认同这与微软公司所倡导的注重精英和封闭式的模式完全不同 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、强健、安全与系统无关、可移植、高性能、多线程和动态的语言 Java 平台是基于 Java 语言的平台这样的平台非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿 Java 的C#语言[3]1.4.1 Java的特点1.平台无关性平台无关性是指Java能运行于不同的平台Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间使用Java编写的程序能在世界范围内共享Java的数据类型与机器无关,Java虚拟机〔Java Virtual Machine〕是建设在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的[4]。
2.安全性Java的编程类似C++,学习过C++的读者将很快掌握Java的精华Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以防止病毒通过指针侵入系统Java对程序提供了安全管理器,防止程序的非法访问3.面向对象Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用程序员只需把主要精力用在类和接口的设计和应用上Java提供了众多的一般对象的类,通过继承即可使用父类的方法在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类[5]4.分布式Java建设在扩展TCP/IP网络平台上库函数提供了用和FTP协议传送和承受信息的方法这使得程序员使用网络上的文件和使用本机文件一样容易5.强健性Java致力于检查程序在编译和运行时的错误类型检查帮助检查出许多开发早期出现的错误。
Java自己操纵内存减少了内存出错的可能性Java还实现了真数组,防止了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能6.解释型我们知道C,C++等语言,都是针对CPU芯片进展编译,生成机器代码,该代码的运行就和特定的CPU有关Java不像C或C++,它不针对CPU芯片进展编译,而是把程序编译成称为自字节码的一种“中间代码〞字节码是很接近机器码的文件,可以在提供了java虚拟机〔JVM〕的任何系统上被解释执行7.动态java程序的 根本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C++那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译1.5 系统开发平台 本系统运行于当今主流PC 平台,支持各种操作系统,由比较强的平台适应性,可以满足大多数用户要求 1) 硬件环境:台式计算机(PC)一台,硬件处理器是英特尔酷睿i5,内存是 2GB,硬 盘空间是500GB2) 软件环境:Windows 7 操作系统。
第2 章 可行性分析可行性分析本章对商家收支管理系统进展有效的可行性分析可行性分析是世界上普遍采用的一种研究工程工程是否可行的科学技术主要是在系统调查的根基上,针对新系统的开发是否具备必要性和可能性的一种分析和研究,主要会从经济、技术、社会的方面来进展分析和研究,以减少工程开发风险,防止人力、物力和财力的浪费 2.1 经济可行性可行性分析是通过对工程的主要内容和配套条件,如市场需求、设备选型、环境影 响、资金筹措、盈利能力等,从技术、经济、工程等方面进展调查研究和分析比较,并 对工程建成以后可能取得的财务、经济效益及社会环境影响进展预测,从而提出该工程是否值得投资和如何进展建设的咨询意见,为工程决策提供依据的一种综合性的系统分 析方法可行性分析应具有预见性、公正性、可靠性、科学性的特点可行性研究主要内容是要求以全面、系统的分析为主要方法,经济效益为核心,围绕影响工程的各种因素,运用大量的数据资料论证拟建工程是否可行对整个可行性研 究提出综合分析评价,指出优缺点和建议为了结论的需要,往往还需要加上一些附件,如试验数据、论证材料、计算图表、附图等,以增强可行性报告的说服力商家收支管理是商家管理中的一个重要组成局部,涉及到商家管理的各个方面。
商家收支管理水平的提高,能够带动个人各生活与工作两方面水平的提升利用计算机对个人的人力资源进展管理,使人事管理人员从日常琐碎的管理工作中解脱出来,更好地协调个人生活与工作中的事务,使个人能力得以充分地发挥从资源配置的角度衡量工程的价值,评价工程在实现区域经济开展目标、有效改善环境、提高人民生活等方面的效益[6] 2.2 技术可行性 在技术软件方面本系统选择了当今流行的JAVA开发环境来设计,使用SQL Server 2008 数据库存储数据同时采用先进的 SSH 框架来进展设计,这些软件都很安全,可靠,所以在软件方面是可行的在硬件方面,选择了2G 的内存,硬盘为 500G 的来存储数据,可以满足系统的设计开发从而运行速度也会更快这方面没有疑异硬件方面也是可行的 2.3 操作可行性 本系统具有良好的操作界面系统功能、显示内容简单明了操作者不必具有 较高的计算机专业知识,也不必进展专门培训,只要经过短时间的操作就可以很快掌握并熟练使用,加快公司的内部管理,提高工作效率Java 商家收支管理系统具有易操作的界面,只要简单阅读使用手册,便能很容易的使用该系统这也正为大多数人提供了方便综上所述,此系统开发目标已明确,在技术和经济等方面都可行,并且投入少、见效快。
因此系统的开发是完全可行的[7] 第3 章 需求分析需求分析所谓“需求分析〞,是指对要解决的问题进展详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么 在软件工程中,需求分析是软件工程中的一个关键过程在这个过程中,系统分析 员和软件工程师确定顾客的需要只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法 3.1 功能需求功能需求〔functional requirement〕为一软件工程用语,功能需求定义一个软件系统或组件的功能,也是一个系统需提供的功能及服务[1]功能可以用一组输入、行为及输出的组合来表示功能需求可以是计算、技术细节、数据处理或其他说明系统希望达成功能的内容功能需求会以非功能性需求〔或是质量需求〕为其根基,后者会描述设计或实现时的限制条件〔例如性能需求、保安性或可靠度等〕有时需求分析师会 在收集许多功能需求后,会依功能需求创立一系列的用例功能需求的层次构造为:用户或利益相关者的需求->功能->用例->业务规则,每一个用例都会描述一个到多个功能 需求所对应的行为不过有时需求分析师也会从一些用例开场,再从用例中找出用例中需要用的功能需求。
3.1.1 商家收支管理系统的规划随着技术的不断开展,逐渐产生基于 Internet 的 MIS 系统〔管理信息系统〕,基于Internet 上的 MIS 系统是对传统 MIS 系统概念上的扩展,它不仅可以用于高层决策,而且可以用于进展普通的商务管理基于 Internet 上的MIS 系统,弥补了传统 MIS 系统的缺乏,充分表达了现代网络时代的特点随着 Internet 技术的高速开展,因特网必将成为人类新社会的技术基石基于 Internet 的MIS 系统必将成为网络时代的新一代管理信息系统,前景极为乐观MIS中,处理的对象是抽象成数据的信息,因此,MIS有着自己的巨大优势[8] 因为本系统为商家收支管理系统,也属于一种先进的管理信息系统,所以在本系统中也充分利用了 MIS 的理论概念可以更好的为个人制定个人规划,并带来更高的效益 3.1.2 商家收支管理系统的需求分析在12 世纪信息技术飞速开展的背景下,人们生活的多元化的趋势下,传统的手工管理收支信息已经跟不上时代的步伐,人们需要在日趋复杂的销售环境以及收入多元化得环境下对商家的收支信息进展高效的管理,因此Web商家收支信息管理系统将为千万户商家提供新时代,新技术,新方式的管理方式。
系统所需的功能主要更具商家的财务信息的收入支出进展系统的划分系统主要分为一下几个子功能:资金管理,对商家的银行存款,现金进展管理,对商家的债务信息管理;收支信息的管理,对收支信息进展 增加、修改、删除操作;收支报表的生成,对收支信息进展日、月、年等的分类统计;个人信息管理,查看、修改用户信息需求分析过程是整个系统开发的重要阶段,它主要是为了明确该系统应该做什么,而不是怎么做,要通过对用户需求的分析和数据库的初步设计,分析的成功否,决定着整个系统功能的完善性以及稳定性在该阶段需求分析人员需要确定整个产品的功能要求,并且将现实事务抽象成对象并建模 3.1.3 商家收支管理系统的功能概述Java 商家收支管理系统对需求的分析,该系统的需求主要有用户管理,收支工程管理,商家收支报表管理,退出管理等为方便操作,从多方面把用户的商家收入,商家支出,统计等财产管理的数据,以及他们的生活节余和销售统计用科学统计的方法把这些数据存储在 java 商家收支管理系统之中,以表格的形式说明收入支出两者之间的关系为商家财产的有效管理和合理分配提供帮助本文着重论述了改系统的功能与实现如:数据流程与存储,管理等功能,并对关键的技术作了较详细的介绍。
本系统实现以下目标:1.操作简单方便、界面简洁大方;2.方便快捷的理财功能;3.智能化提升商家财务的功能;4.快速查看商家收支管理信息的功能; 5.按个人用户实现月统计的功能; 6.系统运行稳定、安全可靠 日程管理模块主要为管理日常的日程信息包括录入日程和查询日程录入日程就是通过点击新增日程按钮,来录入当前需要记录的日程;查询日程则是用户可以对已录入的日程按照日期来查询记事管理模块分为录入记事和查询记事录入记事就是录入当前需要记录的重大事情;查询记事就是可以按照日期对已经录入的记事进展查询销售管理模块主要分为录入销售、管理销售和查询销售三个局部录入销售 就是对当前的销售情况进展录入,以便记录以及日后的查询;管理销售就是可以 对已经录入的销售进展增加修改删除;查询销售就是当前用户可以查询已经录入的销售信息3.2性能需求一个管理系统的设计思想是对一个系统的根基的知识,一个合理的销售管理系统应该就被操作简单,可视化界面,功能全面,运行速度快等特点通过美食步行街销售记录查询管理系统可以是管理者快速,高效的完成日常收支的管理,使商家能集中精力实现个人战略目标美食步行街销售记录查询管理系统主要具备一下特性:1. 实用性:系统从用户角度为出发点,一切以用户的方便为准则。
切实了解用户的实际需求,尽量到达满意的效果2. 灵活性:通过JAVA的设计,可以减少许多代码与页面之间的重复性,从而大大的提高了软件的灵活性,用户可以根据不同的需要,选择对应的局部,非常方便灵活3. 复用性:不系统采用模块的方法进展设计,对各个模块尽可能的到达高内聚,低耦合的程序,来提高系统的复用性第4章 系统的软件设计4.1开发与设计的总体思想创立主类Client类控制整个程序的调控与连接,该类负责创立美食步行街销售记录查询程序的主窗口,含有main方法,程序从该类开场执行并创立Amount类、AmountManager类、AmountUtils类 ,BeanFactory类 ,Menu类其中Amount类是一个实体类,描述了文件的记录,AmountManager类是卖出美食数量的管理类包含查询系统的程序,打印美食清单BeanFactory类是集合生成类,刷新缓存Menu类是主菜单类4.2系统模块构造图本系统分为两个模块一个是录入美食数量模块,另一个是美食数量查询模块如以下图:4.2.1录入系统模块1.录入卖出美食的数量2.查询今天卖出的数量3.查询昨天卖出的数量4.查询上月卖出的数量5.查询本月卖出的数量6.查询今年卖出的数量0.退出当前系统请选择美食类型 :1.干锅鸡拌饭2.香酥鸡蛋灌饼3.麻辣烫4.水煮肥羊5.功夫鸡排饭6.土豆丝炒饭7.冷面8.寿司9.煎饼果子 输入录入的食量 任意键返回4.2.2查询系统模块1.录入卖出美食的数量2.查询今天卖出的数量3.查询昨天卖出的数量4.查询上月卖出的数量5.查询本月卖出的数量6.查询今年卖出的数量0.退出当前系统查询今天昨天上月本月今天卖出美食的数量 任意键返回 得到查询结果4.3调试与测试在这次课程设计中,程序编写过程中遇到了很多的问题,各种函数的运用也让人头疼,在上机编译运行过程中出现了很多的错误,例如:各种数据类型的定义,函数的调用等等。
但最终还是在教师同学的帮助下进展了各种代码的编写与修改,最终程序成功的运行下面是各个模块的界面图主菜单函数图4.3.1录入系统 图4.3.2查询今天卖出的数量图4.3.3查询昨天卖出的数量图4.3.4查询上个月买出的数量图4.3.5查询本月卖出的数量图4.3.6查询今年卖出的数量图4.3.7退出系统图4.3.8结论美食步行街销售记录查询管理系统在现代个人生活中与工作中至关重要的,在当今这个计算机信息管理剧烈竞争的社会,为了提高个人工作效率,保证美食步行街销售记录查询管理的质量,使销售记录真正实现人力资源的网络化,系统化和科学化,快速而准确的为个人指定好的经营方针与决策,在有限的时间内万成工作任务及到达预期的目的所以,开发美食步行街销售记录查询管理系统是有必要的在本软件的开发过程中,首先对本系统的整体进展了设计,确定了系统应该具有效的可行性分析,其中分别从经济,技术和操作的可行性进展了分析在确定了本系统的软件开发要做什么,怎么做,然后着手与软件代码的实现,代码实现过程中本系统的软件开发环境主要选择了JAVA进展设计。
最后,对本系统测试,测试系统的模块和内部逻辑,测试本系统具有较高的稳定性和实用性 现阶段体统还处于初始阶段,当然由于时间和团队设计方法问题,软件在技术方面还是存在着很多缺乏之处,希望在今后的学习过程中可以进一步的改良和调整,在这次设计中我积累了许多实际经历,让我在将来的工作中更有信心做出更大的成绩参考文献[1] Eric. Java编程思想[M]. 第4版. 机械工业出版社, 机械工业出版社. [2] 杜波依斯. MySQL技术内幕[M]. 第4版. 人民邮电出版社 , 2011年07月. [3] 林信良. JSP & Servlet学习笔记[M]. 清华大学出版社, 2012年05月. [4] 张峋, 杨三成. 关键技术:JSP与JDBC应用详解[M].中国铁道出版社, 2010年11月. [5] 张银鹤. 点石成金:JSP+Ajax网站开发典型实例[M].电子工业出版社, 2009年01月. [6] Weiss, MA. 数据构造与算法分析:Java语言描述[M]. 第2版. 机械工业 出版社, 2009年01月. [7] Metsker S J. Java设计模式[M]. 第2版. 电子工业出版社, 2012年09 月. [8] 孙卫琴. Tomcat与Java Web开发技术详解[M]. 第2版. 电子工业出版 社, 2009年01月. [9] 刘京华 等. Java Web整合开发王者归来[M]. 清华大学出版社, 2010年 01月. [10] 贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉:华中科 技大学, 2006年4月 附录1/** * 建设一个实体类。
描述了文件的一条记录 * */class Amount{ String year; String mouth; String day; // 创立统一路径,方便将来的引用 public static final String MONEY_PATH = "d:/demo/amount.data"; private String id; private String createDate; private String type; private int amount; public void setId (String id){ this.id = id; } public String getId(){ return id; } public void setCreateDate (String createDate){ this.createDate = createDate; } public String getCreateDate(){ return createDate; } public void setType (String type){ this.type = type; } public String getType(){ return type; } public void setAmount (int amount){ this.amount = amount; } public int getAmount(){ return amount; } public String toString(){ return "id为 :" + id + ", 创立日期 :" + createDate +", 类型 :" + type + "卖出数量 :" + amount; }}/** * 对 卖出各类美食的管理 * */import java.io.*;import java.util.*;import java.text.*;class AmountManager{ BufferedReader br = null; //打印美食类型 public void print() throws Exception{ System.out.println("请选择美食类型 :"); System.out.println("1.干锅鸡拌饭"); System.out.println("2.香酥鸡蛋灌饼"); System.out.println("3.麻辣烫"); System.out.println("4.水煮肥羊"); System.out.println("5.功夫鸡排饭"); System.out.println("6.土豆丝炒饭"); System.out.println("7.冷面"); System.out.println("8.寿司"); System.out.println("9.煎饼果子"); br = new BufferedReader(new InputStreamReader(System.in)); String typeStr = br.readLine(); int type = Integer.parseInt(typeStr); //进展选择 switch(type){ case 1: //进展数据的录入 save("干锅鸡拌饭"); break; case 2: //进展数据的录入 save("香酥鸡蛋灌饼"); break; case 3: //进展数据的录入 save("麻辣烫"); break; case 4: //进展数据的录入 save("水煮肥羊"); break; case 5: //进展数据的录入 save("功夫鸡排饭"); break; case 6: //进展数据的录入 save("土豆丝炒饭"); break; case 7: //进展数据的录入 save("冷面"); break; case 8: //进展数据的录入 save("寿司"); break; case 9: //进展数据的录入 save("煎饼果子"); break; } } //完成,统一保存 //@Param type : 干锅鸡拌饭,香酥鸡蛋灌饼。
private void save(String type)throws Exception{ System.out.println("请录入卖出"+type+"的数量 :"); String amount = br.readLine(); File file = new File(Amount.MONEY_PATH); String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); StringBuffer sb = new StringBuffer(""+ new Date().getTime()); sb.append(","); sb.append(dateStr); sb.append(","); sb.append(type); sb.append(","); sb.append(amount); //保存到文件 //OutputStream os = new FileOutputStream(file); //os.write(sb.toString().getBytes()); //os.close(); OutputStream os = new FileOutputStream(file,true); PrintStream ps = new PrintStream(os); //进展检查 是不是有重复的内容。
如果有就不保存 // Amount a = new Amount(); a.setCreateDate(dateStr); a.setType(type); boolean flag = AmountUtils.check(a); //如果检查 flag 为true ,说明找到了数据重复 if(flag){ System.out.println("不能重复录入!!!"); }else{ ps.println(sb.toString()); //刷新缓存 BeanFactory.refresh(); } ps.close(); //ps.println(sb.toString()); System.out.println("按任意键返回"); br.readLine(); } public int print(String custom) throws Exception{ int sum = 0; if("今天".equals(custom)){ String day = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); return computeSum(day); } if("昨天".equals(custom)){ Calendar calendar = Calendar.getInstance(); //找到昨天 calendar.add(Calendar.DAY_OF_MONTH,-1); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; String monthStr = month<10?"0"+month:month+""; int date = calendar.get(Calendar.DATE); String dateStr = date<10?"0"+date:date+""; String day = year +"-" + monthStr + "-" + dateStr; return computeSum(day); } if("本月".equals(custom)){ //int sum =0; Calendar calendar = Calendar.getInstance(); int month = calendar.get(Calendar.MONTH) + 1; String monthStr = month<10?"0"+month:month+""; //找到所有数据 Map amountMap = BeanFactory.getAmountMap(); //取出所有数据,然后遍历比较 Collection allAmount = amountMap.values(); //加强型for for(Amount a : allAmount){ if(monthStr.equals(a.mouth)){ sum += a.getAmount(); } } //return sum; } if("上月".equals(custom)){ //int sum =0; Calendar calendar = Calendar.getInstance(); int month = calendar.get(Calendar.MONTH) ; String monthStr = month<10?"0"+month:month+""; //找到所有数据 Map amountMap = BeanFactory.getAmountMap(); //取出所有数据,然后遍历比较 Collection allAmount = amountMap.values(); //加强型for for(Amount a : allAmount){ if(monthStr.equals(a.mouth)){ sum += a.getAmount(); } } //return sum; } if("今年".equals(custom)){ //int sum =0; Calendar calendar = Calendar.getInstance(); String year = calendar.get(Calendar.YEAR)+""; //找到所有数据 Map amountMap = BeanFactory.getAmountMap(); //取出所有数据,然后遍历比较 Collection allAmount = amountMap.values(); //加强型for for(Amount a : allAmount){ if(year.equals(a.year)){ sum += a.getAmount(); } } //return sum; } return sum; } private int computeSum(String day){ int sum = 0; //找到所有数据 Map amountMap = BeanFactory.getAmountMap(); //取出所有数据,然后遍历比较 Collection allAmount = amountMap.values(); //加强型for for(Amount a : allAmount){ if(day.equals(a.getCreateDate())){ sum += a.getAmount(); } } return sum; }}附录2/** * 集合数据的生成 */import java.io.*;import java.util.*;class BeanFactory{ private final static Map amountMap= new HashMap(); static{ //刷新缓存 refresh(); } public static Map getAmountMap(){ return amountMap; } public static void refresh(){ try{ // id , createDate, type, money // 把上面的值,进展了拆分 // 数组有顺序 // trim 返回的是一个副本 //创立一个集合,进展查找 //读取文件,把amountMap填充满 File file = new File(Amount.MONEY_PATH); BufferedReader br = new BufferedReader(new FileReader(file)); String temp = null; while((temp = br.readLine()) != null){ //trim()返回一个副本去掉空白 temp = temp.trim(); if(!"".equals(temp)){ String[] values = temp.split(","); Amount amount = new Amount(); amount.setId(values[0]); amount.setCreateDate(values[1]); //将2015-6-23再次拆分 提炼出 ,年,月,日 String[] va = values[1].split("-"); amount.year=va[0]; amount.mouth = va[1]; amount.day = va[2]; amount.setType (values[2]); //把String 变为 int 类型 amount.setAmount ( Integer.parseInt(values[3])); //储存到 map中 amountMap.put(values[0],amount); } } }catch(Exception e){ //e.printStackTrace(); try{ File file = new File(Amount.MONEY_PATH); file.createNewFile(); }catch(Exception ee){ ee.printStackTrace(); } } }}/** * 主程序,main方法的调用 * */import java.io.*;class Client{ static{ new BeanFactory(); System.out.println("美食步行街各类美食录入与查询APP"); } public static void main(String[] args){ printMenu(); } public static void printMenu(){ BufferedReader br = null; try{ br = new BufferedReader(new InputStreamReader(System.in)); while(true){ System.out.println("============================================="); //打印主菜单 Menu.print(); System.out.println("请输入要选择的选项 :");// 键盘输入的值:是个字符串 String typeStr = br.readLine();//System.out.println("键盘输入的值:" + type);// 分支语句// 把键盘输入的字符串,变成数字,因为,switch需要数字, jdk6 : 除了long类型。
char, 枚举类型 String typeStr = br.readLine(); //String 类型 转为 int 类型 用于switch语句 int type = Integer.parseInt(typeStr); 。