J2SE实战项目——信用卡管理系统

信用卡管理系统

前言:做是做好了,但是我可能没有完全弄明白项目需求,编程中计算也可能有不准确的地方~学完java基础,想实战的朋友不妨做下这个项目哦~然后看我的答案做参考,一起改进,欢迎讨论!~

项目整体需求:


具体项目需求请到下面链接下载:
链接: http://pan.baidu.com/s/1dD7TFxv  密码: 4ymd

编程思路:

·由于没有利用到数据库,肯定需要用到对象流,因此我认为需要写一个类用于读写对象。
·另一个是计算,大家看文档知道:
总信用额=可用信用额+预存金额
public double getCreditTotal() {
		return creditable+this.creditPresent;//可用信用额+预存金额
	}

可取现金额=可用信用额/1.1
public double getCreditcash() {
		return this.creditable / 1.1;
	}

因此可取现金额和总信用额,都是和可用信用额挂钩的,我们需要在它们的geter里设置好这些计算公式。
public void setCreditable(double creditable) {
		i++;
		if (i == 1) {// 只有第一次才会赋值,其他情况不会?可以吗?
			this.creditini = creditable;
		}
		this.creditable = creditable;
		// 总信用额=可用信用额+预存金额
		this.creditTotal = creditable + this.creditPresent;
		// 可取现金额=可用信用额/1.1
		this.creditcash = creditable / 1.1;
	}

在账户信息类中注意有个属性是private double creditini;
这个属性是用来记录信用额最初的可用信用额的,第一次设置可用信用额之后,这个属性的值就不变化了,以后如果还款超过了这个值,就需要把超过的部分放到预存金额,不然的话,可用信用额可以很大(还款多的时候),这是不符合实际的吧~
利用geter中的代码:
i++;
		if (i == 1) {
			this.creditini = creditable;
		}

这样,在初始化一张信用卡之后,creditini这个属性就确定不变了(不知道还有什么方法可以做到?),以后判断如果可用信用额超过这个数字,就把超过的部分加到预存金额
·文档里给出的框架基本上够用了,但是用户登录一块,我们需要多加一个参数,把用户对象传进入,不然生成账单的时候,不知道是谁的。
·需要用对象流读写的类记得实现Serializable接口。
我认为的难点基本上就这些。

下面是所有代码和注释:

说明:三个包

一、lance.creditcardsys.data;放数据、数据操作类等

package lance.creditcardsys.data;
//账户信息类,用于存储账户的各种信息,每次生成一个账户信息类对象,都要放到List里面,然后把List写入磁盘
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class AccountVo implements Serializable {
	private String cardNo;
	private String passWord;
	private String userName;
	private String settlementDate;
	private double creditTotal;
	private double creditable;
	private double creditcash;
	private double creditower;
	private double creditPresent;
	private int state = 1;
	private double creditini;
	private int i = 0;

	public AccountVo() {
		super();
	}

	public AccountVo(String cardNo, String passWord, String userName,
			double creditable) {
		this.cardNo = cardNo;
		this.passWord = passWord;
		this.userName = userName;
		// 生成一个当前时间
		SimpleDateFormat simf = new SimpleDateFormat("yyyyMMddHHmmss");
		Date d = new Date();
		this.settlementDate = simf.format(d);
		setCreditable(creditable);
	}

	public double getCreditini() {
		return creditini;
	}

	public void setCreditini(double creditini) {
		this.creditini = creditini;
	}

	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}

	public String getPassWord() {
		return passWord;
	}

	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getSettlementDate() {
		return settlementDate;
	}

	public double getCreditTotal() {
		return creditable+this.creditPresent;
	}

	public void setCreditTotal(double creditTotal) {
		this.creditTotal = creditTotal;
	}

	public double getCreditable() {
		return creditable;
	}

	public void setCreditable(double creditable) {
		i++;
		if (i == 1) {// 只有第一次才会赋值,其他情况不会?可以吗?
			this.creditini = creditable;
		}
		this.creditable = creditable;
		// 总信用额=可用信用额+预存金额
		this.creditTotal = creditable + this.creditPresent;
		// 可取现金额=可用信用额/1.1
		this.creditcash = creditable / 1.1;
	}

	public double getCreditcash() {
		return this.creditable / 1.1;
	}

	public void setCreditcash(double creditcash) {
		this.creditcash = creditcash;
	}

	public double getCreditower() {
		return creditower;
	}

	public void setCreditower(double creditower) {
		this.creditower = creditower;
	}

	public double getCreditPresent() {
		return creditPresent;
	}

	public void setCreditPresent(double creditPresent) {
		this.creditPresent = creditPresent;
	}

	public int getState() {
		return state;
	}

	public void setState(int state) {
		this.state = state;
	}

}

package lance.creditcardsys.data;
//账单类
import java.io.Serializable;

