用文件实现类似于数据库一样的功能(老古董,怀念用)

本人没有毕业前写的一篇关于JAVA的程序,今天找回来,做为纪念之用。

本人虽然喜欢java,可是对它的数据库的处理能力实在是不敢恭维 
而且我还想用windows操作系统对java的支持的能力,来直接运行我的程序 
这样可以直接发布,而体积却是非常的小。不到30kb啊! 
当然需要编写一个run.bat 里面只要一句就行了“jview sjk” 
还要把sjk.class和run.bat 放在同一个目录下。 


下面是原理简述: 
1:从文件中将数据逐行读入,添加的到向量中,一行数据成为一个向量元素。 
2:从向量中,将任意的元素取出,分解为字段,进行其他处理,或者发送到textfield中 
3:可以对向量中的元素添加,删除,替换,查找等数据库似的操作。 
4:可以从textfield中将数据取出,合为一个string,添加到向量中,注意的是,每个字段的顺序要记住,每个字段间要有分界点“:"。 
5:将向量中的所有元素逐一取出,合为一个string,每个元素之间要有换行符“\n"。最后退出程序时 
将这个string写到文件里。实现数据保存。 




//2003/08/20 用java开发的程序 


import java.io.*; 
import java.util.*; 
import java.awt.*; 
import java.awt.event.*; 


public class sjk extends frame implements actionlistener 

int x=100; int y=50; int index=0; 
static vector alldata; 
string all,zkzh,sfzh,xm,csrq,bkdj,yzbm,txdz,sjcj,bscj,xbstr,find; 


checkbox xb; 
static java.awt.list list1; 
button first,last,pre,next,addb,editb,delb,findb,flashb; 
textfield zkzhed,sfzhed,xmed,csrqed,bkdjed,yzbmed,txdzed,sjcjed,bscjed,t10,finded; 


//生成菜单组件/ 
menubar mb1=new menubar(); 
menu m1=new menu("文件");menu m2=new menu("设置"); menu m3=new menu("信息"); 
menuitem open=new menuitem("打开"); menuitem backc=new menuitem("背景"); 
 
sjk(){ 
super("数据管理----java练习程序  2003/08/22"); 
setsize(800,600); 
setbackground(color.lightgray);//color.lightgray 
setforeground(color.blue); 
setfont(new font("宋体",font.plain,12)); 


addwindowlistener(new windowadapter() 

public void windowclosing(windowevent e){ save();system.exit(0); } 
} ); 


first=new button("首位");last=new button("末位"); 
pre=new button("前翻");next=new button("后翻"); 
addb=new button("添加");editb=new button("修改"); 
delb=new button("删除");findb=new button("查 找"); 
flashb=new button("刷新"); 


zkzhed=new textfield();sfzhed=new textfield();xmed =new textfield(); 
csrqed=new textfield();bkdjed=new textfield();yzbmed=new textfield(); 
txdzed=new textfield();sjcjed=new textfield();bscjed=new textfield(); 
t10=new textfield(); 
finded=new textfield(); 


setlayout(null); 
xb=new checkbox("性别"); add(xb);xb.setbounds(x+80,y+140,50,20); 
list1=new java.awt.list(10,false); add(list1);list1.setbounds(x+430,y+40,100,300); 
add(first);first.setbounds(x+30,y+300, 50,20); add(addb);addb.setbounds(x+130,y+300,50,20); 
add(last);last.setbounds(x+30,y+320, 50,20); add(editb);editb.setbounds(x+130,y+320,50,20); 
add(pre);pre.setbounds(x+80,y+300, 50,20); add(delb);delb.setbounds(x+180,y+300,50,20); 
add(next);next.setbounds(x+80,y+320, 50,20); add(findb);findb.setbounds(x+300,y+300,120,20); 
add(flashb);flashb.setbounds(x+180,y+320,50,20); 


first.addactionlistener(this);last.addactionlistener(this); 
pre.addactionlistener(this);next.addactionlistener(this); 
addb.addactionlistener(this);editb.addactionlistener(this); 
delb.addactionlistener(this);findb.addactionlistener(this); 
flashb.addactionlistener(this); 
list1.addactionlistener(this); 


