「模拟数据库java」模拟数据库软件
今天给各位分享模拟数据库java的知识,其中也会对模拟数据库软件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、一个用java模拟ATM机的代码且数据库为mysql,
- 2、java多线程模拟多用户同时查询数据库,计算查询时间。为什么线程跑完后,执行不到t2这部来,无异常显示。
- 3、用Java语言用文本模拟数据库
一个用java模拟ATM机的代码且数据库为mysql,
最后一列为备注 1、 管理员表(tb_admin) 字段 类型 约束 备注 aId number(6) 主键 --管理员编号 aName varchar2(10) 唯一、非空 --管理员登陆名 aPassword varchar2(16) 非空 --管理员登陆密码 aLastDate date 非空 --上次登陆时间 aNowDate date 非空 --本次登陆时间 2、 银行卡登陆表(tb_login) 字段 类型 约束 备注 lId number(8) 主键 --登录ID lCardNumber varchar2(19) 引用银行卡信息表 卡号 lPassword number(6) 非空 银行卡密码 bIsLock char(1) 默认1 是否被锁,0表示被锁,1表示开启 lTime number(10) 初始为0 登陆次数 aLastDate date 非空 上次登陆时间 aNowDate date 非空 本次登陆时间 3、 客户详细资料表(tb_userInfo) 字段 类型 约束 备注 usId number(8) 主键 客户ID usName varchar2(10) 非空 客户姓名 usIDNumber varchar2(18) 非空 客户身份证号码 usSex char(1) 默认0 客户性别,0表示男,1表示女 usTel varchar2(11) 非空 客户电话 usAddress varchar2(50) 非空 客户地址 4、 银行支行表(tb_Branch) 字段 类型 约束 备注 bId number(3) 主键 支行ID bName varchar2(20) 唯一、非空 支行名 bAddress varchar2(100) 非空 支行地址 5、 银行卡信息表(tb_CardInfo) 字段 类型 约束 备注 bCardID number(19) 主键 卡号 bBalance number(8,2) 默认0.00 余额 bUserId number(8) 引用客户详细资料表 卡对应用户ID bBranchID number(4) 引用支行表 支行ID bDate date 默认系统时间 开户时间 6、 银行卡交易类型表(tb_TransType) 字段 类型 约束 备注 tId number(2) 主键 类型ID tType nvarchar2(6) 唯一 类型(转账、存款、取出等) 7、 银行卡个人账户存、取款记录表(tb_ Pacount) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardID number(19) 引用银行卡信息表 交易卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间 8、 银行卡转账等交易记录表(tb_TransInfo) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardIDout number(19) 引用银行卡信息表 交易金额转出卡号 tCardIDIn number(19) 引用银行卡信息表 交易金额转入卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间
java多线程模拟多用户同时查询数据库,计算查询时间。为什么线程跑完后,执行不到t2这部来,无异常显示。
t2这部分不会被运行了
countDownLatch 根本就没有执行过countDown的调用
你可以首先把countDown变成类的静态成员变量,或者把countDown作为参数带入到类Calc 中,在run方法结束的时候执行countDownLatch.countDown();
如果不执行countDownLatch.countDown();操作,计数器不会产生变化,线程跑完了以后程序就停在countDownLatch.await(); 傻等着了........
用Java语言用文本模拟数据库
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Font.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;
public class Jishiben extends JFrame
{
static JTextArea ta;
static JFrame app;
static JLabel jl;
static JLabel jl2;
//各菜单的监听均采用内部类实现, 子菜单的监听采用内部类的内部类
class xianjian implements ActionListener
//新建文件监听
{
public void actionPerformed(ActionEvent e)
{
ta.setText("");//将ta 的Text设置为空字符串,实现新建
}
}
class dakai implements ActionListener
//打开文件监听
{
public void actionPerformed(ActionEvent e)
{
JFileChooser jf=new JFileChooser();
javax.swing.filechooser.FileFilter filter = new FileNameExtensionFilter("*.txt", "txt");
jf.addChoosableFileFilter(filter);//文件过滤默认仅显示TXT文件,选择所有文件才全显示
jf.showOpenDialog(Jishiben.this);//显示打开文件对话框
String fileName=jf.getSelectedFile().getAbsolutePath().trim();//获取文件路径及文件名
try{
BufferedReader br=new BufferedReader(new FileReader(fileName));
String S;
for(S=br.readLine();S!=null;S=br.readLine())//按行读取文件
ta.append(S+"\n");//写入ta,并执行换行
br.close();
}
catch(IOException a)
{
System.out.println("Open file error!");
a.printStackTrace();
}
}
}
//保存文件监听
class baocun implements ActionListener
//注:保存文件后,用Windows自带的记事本打开发现是只有一行,这是因为文件是此记事本创建的。如果用此记事本打开显示就正常了
{
public void actionPerformed(ActionEvent e)
{
JFileChooser jf = new JFileChooser();
javax.swing.filechooser.FileFilter filter = new FileNameExtensionFilter("*.txt", "txt");
jf.addChoosableFileFilter(filter);//文件过滤默认保存为TXT文件,选择所有文件时需加后缀
jf.showSaveDialog(Jishiben.this);//显示保存文件对话框
String fileName=jf.getSelectedFile().getAbsolutePath().trim();//获取保存文件的路径及输入的文件名
if(fileName!=null)
try{
BufferedWriter bw=new BufferedWriter(new FileWriter(fileName+".txt"));//自动加上.txt的后缀
PrintWriter pw=new PrintWriter(bw);
pw.println(ta.getText());//写入文件
bw.close();
}
catch (IOException a)
{
System.out.println("Save file error!");
a.printStackTrace();
}
}
}
//退出程序监听
class tuichu implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);//退出程序
}
}
//剪切的监听
class jianqie implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
ta.cut();//剪切
}
}
//复制的监听
class fuzhi implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
ta.copy();//复制
}
}
//粘贴的监听
class zhantie implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
ta.paste();//粘贴
}
}
//全选的监听
class quanxuan implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
ta.selectAll();//选择全部
}
}
//删除的监听
class shanchu implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
ta.replaceRange("",ta.getSelectionStart(),ta.getSelectionEnd());//用空字符串替换选择部分,实现删除功能
}
}
//字体的监听
class ziti implements ActionListener
{
JComboBox cb1;
JComboBox cb2;
JComboBox cb3;
Font[] fa={new Font("宋体",java.awt.Font.BOLD, 16),new Font("楷体",java.awt.Font.ITALIC, 16),new Font("Arial",java.awt.Font.PLAIN, 16)};
Font[] fb={new Font("宋体",java.awt.Font.BOLD, 16),new Font("宋体",java.awt.Font.ITALIC, 16),new Font("宋体",java.awt.Font.PLAIN, 16)};
Font[] ft={new Font("宋体",java.awt.Font.PLAIN, 16),new Font("宋体",java.awt.Font.PLAIN, 25),new Font("宋体",java.awt.Font.PLAIN, 10)};
class xuanziti implements ItemListener//内部类,用来监听字体
{
public void itemStateChanged(ItemEvent a)
{
if(cb1.getSelectedIndex()==1) //根据组合框选择的项,设置字体
ta.setFont(fa[1]);
else if(cb1.getSelectedIndex()==2)
ta.setFont(fa[2]);
else
ta.setFont(fa[0]);;
}
}
class xuanzixing implements ItemListener//内部类,用来监听自行
{
public void itemStateChanged(ItemEvent a)
{
if(cb2.getSelectedIndex()==1)//根据组合框选择的项,设置字体
ta.setFont(fb[1]);
else if(cb2.getSelectedIndex()==2)
ta.setFont(fb[2]);
else
ta.setFont(fb[0]);;
}
}
class xuandaxiao implements ItemListener//内部类,用来监听字体大小
{
public void itemStateChanged(ItemEvent a)
{
if(cb3.getSelectedIndex()==1)//根据组合框选择的项,设置字体
ta.setFont(ft[0]);
else if(cb3.getSelectedIndex()==2)
ta.setFont(ft[2]);
else
ta.setFont(ft[1]);
}
}
public void actionPerformed(ActionEvent e)
{
JDialog jd=new JDialog(app,"设置字体",false);//创建对话框
Container c=jd.getContentPane();
String [] ziti={"宋体 ","楷体 ","Arial "};
String [] zixing={"粗体 ","斜体 ", "正常 "};
String [] daxiao={"大 ","中 ","小 "};
cb1=new JComboBox(ziti);//创建三个组合框
cb2=new JComboBox(zixing);
cb3=new JComboBox(daxiao);
c.setLayout(new FlowLayout());
c.add(cb1);//在对话框中添加三个组合框分别用来控制字体,自行,大小
cb1.addItemListener(new xuanziti());//注册监听器
c.add(cb2);
cb2.addItemListener(new xuanzixing());
c.add(cb3);
cb3.addItemListener(new xuandaxiao());
jd.setSize(300,100);
jd.setVisible(true);
}
}
//状态栏的监听
class zhuangtailan implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jl2.setText("总共:Ln "+ta.getLineCount());//最下面的面板中显示总的行数
}
}
//帮助的监听
class bangzhu implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JDialog jd=new JDialog(app,"帮助主题",false);//创建对话框,以对话框显示信息
Container C=jd.getContentPane();
jd.add(new JLabel("使用方法基本同Windows记事本,正在努力完善中。。。"));
jd.setSize(400,200);
jd.setVisible(true);
}
}
//关于记事本的监听
class guanyujishiben implements ActionListener
{
JLabel jl=new JLabel("谢谢您的支持,湖南理工学院计算机系徐勤钱制作。");
int i=0;
class xiayitiao implements ActionListener//按钮下一条的监听
{
public void actionPerformed(ActionEvent e)
{
String[] S={"谢谢您的支持,湖南理工学院计算机系徐勤钱制作。","尽最大的努力为您服务!","QQ:282196482,EMAIL:bjawawlove@163.com"};
if(iS.length)
i++;
jl.setText((S[i]));//设置标签的内容
}
}
class shangyitiao implements ActionListener//按钮上一条的监听
{
public void actionPerformed(ActionEvent e)
{
String[] S={"谢谢您的支持,湖南理工学院计算机系徐勤钱制作。","尽最大的努力为您服务!","QQ:282196482,EMAIL:bjawawlove@163.com"};
if(i0)
i--;
jl.setText((S[i]));//设置标签的内容
}
}
public void actionPerformed(ActionEvent e)
{
JDialog jd=new JDialog(app,"欢迎使用!",false);//建立对话框
Container c=jd.getContentPane();
JPanel jp=new JPanel();//创建面板,加入到对话框中,便于布局管理
JButton jbs=new JButton("上一条");//创建两个按钮,下一条和上一条
JButton jbx=new JButton("下一条");
jbs.addActionListener(new xiayitiao());//按钮注册监听器
jbx.addActionListener(new shangyitiao());
jp.add(jbs);//将按钮添加到面板中
jp.add(jbx);
c.setLayout(new BorderLayout());
c.add(jl,BorderLayout.CENTER);//对话框中添加标签,显示信息
c.add(jp,BorderLayout.SOUTH);//将面板添加到对话框
jd.setSize(400,200);
jd.setVisible(true);
}
}
public Jishiben()
{
super("记事本");
//创建菜单栏,并加入各下拉式菜单及菜单项
JMenuBar mBar=new JMenuBar();
JMenu[] mA={new JMenu("文件(F)"),new JMenu("编辑(E)"),new JMenu("格式(O)"),new JMenu("查看(V)"),new JMenu("帮助(H)")};
char[][] mC={{'F','E','O','V','H'},{'N','O','S','X'},{'U','T','C','P','L','A'},{'F'},{'S'},{'H','A'}};
char[][] mD={{'N','O','S'},{'Z','X','C','V','A'}};
JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),
new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
{new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),
new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
{new JMenuItem("字体(F)")},{new JMenuItem("状态栏(S)")},
{new JMenuItem("帮助(H)"),new JMenuItem("关于记事本(A)")}};
setJMenuBar(mBar);
int i,j;
for(i=0;imA.length;i++)
{
mBar.add(mA[i]);//添加下拉式菜单
mA[i].setMnemonic(mC[0][i]);
for(j=0;jmI[i].length;j++)
{
mA[i].add(mI[i][j]);//添加菜单项
mI[i][j].setMnemonic(mC[i+1][j]);//设置助记符
}
}
//各个菜单项注册监听器
mI[0][0].addActionListener(new xianjian());
mI[0][1].addActionListener(new dakai());
mI[0][2].addActionListener(new baocun());
mI[0][3].addActionListener(new tuichu());
mI[1][0].addActionListener(new jianqie());
mI[1][1].addActionListener(new fuzhi());
mI[1][2].addActionListener(new zhantie());
mI[1][3].addActionListener(new quanxuan());
mI[1][4].addActionListener(new shanchu());
mI[2][0].addActionListener(new ziti());
mI[3][0].addActionListener(new zhuangtailan());
mI[4][0].addActionListener(new bangzhu());
mI[4][1].addActionListener(new guanyujishiben());
}//构造函数Jishiben中添加了菜单栏及注册了菜单的监听器
public static void main(String args[])//程序入口,主函数
{
app=new Jishiben();//新建带菜单栏的框架
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(800,600);
Container c=app.getContentPane();//获得内容窗格
c.setLayout(new BorderLayout());//设置布局管理为边界布局
ta=new JTextArea();//新建文本区域
JScrollPane sta=new JScrollPane(ta);
jl2=new JLabel("总共:Ln 0",JLabel.RIGHT);//新建标签
jl2.setSize(800,20);
c.add(sta,BorderLayout.CENTER);//在BorderLayout.CENTER中添加文本区域作为主编辑区
c.add(jl2,BorderLayout.SOUTH);//在BorderLayout.SOUTH中添加标签用来查看状态
app.setVisible(true);
}
}//类Jishiben结束
关于模拟数据库java和模拟数据库软件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。