public class BillVo implements Serializable {
	/**
	 * 账单号 billNo String 账单号生成规律:P+日期+时+分+秒如P20101012112558 用户名 userName String
	 * 账号 cardNo String 金额 value double 类型 type Int 1:为消费 2:还款 3:取现
	 */
	private String billNo;
	private String userName;
	private String cardNo;
	private double value;
	private int type;

	public BillVo() {
		super();
	}

	public BillVo(String billNo, String userName, String cardNo, double value,
			int type) {
		this.billNo = billNo;
		this.userName = userName;
		this.cardNo = cardNo;
		this.value = value;
		this.type = type;
	}

	public String getBillNo() {
		return billNo;
	}

	public void setBillNo(String billNo) {
		this.billNo = billNo;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}

	public double getValue() {
		return value;
	}

	public void setValue(double value) {
		this.value = value;
	}

	public int getType() {
		return type;
	}

	public void setType(int type) {
		this.type = type;
	}
}

package lance.creditcardsys.data;

/**这个类用于读取记录,保存记录
 * @author Lance
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;

public class DataReaderWriter {
	String AVpath = "F:\\avlist.dat";
	String BVpath = "F:\\bvlist.dat";
	private Scanner input;

	/**
	 * 读取账户信息的方法
	 * 
	 * @return ArraryList
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<AccountVo> readAvlist() {
		// 装账户信息的list
		ArrayList<AccountVo> avlist = new ArrayList<AccountVo>();
		File file = new File(AVpath);
		// 如果有记录,则读取
		if (file.exists()) {
			try {
				FileInputStream fis = new FileInputStream(AVpath);
				ObjectInputStream ois = new ObjectInputStream(fis);// 包装好对象输入流
				avlist = (ArrayList<AccountVo>) ois.readObject();// 读取记录
				fis.close();
				ois.close();// 关闭对象流
				return avlist;
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace(
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ava+SQL信用卡管理系统源代码,MSSQL数据库,比较复杂,新手调试可能会遇到问题,附有Java源代码,仅供学习参考。 Java+SQL信用卡管理系统源代码 (1 folders, 2 files, 1.38 KB, 3.52 MB in total.)         源码 (1 folders, 2 files, 1.38 KB, 3.52 MB in total.)               信用卡管理系统SQL (4 folders, 17 files, 2.21 MB, 3.52 MB in total.)       card.jpx 9.58 KB       card.jpx.local 3.02 KB       card.jpx.local~ 3.02 KB       cardSystem_Data.MDF 1.13 MB       cardSystem_Log.LDF 1.00 MB       hs_err_pid1392.log 7.06 KB       hs_err_pid2360.log 6.88 KB       hs_err_pid2756.log 7.06 KB       hs_err_pid2804.log 7.05 KB       hs_err_pid2932.log 6.88 KB       hs_err_pid3152.log 7.06 KB       hs_err_pid3548.log 7.05 KB       hs_err_pid3856.log 7.06 KB       hs_err_pid512.log 6.88 KB       hs_err_pid748.log 7.05 KB                      bak (1 folders, 2 files, 1.38 KB, 208.28 KB in total.)                        card (0 folders, 67 files, 206.90 KB, 206.90 KB in total.)           cardConnect.java~1~ 1.52 KB           cardConnect.java~2~ 508 bytes           cardConnect.java~3~ 661 bytes           cardConnect.java~4~ 1.01 KB           cardConnect.java~5~ 971 bytes           creditCard.java~1~ 1.53 KB           eventFrame.java~18~ 2.86 KB           eventFrame.java~19~ 3.04 KB           eventFrame.java~20~ 2.98 KB           eventFrame.java~21~ 3.19 KB           eventFrame.java~22~ 3.20 KB           eventFrame.java~23~ 3.20 KB           eventFrame.java~24~ 3.35 KB           eventFrame.java~25~ 3.36 KB           eventFrame.java~26~ 3.36 KB           eventFrame.java~27~ 3.36 KB           getPanel.java~22~ 3.64 KB           getPanel.java~23~ 3.64 KB           getPanel.java~24~ 3.50 KB           getPanel.java~25~ 3.50 KB           getPanel.java~26~ 3.54 KB           getPanel.java~27~ 3.58 KB           getPanel.java~28~ 3.58 KB           getPanel.java~29~ 3.55 KB           getPanel.java~30~ 3.54 KB           getPanel.java~31~ 3.59 KB           loginFrame.java~100~ 6.04 KB           loginFrame.java~101~ 6.29 KB           loginFrame.java~102~ 6.47 KB           loginFrame.java~103~ 6.47 KB           loginFrame.java~104~ 6.64 KB           loginFrame.java~95~ 6.07 KB           loginFrame.java~96~ 6.07 KB           loginFrame.java~97~ 6.07 KB           loginFrame.java~98~ 6.07 KB           loginFrame.java~99~ 6.07 KB                      moveFrameEvent.java~1~ 882 bytes           queryPanel.java~10~ 2.54 KB           queryPanel.java~11~ 2.57 KB           queryPanel.java~12~ 2.58 KB           queryPanel.java~13~ 2.10 KB           queryPanel.java~14~ 2.10 KB           queryPanel.java~15~ 2.08 KB           queryPanel.java~6~ 2.61 KB           queryPanel.java~7~ 2.61 KB           queryPanel.java~8~ 2.61 KB           queryPanel.java~9~ 2.57 KB           staticMessage.java~1~ 1.06 KB           staticMessage.java~2~ 1.08 KB           staticMessage.java~3~ 1.12 KB           staticMessage.java~4~ 1.07 KB           staticMessage.java~5~ 1.07 KB           storePanel.java~15~ 3.43 KB           storePanel.java~16~ 3.43 KB           storePanel.java~17~ 3.43 KB           storePanel.java~18~ 3.52 KB           storePanel.java~19~ 3.52 KB           storePanel.java~20~ 3.47 KB           storePanel.java~21~ 3.52 KB           storePanel.java~22~ 3.52 KB           storePanel.java~23~ 3.49 KB           storePanel.java~24~ 3.53 KB           welcomePanel.java~1~ 1.19 KB           welcomePanel.java~2~ 1.37 KB           welcomePanel.java~3~ 1.47 KB                   classes (2 folders, 2 files, 1.38 KB, 73.03 KB in total.)                         card (0 folders, 27 files, 41.28 KB, 41.28 KB in total.)          cardConnect.class 1.75 KB          creditCard$1.class 714 bytes          creditCard.class 1.16 KB          eventFrame.class 4.17 KB          getPanel$1.class 652 bytes          getPanel$2.class 649 bytes          getPanel$3.class 649 bytes          getPanel.class 4.56 KB          loginFrame$1.class 664 bytes          loginFrame$2.class 618 bytes          loginFrame$3.class 622 bytes          loginFrame$4.class 664 bytes          loginFrame$5.class 618 bytes          loginFrame$6.class 622 bytes          loginFrame$7.class 661 bytes          loginFrame$8.class 661 bytes          loginFrame.class 7.27 KB                    moveFrameEvent.class 1.20 KB          queryPanel.class 2.10 KB          staticMessage.class 1.83 KB          storePanel$1.class 664 bytes          storePanel$2.class 661 bytes          storePanel$3.class 661 bytes          storePanel.class 4.57 KB          welcomePanel.class 1.73 KB                  package cache (0 folders, 3 files, 30.37 KB, 30.37 KB in total.)           card.dep2 28.98 KB                              img (0 folders, 9 files, 1.01 MB, 1.01 MB in total.)         1.jpg 69.44 KB         11.jpg 585.41 KB         img.gif 1.76 KB         l562.png 313.27 KB         log001.gif 24.68 KB         log002.gif 7.21 KB                  Thumbs.db 26.50 KB                src (1 folders, 2 files, 1.38 KB, 29.22 KB in total.)                           card (0 folders, 12 files, 27.84 KB, 27.84 KB in total.)            cardConnect.java 1.14 KB            creditCard.java 1.49 KB            eventFrame.java 3.39 KB            getPanel.java 3.91 KB            loginFrame.java 7.16 KB                        moveFrameEvent.java 917 bytes            queryPanel.java 2.13 KB            staticMessage.java 1.12 KB            storePanel.java 3.85 KB            welcomePanel.java 1.37 KB
JCreator是一种Java集成开发环境(IDE),用于开发和编写J2SEJava 2平台标准版)应用程序。它是基于Windows平台的,为Java开发者提供了一个友好的界面和一系列方便的功能。 首先,JCreator提供了一个简单易用的界面,使得开发者能够轻松地创建、编辑和管理Java项目。它具有类似于其他流行IDE的布局,包括编辑器窗口、项目导航器、控制台等。 其次,JCreator具有许多有用的功能。例如,它支持自动代码补全功能,可以在编写代码时快速显示和选择可能的选项。它还具有代码重构功能,可以帮助开发者重命名、提取方法、移动代码块等,提高代码的可维护性。 此外,JCreator还提供了调试功能,允许开发者在运行时跟踪和调试代码。它具有断点设置、变量监视和运行时错误报告等功能,帮助开发者找到和修复潜在的错误。 最后,JCreator与J2SE完全兼容。它支持最新的Java语法和标准库,开发者可以使用JCreator开发各种类型的应用程序,包括控制台程序、图形界面应用和Web应用。 综上所述,JCreator是一个功能强大、易于使用的IDE,适用于开发和编写J2SE应用程序。它提供了许多有用的功能和工具,可以提高开发效率,并帮助开发者在Java开发过程中更轻松地进行调试和测试。无论是初学者还是经验丰富的开发者,都可以从JCreator中受益,并快速开发出高质量的Java应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值