山东建筑大学计算机科学与技术学院
课程设计说明书
题 目:课 程:院 (部):专 业:班 级:学生姓名:学 号:指导教师:完成日期:
进制转换,商品管理系统,
银行系统
面向对象程序设计(JS) 计算机科学与技术学院
2012-6-24
目录
课程设计任务书一................................................ 3 课程设计任务书二................................................ 4 课程设计任务书三................................................ 5 题目一 进制转换..................................................... 6
一、问题描述................................................ 6 二、基本要求................................................ 6 三、类定义.................................................. 6 四、主要成员函数描述........................................ 6 五、测试数据及情况.......................................... 7 六、源代码.................................................. 7
题目二 商品管理系统................................................ 10
一、问题描述............................................... 10 二、基本要求............................................... 10 三、类定义................................................. 10 四、主要成员函数描述....................................... 11 五、测试数据及情况......................................... 12 六、源代码................................................. 13
题目三 银行系统.................................................... 16
一、问题描述............................................... 16 二、基本要求............................................... 16 三、类定义................................................. 17 四、主要成员函数描述....................................... 17 五、测试数据及情况......................................... 18 六、源代码................................................. 18 结 论.......................................................... 26 参考文献....................................................... 26
山东建筑大学计算机科学与技术学院
课程设计任务书一
设计题目 已知技术1. 从键盘输入一个十六进制数,将其转化为十进制输出。 参数和设2. 如果输入的不是一个有效的十六进制数数字则抛出异常。 计要求 1.可以先编写一个方法将一个十六进制的数字转化为十进制对应的数值,方法在数字非法时产生异常。 2.定义一个异常类,用来描述“非十六进制数”这一特殊异常。 3.定义一个方法将十六进制数字转换为十进制数字,方法内利用设计内了switch语句来处理各种情形,其他情形,则抛出异常。利用if容与步语句可缩短程序长度,如何修改程序。 骤 4.在main方法中对一个十六进制的符号串逐位字符进行处理,拼接转化为十进制,要检测可能出现的异常。 5.设计、实现、调试 6.程设计说明书 设计工作计划与进度安排 进制转换 1.设计工作4学时 2.实现与调试12学时 3.课程设计说明书4学时 1.考勤20% 设计考核要求 2.课程设计说明书50%。 3.答辩30% 指导教师(签字): 教研室主任(签字)
课程设计任务书二
设计题目 商品管理系统 1.该系统主要处理商场中的商品信息。 2.商品信息主要包括:商品编号、商品类型、商品类型、价格、已知技术参数和设3.供应商信息主要包括:供应商编号、供应商名称、联系电话等计要求 内容。 4.完成以下的操作:实现商品信息、商品类型、供应商信息的添加、修改、删除和查询。 1.建立商品类、商品类型类、供应商类 2.商品、商品类型、供应商信息的初始化 设计内容与步4.供应商信息的添加、修改、删除、查找 骤 5.商品信息、供应商信息的输出 6.设计、实现、调试 7.程设计说明书 设计工作计划与进度安排 供应商等内容。 3.商品信息的添加、修改、删除、查找 1.设计工作4学时 2.实现与调试12学时 3.课程设计说明书4学时 1.考勤20% 设计考核要求 2.课程设计说明书50%。 3.答辩30% 指导教师(签字): 教研室主任(签字)
课程设计任务书三
设计题目 银行系统 1.创建账户类,有存取款方法 2.创建储蓄账户(SavingAccount)和信用账户(CreditAccount) 已知技术参数和设3.自定义异常类 计要求 4.使用Map集合方式管理Account对象 5.使用IO输入输出流把账户信息存储在磁盘文件中。 设计内容与步2.设计、实现、调试 骤 3.程设计说明书 设计工作计划与进度安排 1.建立银行系统相关类 1.设计工作4学时 2.实现与调试12学时 3.课程设计说明书4学时 1.考勤20% 设计考核要求 2.课程设计说明书50%。 3.答辩30% 指导教师(签字): 教研室主任(签字)
题目一 进制转换
一、问题描述
运用Java语言描述数据流操作类,每一个类应包含数据成员和成员函数。设计基类和派生类,并运用多态性和虚函数的知识。
二、基本要求
1.从键盘输入一个十六进制数,将其转化为十进制输出。 2.如果输入的不是一个有效的十六进制数数字则抛出异常。
三、类定义
Hex() data
Hexl类
initHex() check(String str) readString(String prompt) conver() 四、主要成员函数描述
Hex类中成员描述: 成员变量描述 进制类内容
成员类型 String 成员名称 data
方法名称 Hex() initHex() 方法作用 构造函数 初始化进制数 check(String str) 检查输入进制数是否合法 readString(String prompt) 从控制台读取进制数 conver() 进制转换
五、测试数据及情况
请输入十六进制数字:1123
十六进制数:1123转换为十进制数为:4387 请输入十六进制数字:334
十六进制数:334转换为十进制数为:820 请输入十六进制数字:wee 非十六进制数异常 十六进制数据存在异常
六、源代码
package com.zy04;
import java.io.BufferedReader; import java.io.Console; import java.io.IOException; import java.io.InputStreamReader;
public class Hex {
private String data; private boolean b_enable; public Hex() {
initHex();
}
public void initHex() { this.b_enable=false;
this.data=readString(\"请输入十六进制数字:\"); try { this.b_enable=this.check(this.data); } catch (hexException e) {
// TODO Auto-generated catch block e.printStackTrace(); }
}
private boolean check(String str) throws hexException { boolean b=true;
if(str==null || str.length()<=0) { b=false; } else { char[] charr=str.toCharArray(); for(int i=0;i { b=false; break; } } if(b==false) { throw new hexException(); } } return b; } public static String readString(String prompt) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; try { System.out.print(prompt); str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } return str; } public void conver() { if(this.b_enable==true) { int num=0; char[] charr=this.data.toCharArray(); for(int i=0;i if(charr[i]>=48 && charr[i]<=57) { } else if(charr[i]>=97 && charr[i]<=102) { } else if(charr[i]>=65 && charr[i]<=70) { } num=num*16+charr[i]-55; num=num*16+charr[i]-55; num=num*16+charr[i]-48; \"+num); } } } else { System.out.println(\"十六进制数据存在异常\"); } class hexException extends Exception { private static String message=\"非十六进制数异常\"; } public void printStackTrace() { } System.out.println(message); 题目二 商品管理系统 一、问题描述 运用Java语言描述数据流操作类,每一个类应包含数据成员和成员函数。设计基类和派生类,并运用多态性和虚函数的知识。 二、基本要求 1.该系统主要处理商场中的商品信息。 2.商品信息主要包括:商品编号、商品类型、商品类型、价格、供应商等内容。 3.供应商信息主要包括:供应商编号、供应商名称、联系电话等内容。 4.完成以下的操作:实现商品信息、商品类型、供应商信息的添加、修改、删除和查询。 三、类定义 cass1类 class1() out() Class2类 class2() add() Zy11类 Zy11() del() update() find() out() IndexOut() save() 四、主要成员函数描述 class1类中成员描述: 成员变量描述 成员类型 方法作用 成员名称 方法名称 Class1() out() 构造函数 获得商品信息 Class2类中成员描述: 成员变量描述 成员类型 方法作用 构造函数 成员名称 方法名称 Class2() zy11类中成员描述: 成员变量描述 方法名称 Zy11() add() del() update() find() out() IndexOut() save() 成员类型 方法作用 构造函数 添加商品记录 删除商品记录 更新商品记录 查找商品记录 输出信息 排序输出 成员名称 保存信息到文件中 五、测试数据及情况 商品信息输出 商品编号:20001,商品名称:名称1,商品类型:1,价格:1231,供应商编号:1,供应商名称:名称2224,联系电话123456701 商品编号:20002,商品名称:名称2,商品类型:2,价格:1234,供应商编号:2,供应商名称:名称2221,联系电话123456701 商品编号:20003,商品名称:名称3,商品类型:1,价格:1232,供应商编号:1,供应商名称:名称2222,联系电话123456701 商品编号:20004,商品名称:名称4,商品类型:2,价格:1237,供应商编号:3,供应商名称:名称2223,联系电话123456701 输出结束 商品信息输出 商品编号:20001,商品名称:名称1,商品类型:1,价格:1231,供应商编号:1,供应商名称:名称2224,联系电话123456701 商品编号:20002,商品名称:名称2,商品类型:2,价格:1234,供应商编号:2,供应商名称:名 称2221,联系电话123456701 商品编号:20003,商品名称:名称3,商品类型:1,价格:1232,供应商编号:1,供应商名称:名称2222,联系电话123456701 商品编号:20004,商品名称:名称4,商品类型:2,价格:1237,供应商编号:3,供应商名称:名称2223,联系电话123456701 输出结束 价格排序 商品信息输出 商品编号:20001,商品名称:名称1,商品类型:1,价格:1231,供应商编号:1,供应商名称:名称2224,联系电话123456701 商品编号:20003,商品名称:名称3,商品类型:1,价格:1232,供应商编号:1,供应商名称:名称2222,联系电话123456701 商品编号:20002,商品名称:名称2,商品类型:2,价格:1234,供应商编号:2,供应商名称:名称2221,联系电话123456701 商品编号:20004,商品名称:名称4,商品类型:2,价格:1237,供应商编号:3,供应商名称:名称2223,联系电话123456701 输出结束 价格排序完毕 六、源代码 package com.zy11; import com.Record; public class class1 extends Record { public class1(int ID,String name,String type,int price,class2 cls2) { super(); this.addField(\"商品编号\", ID, 1); this.addField(\"商品名称\", name, 0); this.addField(\"商品类型\", type, 0); this.addField(\"价格\", price, 1); //this.addField(\"供应商\ this.addField(\"供应商编号\", cls2.findField(\"供应商编号\"), 1); this.addField(\"供应商名称\", cls2.findField(\"供应商名称\"), 0); this.addField(\"联系电话\", cls2.findField(\"联系电话\"), 0); } public String out() { String str=new String(); str+=\"商品编号:\"+this.findField(\"商品编号\")+\商品名 称:\"+this.findField(\"商品名称\")+\商品类型:\"+this.findField(\"商品类型\")+\价格:\"+this.findField(\"价格\")+\供应商编号:\"+this.findField(\"供应商编号\")+\供应商名称:\"+this.findField(\"供应商名称\")+\联系电话\"+this.findField(\"联系电话\"); return str; } } //商品编号、商品名称、商品类型、价格、供应商 package com.zy11; import com.Record; public class class2 extends Record { public class2(int ID,String name,String tel) { super(); this.addField(\"供应商编号\", ID, 1); this.addField(\"供应商名称\", name, 0); this.addField(\"联系电话\", tel, 0); } } //供应商信息主要包括:供应商编号、供应商名称、联系电话等内容。 package com.zy11; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import com.Table; public class zy11 extends Table { public zy11() { super(); } public void add(int ID,String name,String type,int ID1,String name1,String tel) { class2 tt=new class2(ID1,name1,tel); class1 dd=new class1(ID,name, type, price,tt); this.addRecord(dd); } price,int public void del(int ID) { int c=find(ID,null); this.delRecord(c); } public void update(int ID,class1 cr) { int c=find(ID,null); this.updateRecord(c, cr); } public int find(int ID,class1 cr) { class1 c=null; int re=0; int num=this.length(); for(int i=0;i if(ID==(Integer)c.findField(\"编号\")) { if(cr!=null) cr=c; re=i; break; } } return re; } public String out() { String str=new String(); str+=\"商品信息输出\\n\"; int num=this.length(); for(int i=0;i str+=\"输出结束\"; System.out.println(str); return str; } public void IndexOut() { System.out.println(\"价格排序\"); String []ListFieldNames=new String[1]; ListFieldNames[0]=new String(\"价格\"); zy11 zy=new zy11(); this.getIndexTable(ListFieldNames,zy); zy.out(); System.out.println(\"价格排序完毕\"); } public void save() { String str=out(); PrintWriter pw=null; try { pw = new PrintWriter( new FileWriter( \"zy11.txt\" ) ); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(pw==null) return; pw.print(str); pw.close(); } } 题目三 银行系统 一、问题描述 运用Java语言描述数据流操作类,每一个类应包含数据成员和成员函数。设计基类和派生类,并运用多态性和虚函数的知识。 二、基本要求 1.创建账户类,有存取款方法 2.创建储蓄账户(SavingAccount)和信用账户(CreditAccount) 3.自定义异常类 4.使用Map集合方式管理Account对象 5.使用IO输入输出流把账户信息存储在磁盘文件中。 三、类定义 account类 account () account () out() AccountManager() add() withdraw() AccountManagerdel() deposit() outBalance() 类 update() 四、主要成员函数描述 account类中成员描述: 成员变量描述 成员类型 方法作用 构造函数 成员名称 方法名称 account () account () out() AccountManager类中成员描述: 带参数构造函数 输出用户信息 成员变量描述 成员类型 方法作用 构造函数 成员名称 方法名称 AccountManager() add() del() deposit() outBalance() update() withdraw() 添加用户 删除用户 存款 输出余额 更新用户 取款 五、测试数据及情况 帐号登陆成功 存款10221 账户:20011123余额:10221 取款132 账户:20011123余额:100 帐号退出登陆 六、源代码 package bank; import java.util.Iterator; import java.util.Set; import com.Record; public class Account extends Record { public Account() { super(); } public Account(int id,String password,String name,String personId,int balance,String type) { super(); this.addField(\"账户号码\ this.addField(\"账户密码\ this.addField(\"真实姓名\ this.addField(\"身份证号码\ this.addField(\"账户余额\ this.addField(\"账户类型\储蓄账户,1-信用账户 } public String out() { String str=new String(); Set set=this.getFieldNames(); for(Iterator it = set.iterator(); it.hasNext(); ) { Object obj=it.next(); str+=\" \"+obj.toString()+\":\"+this.findField(obj.toString())+\" \"; } return str; } } package bank; import com.Record; import com.Table; public class AccountManager extends Table { public AccountManager() { super(); } public void add(int id,String password,String samepassword,String name,String personId,int balance,String type) { try { if(samepassword.equals(password)) { Account acc=new Account( id, password, name, personId, balance, type); this.addRecord(acc); } else { throw new passwordErr(); } } catch (passwordErr e) { // TODO Auto-generated catch block e.printStackTrace(); } } public int find(int ID,String password,Account cr) { Account c=null; int re=-1; int num=this.length(); for(int i=0;i if(ID==(Integer)c.findField(\"账户号码\")) { if(c.findField(\"账户密码\").toString().equals(password)) { re=i; if(cr!=null) cr.copy(c); break; } } } try { if(re==-1) throw new passwordErr1(); } catch (passwordErr1 e) { e.printStackTrace(); } return re; } public int findval(int ID,String password,Account cr) { Account c=null; int re=-1; int num=this.length(); for(int i=0;i if(ID==(Integer)c.findField(\"账户号码\")) { if(c.findField(\"账户密码\").toString().equals(password)) { re=i; if(cr!=null) cr.copyval(c); break; } } } try { if(re==-1) throw new passwordErr1(); } catch (passwordErr1 e) { e.printStackTrace(); } return re; } public void update(int ID,String password,Account cr) { int c=find( ID, password,null); this.updateRecord(c, cr); } public void del(int ID,String password) { int c=find( ID, password,null); this.delRecord(c); } public void deposit(int ID,String password,int num)//: 存款方法,参数是double型的金额 { if(num<0) return; Account cr=new Account(); int c=find( ID, password,cr); if(c>-1) { int bal=(Integer) cr.findField(\"账户余额\"); bal+=num; cr.updateField(\"账户余额\ //Account cr1=new Account(ID,password,(String)cr.findField(\"真实姓名\"),(String)cr.findField(\"身份证号码\"),bal,(String)cr.findField(\"账户类型\")); //this.updateRecord(c, cr1); } } public void withdraw(int ID,String password,int num)//:取款方法,参数是double型的金额 { if(num<0) return; Account cr=new Account(); int c=find( ID, password,cr); if(c>-1) { int bal=(Integer) cr.findField(\"账户余额\"); String type=(String) cr.findField(\"账户类型\"); if(type.equals(\"0\")) { try { if(bal-num<0) { throw new balanceErr(); } else { bal-=num; } } catch (balanceErr e) { e.printStackTrace(); } } else if(type.equals(\"1\")) { try { if(bal-num<-1000) { throw new balanceErr(); } else { bal-=num; } } catch (balanceErr e) { e.printStackTrace(); } } cr.updateField(\"账户余额\ // Account cr1=new Account(ID,password,(String)cr.findField(\"真实姓名\"),(String)cr.findField(\"身份证号码\"),bal,(String)cr.findField(\"账户类型\")); // this.updateRecord(c, cr1); } } public void outBalance(int ID,String password) { Account cr=new Account(); int c=find( ID, password,cr); if(c>-1) { System.out.println(\"账户:\"+ID+\"余额:\"+cr.findField(\"账户余额\")); } } } class passwordErr extends Exception { public void printStackTrace() { System.out.println(\"密码设置不相同\"); } } class passwordErr1 extends Exception { public void printStackTrace() { System.out.println(\"帐号或密码输入错误\"); } } class balanceErr extends Exception { public void printStackTrace() { System.out.println(\"帐号余额不足\"); } } package custom; import bank.Account; import bank.AccountManager; public class Customer { private int id;//:账户号码 长整数 private String password;//:账户密码 private String samepassword;//:账户密码 private String name;//:真实姓名 private String personId;//:身份证号码 字符串类型 private String type; private boolean login; private AccountManager manager; public Customer(int id,String password,String password1,String name,String personId, String type,AccountManager manager) { this.id=id; this.password=password; this.samepassword=password1; this.name=name; this.personId=personId; this.type=type; this.manager=manager; login=false; } public void Open() { } manager.add(id, password, samepassword, name, personId, 0, type); } public void LogIn() { if(manager.find(id, password, null)>-1) login=true; if(login) System.out.println(\"帐号登陆成功\"); } public void LogOut() { login=false; System.out.println(\"帐号退出登陆\"); } public void Close() { if(!login) return; manager.del(id, password); } public void deposit(int num) { if(!login) return; System.out.println(\"存款\"+num); manager.deposit(this.id, this.password, num); } public void withdraw(int num) { if(!login) return; System.out.println(\"取款\"+num); manager.withdraw(this.id, this.password, num); } public void outBalance() { if(!login) return; manager.outBalance( id, password); } 结 论 (从技术角度对本次课程设计进行总结,如完成各题目的主要收获(学到什么),遇到的主要问题,解决问题采取的措施等) 参考文献 [1] 刘宝林. Java 程序设计与案例. 高等教育出版社,2004
因篇幅问题不能全部显示,请点此查看更多更全内容