求Java小程序
导入Java . io . *;
导入Java . util . *;
导入Java . awt . event . *;
导入javax . swing . *;
公共类短信{
公共静态void main(String[] args)引发异常{
ui manager . setlookandfeel(ui manager . getsystemlookandfeelclassname());
JFrame f = new JFrame("学生信息管理");
f . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);
f.setSize(688,380);
f . setresizable(false);
f . setlocationrelativeto(null);
f . setcontentpane(new SMSPanel());
f . set visible(true);
}
}
//主面板
SMSPanel类扩展JPanel实现ActionListener{
private static final long serialVersionUID = 6923196760525083410L;
私有字符串file path = " c:/students . info . txt ";//文件路径
private student model sm = new student model(file path);
私有JTextField名称,id,classname,addr。
私JComboBox性,部;
private JButton添加、查询、显示info;
私有JScrollPane jsp
私有JRadioButton r1,R2;
私有ButtonGroup组;
private JTextField querystr
私人网站panel spanel;
SMSPanel(){
超级(空);
//第一行组件
This.addLabel ("name:",10,10,32,20);
this.name=tf(38,10,48,20);
This.addLabel("性别:",96,10,32,20);
这个。sex = new jcombobox (new string [] { "男性","女性" });
this.sex.setBounds(124,10,38,20);
this.add(性);
this.addLabel("ID:",172,10,20,20);
this.id=tf(190,10,80,20);
This.addLabel ("system:",280,10,20,20);
this.department=new JComboBox(
新字符串[]{“日语”、“英语”、“法语”、“德语”、“鸟类”、“花卉”、“呵呵”});
this.department.setBounds(300,10,50,20);
this.add(部门);
This.addLabel ("class:",360,10,22,20);
this.classname=tf(382,10,38,20);
This.addLabel("产地:",430,10,32,20);
this.addr=tf(462,10,100,20);
this . add = new JButton(" join ");
this.add.setBounds(575,10,58,20);
this.add(添加);
//第一行组件的结尾
//第二行组件:
This.addLabel("查询:",10,48,32,20);
this.querystr=tf(50,48,100,20);
this . r 1 = new JRadioButton(" by name ",true);
this . r 1 . set bounds(155,48,78,20);
this . add(r 1);
This.r2=new JRadioButton("根据ID ");
this.r2.setBounds(234,48,65,20);
this . add(R2);
This.query=new JButton("执行查询");
this.query.setSize(88,20);
this . query . set location(310,48);
this.add(查询);
this . show allinfo = new JButton(" show all ");
this.showAllInfo.setBounds(428,48,88,20);
this . add(show allinfo);
this . spanel = new sitem panel(sm);
this . JSP = new JScrollPane(spanel);
this.jsp.setLocation(10,90);
this.jsp.setSize(658,232);
this . add(JSP);
group = new button group();
group . add(r 1);
group . add(R2);
this . add . addactionlistener(this);
this . query . addactionlistener(this);
this . show allinfo . addactionlistener(this);
}
//创建一个新的LABEL对象并将其添加到面板中。
private void addLabel(String s,int x,int y,int w,int h){
JLabel l =新JLabel(s);
l.setBounds(x,y,w,h);
添加(l);
}
private JTextField tf(int x,int y,int w,int h){
JTextField t = new JTextField();
t.setBounds(x,y,w,h);
this . add(t);
return t;
}
public void action performed(action event e){
//加入新同学
if(e.getSource()。等于(加)){
if(check()){
Joptionpane。显示消息对话框(这个,“字段没有完全填写”,“错误”,jooptionpane。warning _ message);
返回;
}
否则{
boolean st =
如果(st){
reset();
spanel . showall students();
}
其他
Joption窗格。显示消息对话框(这,“具有相同ID的学生已经存在”,“错误”,JOptionPane。WARNING _ MESSAGE);
}
}
//显示查询出的学生信息。
else if(e.getSource()。等于(查询)){
String qs = querystr.getText()。trim();
boolean isname = r 1 . is selected();
if(isname){
ArrayList SSS = sm . find byname(QS);
if(sss.isEmpty()){
Joptionpane。显示消息对话框(这个,“系统找不到名为' "+qs+" '的学生信息”);
}
其他
spanel . showall students(SSS);
}
否则{
学生s = sm . find byid(QS);
if(s==null){
Joptionpane。显示消息对话框(这个,“系统找不到ID为' "+qs+" ')的学生信息);
}
其他
spanel.showOneStudent
}
}
//显示所有信息
else if(e.getSource()。equals(showAllInfo)){
if(sm.isEmpty()){
Joptionpane。显示消息对话框(这个,“当前文件中没有学生信息。”);
}
其他
spanel . showall students();
}
JSP . validate();
}
//重置字段内容
私有void重置(){
name . settext(" ");
id . settext(" ");
class name . settext(" ");
addr . settext(" ");
sex . setselectedindex(0);
department . setselectedindex(0);
}
//创建一个新的student对象并保存在仓库中。
private boolean
学生s =新生();
s.setName(name.getText()。trim());
s . setsex(sex . getselectedindex()= = 0?“男”:“女”);
s.setID(id.getText()。trim());
s . set department(department . getselecteditem()。toString());
s . set class name(class name . gettext()。trim());
s.setAddr(addr.getText()。trim());
如果(!sm . is exists)){
sm.addStudent
返回true
}
返回false
}
//检查字段完整性
私有布尔校验(){
返回
name.getText()。修剪()。isEmpty()||
id.getText()。修剪()。isEmpty()||
classname.getText()。修剪()。isEmpty()||
addr.getText()。修剪()。isEmpty();
}
}
/* *学生演示面板*/
类SItemPanel扩展JPanel{
private static final long serialVersionUID = 8397146822995036515L;
私人学生模型模型;
公共站点面板(学生模型操作){
超级(空);
this . set background(color . white);
this.model = op
}
//根据数组中的学生呈现学生信息。
void showall students(ArrayList SSS){
StudentItem.odd = false
this . remove all();
this . repaint();
for(int I = 0;我& ltSSS . size();i++){
StudentItem si = new StudentItem((Student)SSS . get(I));
si.setLocation(1,I * si . getheight()+I);
si.setSize(getWidth()、si . getheight());
this . add(si);
si . repaint();
}
this.setPreferredSize(新维度(1,SSS . size()* 21));
}
void showAllStudents() {
showall students(model . getall students());
}
void showOneStudent(学生){
ArrayList a = new ArrayList();
a .添加;
showAllStudents(一);
}
}
//学生数据处理类
班级学生模型{
私有数组列表ss;
私有文件src
学生模型(字符串文件){
this.src =新文件(File);
this . ss = new ArrayList();
this . loadstudentinfo();
}
public boolean isEmpty() {
返回ss . isempty();
}
//加入学生
public void addStudent(学生){
this.ss.add(0,s);
this . save();
}
//返回所有学生的集合。
public ArrayList getall students(){ return ss;}
//该学生是否已经存在?
public boolean isExists(学生){
返回ss . index of & gt;-1;
}
//按姓名查找学生,姓名可以重复。
公共数组列表findByName(字符串名称){
ArrayList s = new ArrayList();
for(int I = 0;我& ltss . size();i++)
if((学生)ss.get(i))。getName()。等于(名称))
s . add(ss . get(I));
返回s;
}
//按ID找学生,不会有重复ID。
公共学生findByID(字符串id){
for(int I = 0;我& ltss . size();i++)
if((学生)ss.get(i))。getID()。等于(id))
return(学生)ss . get(I);
返回null
}
//保存学生信息
私有void save(){
尝试{
buffered writer bw = new buffered writer(new file writer(src));
for(int I = 0;我& ltss . size();i++){
bw.write(ss.get(i))。toString());
bw . newline();
}
bw . flush();
bw . close();
}catch(异常e){}
}
//读取学生信息
私有void loadStudentInfo() {
尝试{
buffered reader br = new buffered reader(new file reader(src));
String tmp = null
while((tmp=br.readLine())!=null){
尝试{
string[]sp = tmp . split("+");
if(sp.length==6){
this.ss.add(新生(sp));
}
}catch(异常e){}
}
br . close();
}catch(异常e){}
}
}
/* *学生演示课*/
类StudentItem扩展JPanel{
private static final long serialVersionUID =-7110719002473825550 l;
静态布尔奇数;
私有静态颜色c 1 =新颜色(0x ffffef);
私有静态颜色c2 =新颜色(0x ffefff);
私有静态final int width=500,height = 20
专用JLabel信息;
StudentItem(学生)
超级(空);
this.setSize(宽度,高度);
this.setBackground(奇数?c 1:C2);
this.info=new JLabel(
“& lthtml & gt& lt表格边框= 0 & gt& lttr >;+
“& lttd align=center width=100 >+s . getname()+" & lt;/TD >;+
“& lttd align=center width=50 >+s . getsex()+" & lt;/TD >;+
“& lttd align=center width=158 >+s . getid()+" & lt;/TD >;+
“& lttd align=center width=90 >+s.getDepartment()+"部门
“& lttd align=center width=90 >+s.getClassName()+ "Class
“& lttd align=center width=200 >+s.getAddr()+"人
“& lt/tr & gt;& lt/table >
);
this . info . setsize(getSize());
this . add(info);
奇数=!奇数;
}
}
/* *学生*/
班级学生{
私有字符串名称;//名称
私弦性;//性别
私有字符串id;//ID
私弦部;//系统
私有String _ class//类
私有字符串地址;//籍贯
学生(){ };
学生(String[] inf){
this(inf[0],inf[1],inf[2],inf[3],inf[4],INF[5]);
}
学生(字符串n,字符串s,字符串id,字符串dep,字符串c,字符串a){
this . setname(n);this . setsex(s);this . setid(id);this . set department(dep);this . set class name(c);this . set addr(a);
}
void set name(String s){ this . name = s;}
void setSex(String s){ this . sex = s;}
void setID(String s){ this . id = s;}
void set department(String d){ this . department = d;}
void setClassName(String s){this。_ class = s;}
void set addr(String addr){ this . addr = addr;}
string getName(){ return name;}
string getSex(){ return sex;}
string getID(){ return id;}
string get department(){ return this . department;}
string get class name(){ return this。_ class}
string get addr(){ return addr;}
public boolean isFullInfo(){
还名字!= null & amp& amp性!= null & amp& ampid!= null & amp& amp系!= null & amp& amp_class!= null & amp& ampaddr!= null
}
公共字符串toString(){
返回姓名+" "+性别+" "+id+" "+部门+" "+_类+" "+地址+" ";
}
public boolean equals(Object o){
返回o!= null & amp& ampo学生和学生的实例。& amp((学生)o). id . equals(id);
}
}