package creditcard;
import db.DBConnection;
import java.lang.Object.*;
import java.io.*;
import java.sql.*;
import java.util.Date;
import tio.*;
import java.io.File.*;
import java.io.IOException;
class CreditCard {
private long AccountNo;
private double CreditLimit;
public double TotalCharges;
public double TotalPayments;
private double Amount;
private int TransResult;
private String TransErr;
private String Description;
private String log=null;
private String date;
private FormattedWriter out;
private Statement stm = null;
private ResultSet rst = null;
private String tableName = "acctdata";
private String x;
private String query;
private DBConnection db;
private Connection Conn;
public CreditCard( ) throws FileNotFoundException, IOException {
newAccount();
CreditLimit = 1000;
TotalCharges = 0;
TotalPayments =0;
}
public CreditCard(long AccountNo) throws FileNotFoundException, IOException {
this.AccountNo = AccountNo;
CreditLimit = 1000;
TotalCharges = 0;
TotalPayments =0;
//validate AccountNO
}
private void accountStatus() throws IOException{
String f = "CC_Num_status.txt";
File file = new File(f);
FormattedWriter fw=new FormattedWriter(f);
if(f!=null){
fw.printfln("Account: " + accountNumber());
fw.printfln("Credit Limit: " + creditLimit());
fw.printfln("Available Credit: " + Available());
fw.printfln("Outstanding Balance: " + Balance());
fw.printfln("Charge: " + Amount);
fw.printfln("Description; " + Description);
fw.printfln("payment: " + Amount);
fw.printfln("Total Charges: " + TotalCharges);
fw.printfln("Total Payments " + TotalPayments);
//fw.printfln("\n");
// fw.printfln("Transaction (0=Quit, +$=charge, -$=payment, 9999=Limit increase): ");
}
}
private void newAccount() throws FileNotFoundException, IOException {
double r = Math.random();
AccountNo = (long)(r * 100000000);
}
public long accountNumber() {
return AccountNo;
}
private void writeLog(double Amount, String Description) throws FileNotFoundException, IOException, SQLException {
this.AccountNo = AccountNo;
Date dt = new Date();
dt.getTime();
String f = "CC" + AccountNo + ".txt";
File log = new File(f);
FormattedWriter out = new FormattedWriter(new FileWriter(log,true));
out.printfln(AccountNo);
out.printfln(dt.toString());
out.printfln(Amount);
out.printfln(Description);
out.close();
setData();
}
public String getTableName(){
return tableName;
}
public void setTableName(String tableName){
this.tableName = tableName;
}
public String getData() throws SQLException{
if(tableName==null || tableName.equals("")){
return "";
}
return x;
}
public void setData() throws SQLException{
if(tableName==null || tableName.equals("")){
return;
}
Connection conn =null;
db.getConnection();
String query = "INSERT INTO"+tableName+" VALUES(11111112,'2000-7-3',50,'THIS',25";
Statement stm= conn.createStatement();
stm.executeUpdate(query);
}
public double creditLimit() {
return CreditLimit;
}
public void creditIncrease()throws FileNotFoundException, IOException{
TransResult = 0;
if (Math.random() > .25) {
CreditLimit += 100;
accountStatus();
} else {
System.out.println("Sorry, credit increase not possible at this time.");
TransResult = 1;
}
}
public double Available() {
double Available = CreditLimit - ( TotalCharges - TotalPayments );
return Available;
}
public double Balance() {
double Balance = ( TotalCharges - TotalPayments );
return Balance;
}
public void Transaction( double Amount, String Description ) throws FileNotFoundException, IOException, SQLException {
TransResult = 0;
if ( Amount == 0 ) {
TransResult = 1;
TransErr = "Transaction amount is 0.";
return;
}
if ( Amount > Available() ) {
TransResult = 1;
TransErr = "Transaction amount of $" + Amount + " has exceeded the available credit limit $" + Available();
return;
}
if ( Description == "" ) {
TransResult = 1;
TransErr = "No transaction description entered.";
return;
}
if ( Amount > 0 ) {
TotalCharges += Amount;
accountStatus();
writeLog(Amount, Description);
} else if ( Amount < 0 ) {
TotalPayments += -(Amount);
accountStatus();
writeLog(Amount, Description);
}
}
}
[code]
/*
* DBConnection.java
*
* Created on September 11, 2007, 11:50 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package db;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.Connection;
/**
*
* @author James
*/
public class DBConnection {
static String dbdriver;
static String connURL;
static String dbusername="";
static String dbpassword="";
static Connection connection=null;
/** Creates a new instance of DBConnection */
public DBConnection() {
}
public String getDbdriver(){
return dbdriver;
}
public String getConnURL(){
return connURL;
}
public String getDbusername(){
return dbusername;
}
public String getDbpassword(){
return dbpassword;
}
public void setDbdriver(String dbdriver){
DBConnection.dbdriver=dbdriver;
}
public void setConnURL(String url){
DBConnection.connURL=url;
}
public void setDbusername(String dbusername){
DBConnection.dbusername=dbusername;
}
public void setDbpassword(String dbpassword){
DBConnection.dbpassword=dbpassword;
}
public static Connection getConnection(){
if(connection==null){
try{
Class.forName(dbdriver).newInstance();
Class.forName("org.gjt.mm.mysql.Driver");
connection=DriverManager.getConnection("jdbc:mysql://localhost:8080","root","ceyesuma");
}catch(Exception exc){ connection=null;}
}
return connection;
}
}
DROP DATABASE IF EXISTS ccdb;
CREATE DATABASE ccdb;
USE ccdb;
CREATE TABLE acctData
( AccountNo long Primary Key,
transdate char(20),
chrg double,
transdesc VARCHAR(100),
pymnt double) );
INSERT INTO acctData VALUES (99999999, '2000-7-3',30,'food',50);
Here is the rest of the program. This class test CreditCard
package creditcard;
//Credit Card Test - tests CreditCard class
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import tio.*;
class CreditCardTest {
public static void main(String[] args) throws IOException {
new CreditCardTest();
}
public CreditCardTest() throws IOException{
int inval;
long AccountNo;
double tranval=-1;
String transdesc = null;
CreditCard cc;
String f = "CC_Num_status.txt";
File file = new File(f);
FormattedWriter fw=new FormattedWriter(f);
System.out.println("Welcome to the Credit Card simulator!");
System.out.println("Existing Account, New Account, or Exit? (Existing Account=1, New Account=2, Exit=0): ");
inval = Console.in.readInt();
if (inval == 0)
return;
if (inval == 1) {
System.out.println("Existing Account; enter Account #: ");
AccountNo = Console.in.readLong();
if (AccountNo == 0)
return;
cc = new CreditCard(AccountNo);
} else {
cc = new CreditCard();
}
while (tranval != 0) {
System.out.println("Account: " + cc.accountNumber());
System.out.println("Credit Limit: " + cc.creditLimit());
System.out.println("Available Credit: " + cc.Available());
System.out.println("Outstanding Balance: " + cc.Balance());
System.out.println("Charge: " + + tranval);
System.out.println("Description; " + transdesc);
System.out.println("payment: " + tranval);
System.out.println("Total Charges: " + cc.TotalCharges);
System.out.println("Total Payments " + cc.TotalPayments);
System.out.println("\n");
System.out.println("Transaction (0=Quit, +$=charge, -$=payment, 9999=Limit increase): ");
tranval = Console.in.readDouble();
if (tranval == 0)
break;
if (tranval == 9999)
cc.creditIncrease();
else {
if (tranval > 0) {
System.out.println("Transaction description: ");
transdesc = Console.in.readLine();
transdesc = Console.in.readLine();
} else
transdesc = "payment";
cc.Transaction(tranval, transdesc);
}
}
}
}