add(zkzhed);zkzhed.setbounds(x+80,y+80,120,20); add(sfzhed);sfzhed.setbounds(x+300,y+80,120,20); 
add(xmed);xmed.setbounds(x+80,y+120,120,20); add(csrqed);csrqed.setbounds(x+300,y+120,120,20); 
add(bkdjed);bkdjed.setbounds(x+80,y+160,120,20); add(yzbmed);yzbmed.setbounds(x+300,y+160,120,20); 
add(sjcjed);sjcjed.setbounds(x+80,y+200,120,20); add(bscjed);bscjed.setbounds(x+300,y+200,120,20); 
add(txdzed);txdzed.setbounds(x+80,y+240,340,20); add(t10);t10.setbounds(x+80,y+40,340,20); 
add(finded);finded.setbounds(x+300,y+320,120,20); 


addl("准考证号",x+25,y+80,50,20); addl("身份证号",x+245,y+80,50,20); 
addl("姓 名",x+25,y+120,50,20); addl("出生日期",x+245,y+120,50,20); 
addl("报考等级",x+25,y+160,50,20); addl("邮政编码",x+245,y+160,50,20); 
addl("上机成绩",x+25,y+200,50,20); addl("笔试成绩",x+245,y+200,50,20); 
addl("通讯地址",x+25,y+240,50,20); addl("信息提示",x+25, y+40,50,20); 


//生成菜单组件/ 
m1.add(open);open.addactionlistener(this);mb1.add(m1);mb1.add(m2);mb1.add(m3); 
m2.add(backc); 
setmenubar(mb1); 
show(); 



/// 
public static void main(string args[])throws java.io.ioexception 

string str; 
alldata=new vector(1,1); 
sjk wqh=new sjk(); 
filereader fr=new filereader("data.wqh"); 
bufferedreader br=new bufferedreader(fr); 
while((str=br.readline())!=null) 

alldata.addelement(str); 
list1.add(str.substring(0,8)); 

br.close(); 
fr.close(); 

public void actionperformed(actionevent e) 

toolkit.getdefaulttoolkit().beep(); 
if(e.getsource()==first){index=0;getdata();} 
if(e.getsource()==last){alldata.trimtosize();index=alldata.size()-1;getdata();} 
if(e.getsource()==pre){index=index-1;if(index<0){index=0;}getdata();} 
if(e.getsource()==next){index=index+1;if(index>alldata.size()-1){index=alldata.size()-1;}getdata();} 
if(e.getsource()==addb){if(iferr()==0){adddata();}} 
if(e.getsource()==editb){if((iferr()==0) || (iferr()==2)){editdata();}} 
if(e.getsource()==delb){deldata();} 
if(e.getsource()==findb){finddata(finded.gettext());} 
if(e.getsource()==flashb){flash();save();} 
if(e.getsource()==list1){finddata(list1.getselecteditem());t10.settext("");} 








void addl(string lname,int x,int y ,int w,int h){label l=new label (lname);add(l);l.setbounds(x,y,w,h);}//addl end; 

void getdata() 

int len; 
int temp=1; 
int it[]=new int[11]; 
string abc,d; 
abc=alldata.elementat(index).tostring(); 
len=abc.length(); 
for(int i=0;i{ 
d=abc.substring(i,i+1); 
if(d.equals(":")==true){it[temp]=i;temp=temp+1;} 

zkzh=abc.substring(0,it[1]); 
sfzh=abc.substring(it[1]+1,it[2]); 
xm=abc.substring(it[2]+1,it[3]); 
csrq=abc.substring(it[3]+1,it[4]); 
xbstr=abc.substring(it[4]+1,it[5]); 
bkdj=abc.substring(it[5]+1,it[6]); 
yzbm=abc.substring(it[6]+1,it[7]); 
sjcj=abc.substring(it[7]+1,it[8]); 
bscj=abc.substring(it[8]+1,it[9]); 
txdz=abc.substring(it[9]+1,it[10]); 
setdata(); 


int iferr() 

int a=0; 


if(zkzhed.gettext().length() <8){a=1;t10.settext("准考证号位数不足!");} 
if(sfzhed.gettext().length()<18){a=1;t10.settext("身份证号位数不足!");} 
if( xmed.gettext().length()<2) {a=1;t10.settext("姓 名位数不足!");} 
if(csrqed.gettext().length()<10){a=1;t10.settext("出生日期位数不足!");} 
if(bkdjed.gettext().length()<1) {a=1;t10.settext("报考等级位数不足!");} 


if(yzbmed.gettext().length()<6){a=1;t10.settext("邮政编码位数不足!");} 
if(bscjed.gettext().length()<2) {a=1;t10.settext("笔试成绩位数不足!");} 
if(sjcjed.gettext().length()<1) {a=1;t10.settext("上机成绩位数不足!");} 
if(txdzed.gettext().length()<10){a=1;t10.settext("通讯地址位数不足!");} 
for(int i=0; i{ 
if(alldata.elementat(i).tostring().substring(0,8).equals(zkzhed.gettext())==true){a=2;t10.settext("该考生已存在!");} 

return (a); 


string getall() 

if(xb.getstate()==true){xbstr="男";}else{xbstr="女";} 
zkzh=zkzhed.gettext(); 
sfzh=sfzhed.gettext(); 
xm = xmed.gettext(); 
csrq=csrqed.gettext(); 
bkdj=bkdjed.gettext(); 
yzbm=yzbmed.gettext(); 
txdz=txdzed.gettext(); 
sjcj=sjcjed.gettext(); 
bscj=bscjed.gettext(); 
all=zkzh+":"+sfzh+":"+xm+":"+csrq+":"+xbstr+":"+bkdj+":"+yzbm+":"+sjcj+":"+bscj+":"+txdz+"::"; 
return all; 


void flash() 
{ t10.settext(""); 
zkzhed.settext(""); 
sfzhed.settext(""); 
xmed.settext(""); 
csrqed.settext(""); 
bkdjed.settext(""); 
yzbmed.settext(""); 
txdzed.settext(""); 
sjcjed.settext(""); 
bscjed.settext(""); 
finded.settext(""); 
save(); 


void setdata() 

zkzhed.settext(zkzh); 
sfzhed.settext(sfzh); 
xmed.settext(xm); 
csrqed.settext(csrq); 
bkdjed.settext(bkdj); 
yzbmed.settext(yzbm); 
txdzed.settext(txdz); 
sjcjed.settext(sjcj); 
bscjed.settext(bscj); 
if(xbstr.equals("男")==true){xb.setstate(true); xb.setlabel("男");} 
else {xb.setstate(false);xb.setlabel("女");} 

void save() 

string wqh=new string(); 
int wqhlen; 
try{ 
filewriter out=new filewriter("data.wqh"); 
alldata.trimtosize(); 
wqhlen=alldata.size(); 
for(int i=0; i { 
wqh=wqh+string.valueof(alldata.elementat(i))+"\n"; 

out.write(wqh); 
out.close(); 

catch(ioexception ioe){} 


void adddata() 

string aaa; 
aaa=getall(); 
alldata.addelement(aaa); 
list1.add(aaa.substring(0,8)); 

void deldata() 

string bbb; 
bbb=getall(); 
alldata.removeelement(bbb); 
list1.remove(bbb.substring(0,8)); 

 
void editdata() 

string ccc; 
ccc=getall(); 
list1.remove(alldata.elementat(index).tostring().substring(0,8)); 
list1.add(ccc.substring(0,8)); 
alldata.setelementat(ccc,index); 
t10.settext(""); 

 
void finddata(string eee) 

int alllen; 
alllen=alldata.size(); 
for(int i=0;i{ 
if(alldata.elementat(i).tostring().substring(0,8).equals(eee)==true) 

index=i; 
getdata(); 







 
 
 
}//end 
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值