日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Java 学生管理系统 GUI txt文件存储

發布時間:2023/12/20 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 学生管理系统 GUI txt文件存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小白第一次寫學生管理系統,參考自博客https://blog.csdn.net/H200102/article/details/94744641,感謝作者H.千面

實現功能:首先進入登陸頁面通過輸入用戶名和密碼進行登陸,登陸之后進行權限選擇,根據選擇的權限及進行所選權限下的操作。

整體是在Main.java中創建一個LoginFirst對象,實現登錄界面,在Login類的實現中,通過判斷是否進入權限選擇界面,由Login類實現。將需要的學生信息寫到一個student_information類中,實現如下

目測登錄界面實現之后,應如下圖所示:

首先實現最開始的賬號密碼登陸:
LoginFirst.java

package Student_Manage; import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField;public class LoginFirst extends JFrame implements ActionListener{//想要實現監聽功能就要重寫接口ActionListener/*** author:cj* date:2019.11.26*/private static final long serialVersionUID = 1L;private JPanel jp1,jp2,jp3;private JButton jb1,jb2;private JLabel jl1,jl2;private JTextField jtf;private JPasswordField jpf;private Icon welcomeIcon=new ImageIcon("welcome.png");private JLabel lbWelcome=new JLabel(welcomeIcon);public static void main(String[] args) {// TODO Auto-generated method stubnew Login();}public LoginFirst(){this.add(lbWelcome);this.setTitle("用戶登錄");//Box.createVerticalStrut(100);this.setSize(700,800); //通過這里可以調整界面的大小this.setLocation(100,100);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLayout(new GridLayout(4,1));jp1 = new JPanel();jl1 = new JLabel("用戶名:");jtf = new JTextField(20);jp1.add(jl1);jp1.add(jtf);this.add(jp1);jp2 = new JPanel();jl2 = new JLabel("密 碼:");jpf = new JPasswordField(20);jp2.add(jl2);jp2.add(jpf);this.add(jp2);jp3 = new JPanel();jb1 = new JButton("登錄");jb2 = new JButton("退出");jp3.add(jb1);jp3.add(jb2);this.add(jp3);this.setVisible(true);System.out.println(jtf.getText().toString());//增加監聽jb1.addActionListener((ActionListener) this);jb2.addActionListener((ActionListener) this);}public void actionPerformed(ActionEvent e) {if(e.getSource()==jb1) {//如果點擊的是"登陸"的button,則對賬號密碼進行判斷String account=jtf.getText();String password = new String(jpf.getPassword());//FileOpe.getInfoByAccount(account);if(account.equals("123")&&password.equals("123456")) {JOptionPane.showMessageDialog(this,"登錄成功");this.dispose();new Login();}else {JOptionPane.showMessageDialog(this,"登錄失敗");System.out.println(account+password);return;}}else if(e.getSource()==jb2){//如果點擊的是"退出"的button那么就直接退出程序JOptionPane.showMessageDialog(this,"謝謝光臨");System.exit(0);}} }

在Main.java中設置界面的入口,進入時首先看到的是登錄界面,即new LoginFirst();

Main.java

package Student_Manage;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubnew LoginFirst();//LoginFirst定義為登陸的界面}}

然后現在準備實現Login類,這個類準備實現選擇權限的功能,它的實現和LogFirst在思想上差不多,先創建好Button等,然后創建監聽,點擊權限后就進入新的界面,因為這次我想在選擇之后的界面創建一個Button,可以返回權限選擇界面,frame.setVisible用到了這個,即監聽到選擇了“學生”的Button就設置之前的界面不可見。

Login.java

package Student_Manage;/*** author:陳娟* 功能:權限選擇界面*/ import java.awt.*; import javax.swing.*;import java.awt.event.*;public class Login extends JFrame implements ActionListener{//重寫接口實現監聽private static final long serialVersionUID = 1L;//定義組件JFrame frame=new JFrame();JPanel jp1,jp2,jp3;//面板JLabel jlb1,jlb2;//標簽JButton jb1,jb2;//按鈕//構造函數public Login(){//創建面板jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();//創建標簽jlb1=new JLabel("選擇使用權限");//創建按鈕jb1=new JButton("老師(或信息管理人員)");jb2=new JButton("學生");//設置布局管理frame.setLayout(new GridLayout(3, 1));//網格式布局//加入各個組件jp1.add(jlb1);jp3.add(jb1);jp3.add(jb2);//加入到JFrameframe.add(jp2);frame.add(jp1);//this.add(jp2);frame.add(jp3);//設置窗體frame.setTitle("用戶登錄界面");//窗體標簽frame.setSize(400, 300);//窗體大小frame.setLocationRelativeTo(null);//在屏幕中間顯示(居中顯示)frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出關閉JFrameframe.setVisible(true);//顯示窗體//增加監聽jb1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {frame.setVisible(false);new ManagerLogin();//老師權限的界面}});jb2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {frame.setVisible(false);new StudentLogin();//學生權限的界面 }});}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub} }

下面是student信息的類
student_information.java

package Student_Manage;public class student_information {private String stuID; /* 學生學號 */private String name; /* 學生姓名 */private String sex; /* 學生性別 */private String age; /* 學生年齡 */private String callnumber; /* 學生電話號碼 */private String home_place; /* 學生家庭住址,籍貫 */private String identityID; /* 學生身份證號碼 *//*無參構造函數*/public student_information() {}/*有參構造函數 */public student_information(String stuID,String name,String sex,String age,String callnumber,String home_place,String identityID) {super();this.stuID=stuID;this.name=name;this.sex=sex;this.age=age;this.callnumber=callnumber;this.home_place=home_place;this.identityID=identityID;}public String getStuID() {return this.stuID;}public void setStuID(String stuID) {this.stuID=stuID;}public String getName() {return name;}public void setName(String name) {this.name=name;}public String getSex() {return this.sex;}public void setSex(String sex) {this.sex=sex;}public String getAge() {return this.age;}public void setAge(String age) {this.age=age;}public String getCallnumber() {return this.callnumber;}public void setCallnummber(String callnumber) {this.callnumber=callnumber;}public String getHome_place() {return this.home_place;}public void setHome_place(String home_place) {this.home_place=home_place;}public String getIdentityID() {return this.identityID;}public void setIdentityID(String identityID) {this.identityID=identityID;}//從文件中錄入的數據格式 "學號 姓名 性別 年齡 電話號碼 家庭住址 身份證號碼" public String fileString(){return stuID+" "+name+" "+sex+" "+age+" "+callnumber+" "+home_place+" "+identityID;}}

StudentLogin.java

package Student_Manage;//學生登陸后的界面 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.*;public class StudentLogin extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;Function fun=new Function(); //定義組件 JLabel lb1=new JLabel("當前是學生登錄界面" );//JLabel 對象可以顯示文本、圖像JLabel lb2=new JLabel("提示:錄入前請先輸入學號,修改、刪除根據學號修改信息");JTextField 學號,姓名,年齡,電話號碼,家庭住址,身份證號碼;//輸入學生基本信息得文本JRadioButton 男,;//聲明單選項對象,性別選擇ButtonGroup group=null;//聲明按鈕組JButton 錄入,查詢,刪除,修改,顯示,返回;//聲明相應的操作的按鈕JPanel p1,p2,p3,p4,p5,p6,p7,pv,ph,pb;//調節布局的通道student_information stu=new student_information();ArrayList<student_information> arry=new ArrayList<>();public StudentLogin(){ //負責管理員登錄的主窗口super("學生信息管理系統");學號=new JTextField(10);//創建文本信息的的對象姓名=new JTextField(10);電話號碼=new JTextField(15);年齡=new JTextField(5);家庭住址=new JTextField(15);身份證號碼=new JTextField(18);group=new ButtonGroup();=new JRadioButton("男");//初始化單選框,=new JRadioButton("女");group.add();//把按鈕添加到按鈕組group.add();//錄入=new JButton("增加學生信息");//創建按鈕對象查詢=new JButton("查詢某個學生信息");//刪除=new JButton("刪除學生信息");// 修改.setEnabled(false); //設置修改控件不可用//修改=new JButton("修改學生信息"); 顯示=new JButton("顯示全部學生信息");返回=new JButton("返回");pb=new JPanel();pb.add(lb1,JLabel.CENTER);p1=new JPanel();//創建一個面板 //p1.setLayout(new GridLayout(3,0));p1.add(lb2,JLabel.CENTER);p1.add(new JLabel("學號:",JLabel.CENTER));//JLabel.CENTER是指JLabel的中心點。CENTER是中心點的坐標p1.add(學號);p2=new JPanel();p2.add(new JLabel("姓名:",JLabel.CENTER));p2.add(姓名);p3=new JPanel();p3.add(new JLabel("性別:",JLabel.CENTER));p3.add();p3.add();p4=new JPanel();p4.add(new JLabel("年齡:",JLabel.CENTER));p4.add(年齡);p5=new JPanel();p5.add(new JLabel("電話號碼:",JLabel.CENTER));p5.add(電話號碼); p6=new JPanel();p6.add(new JLabel("家庭住址:",JLabel.CENTER));p6.add(家庭住址);p7=new JPanel();p7.add(new JLabel("身份證號碼:",JLabel.CENTER));p7.add(身份證號碼);pv=new JPanel();//面板pv.setLayout(new GridLayout(7,1)); //把pv組件設置成第七行1列的網格布局pv.add(p1);//把面板放到容器中,add()代表容器pv.add(p2);pv.add(p3);pv.add(p4);pv.add(p5);pv.add(p6);pv.add(p7);ph=new JPanel(); // ph.add(錄入);ph.add(查詢);// ph.add(修改);// ph.add(刪除); ph.add(顯示);ph.add(返回);Container con=getContentPane();//建立容器對象con,取得容器面板con.setLayout(new BorderLayout());//設置布局為邊框布局,邊框布局分東南西北中5個方位來添加控件。//若沒有指定方位,將添加到中間,上下左右都可以擴展con.add(pb, BorderLayout.NORTH);//Frame對象lb調用方法add(),lb放在最北上方 con.add(pv, BorderLayout.CENTER);//pv在中間con.add(ph, BorderLayout.SOUTH);//ph在南邊setDefaultCloseOperation(EXIT_ON_CLOSE);//置一個默認的關閉操作,也就是你的JFrame窗口的關閉按鈕,點擊它時,退出程序setBounds(100,100,900,450);//setBounds(x,y,width,height); x:組件在容器X軸上的起點 y:組件在容器Y軸上的起點 width:組件的長度 height:組件的高度setVisible(true);//目的是使控件可以顯示出來,如果該控件已經被顯示出來//添加監聽 //顯示全部學生信息顯示.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { new show_stuall(); } });//查詢某個學生信息 查詢.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { String sID = 學號.getText(); //獲取文本框中內容 if(sID.equals(""))sID="--"; String sname = 姓名.getText(); if(sname.equals(""))sname="--"; String sage = 年齡.getText(); if(sage.equals("")) //年齡為空,沒有輸入sage="--"; String scall = 電話號碼.getText();if(scall.equals(""))scall="--";String shome = 家庭住址.getText();if(shome.equals(""))shome="--";String siden = 身份證號碼.getText();if(siden.equals(""))siden="--";String ssex=null;if(.isSelected()){//選擇男女ssex=.getText();}else {if(.isSelected())ssex=.getText();else {ssex="--";}} //將要查詢的符合條件的寫入文件FileWriter fw=null;BufferedWriter out=null; //學號","姓名","性別","年齡","電話號碼","家庭住址","身份證號碼" };try {fw = new FileWriter("查詢時暫時存放的文件.txt");out = new BufferedWriter(fw);//姓名學號等中間隔一個空格out.write(sID+" ");out.write(sname+" ");out.write(ssex+" ");out.write(sage+" "); out.write(scall+" ");out.write(shome+" ");out.write(siden+" "); //每次覆蓋寫入,無需全部保存out.close();fw.close();} catch (IOException e1) {e1.printStackTrace();} //開始查詢new showones(); //清空文本框學號.setText("");姓名.setText("");年齡.setText("");電話號碼.setText("");家庭住址.setText("");身份證號碼.setText("");group.clearSelection();} }); 返回.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {setVisible(false); //目的是使控件不可以顯示出來new Login();}});}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub} }

ManagerLogin.java

package Student_Manage;//信息管理人員登陸后的界面 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.*;/*ArrayList; import java.util.Hashtable; */ public class ManagerLogin extends JFrame implements ActionListener{/*** */private static final long serialVersionUID = 1L;Function fun=new Function();//定義組件 JLabel lb1=new JLabel("當前是信息管理人員登錄界面" );//JLabel 對象可以顯示文本、圖像JLabel lb2=new JLabel("提示:錄入前請先輸入學號,修改、刪除根據學號修改信息\n");JTextField 學號,姓名,年齡,電話號碼,家庭住址,身份證號碼;//輸入學生基本信息得文本JRadioButton 男,;//聲明單選項對象,性別選擇ButtonGroup group=null;//聲明按鈕組JButton 錄入,查詢,刪除,修改,顯示,返回;//聲明相應的操作的按鈕JPanel p1,p2,p3,p4,p5,p6,p7,pv,ph,pb;//調節布局的通道public ManagerLogin(){ //負責管理員登錄的主窗口super("學生信息管理系統");學號=new JTextField(10);//創建文本信息的的對象姓名=new JTextField(10);電話號碼=new JTextField(15);年齡=new JTextField(5);家庭住址=new JTextField(15);身份證號碼=new JTextField(18);group=new ButtonGroup();=new JRadioButton("男");//初始化單選框,=new JRadioButton("女");group.add();//把按鈕添加到按鈕組group.add();錄入=new JButton("增加學生信息");//創建按鈕對象查詢=new JButton("查詢符合條件的學生信息");刪除=new JButton("刪除學生信息");修改=new JButton("修改學生信息");顯示=new JButton("顯示全部學生信息");返回=new JButton("返回");pb=new JPanel();pb.add(lb1,JLabel.CENTER);p1=new JPanel();//創建一個面板 p1.add(lb2,JLabel.CENTER);p1.add(new JLabel("學號:",JLabel.CENTER));//JLabel.CENTER是指JLabel的中心點。CENTER是中心點的坐標p1.add(學號);p2=new JPanel();p2.add(new JLabel("姓名:",JLabel.CENTER));p2.add(姓名);p3=new JPanel();p3.add(new JLabel("性別:",JLabel.CENTER));p3.add();p3.add();p4=new JPanel();p4.add(new JLabel("年齡:",JLabel.CENTER));p4.add(年齡);p5=new JPanel();p5.add(new JLabel("電話號碼:",JLabel.CENTER));p5.add(電話號碼); p6=new JPanel();p6.add(new JLabel("家庭住址:",JLabel.CENTER));p6.add(家庭住址);p7=new JPanel();p7.add(new JLabel("身份證號碼:",JLabel.CENTER));p7.add(身份證號碼);pv=new JPanel();//面板pv.setLayout(new GridLayout(7,1)); //把pv組件設置成第七行1列的網格布局pv.add(p1);//把面板放到容器中,add()代表容器pv.add(p2);pv.add(p3);pv.add(p4);pv.add(p5);pv.add(p6);pv.add(p7);ph=new JPanel(); ph.add(錄入);ph.add(查詢);ph.add(修改);ph.add(刪除); ph.add(顯示);ph.add(返回);Container con=getContentPane();//建立容器對象con,取得容器面板con.setLayout(new BorderLayout());//設置布局為邊框布局,邊框布局分東南西北中5個方位來添加控件。//若沒有指定方位,將添加到中間,上下左右都可以擴展con.add(pb, BorderLayout.NORTH);//Frame對象lb調用方法add(),lb放在最北上方 con.add(pv, BorderLayout.CENTER);//pv在中間con.add(ph, BorderLayout.SOUTH);//ph在南邊setDefaultCloseOperation(EXIT_ON_CLOSE);//置一個默認的關閉操作,也就是你的JFrame窗口的關閉按鈕,點擊它時,退出程序setBounds(100,100,900,450);//setBounds(x,y,width,height); x:組件在容器X軸上的起點 y:組件在容器Y軸上的起點 width:組件的長度 height:組件的高度setVisible(true);//目的是使控件可以顯示出來,如果該控件已經被顯示出來student_information stu=new student_information();@SuppressWarnings("unused")ArrayList<student_information> arry=new ArrayList<student_information>();//添加監聽//點擊錄入按鈕 學號","姓名","性別","年齡","電話號碼","家庭住址","身份證號碼" 錄入.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { String sID = 學號.getText(); //獲取文本框中內容if(fun.find(sID)!=-1){JOptionPane.showMessageDialog(null, "該學號對應的學生已經存在!!!\n\n請重新輸入或者修改已經錄入的學生"); //清空文本框學號.setText("");姓名.setText("");年齡.setText("");電話號碼.setText("");家庭住址.setText("");身份證號碼.setText("");return;} String sname = 姓名.getText(); //先判斷學號和姓名是否為空,如果為空,直接退出if(sID.equals("")||sname.equals("")){JOptionPane.showMessageDialog(null, "錄入的學生學號或姓名為空!!!\n\n請重新輸入");return;} String sage = 年齡.getText(); if(sage.equals(""))//年齡為空,沒有輸入sage="--"; String scall = 電話號碼.getText();if(scall.equals(""))scall="--";String shome = 家庭住址.getText();if(shome.equals(""))shome="--";String siden = 身份證號碼.getText();if(siden.equals(""))siden="--";String ssex=null;if(.isSelected()){//選擇男女ssex=.getText();}else{ssex=.getText();} stu.setStuID(sID);stu.setAge(sage);stu.setName(sname);stu.setSex(ssex);stu.setCallnummber(scall);stu.setHome_place(shome);stu.setIdentityID(siden);//arry.clear();// 清除原數組列表中的數據 // Input input=new Input(stu);System.out.println("信息管理員");System.out.println(stu.fileString());fun.add(stu);fun.writefile();JOptionPane.showMessageDialog(null, "錄入成功!!!");//dispose();setVisible(false); new ManagerLogin();} });//顯示全部學生信息顯示.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { //show_stuall all=new show_stuall(); new show_stuall(); } });//查詢某個學生信息 查詢.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { String sID = 學號.getText(); //獲取文本框中內容 if(sID.equals(""))sID="--"; String sname = 姓名.getText(); if(sname.equals(""))sname="--"; String sage = 年齡.getText(); if(sage.equals("")) //年齡為空,沒有輸入sage="--"; String scall = 電話號碼.getText();if(scall.equals(""))scall="--";String shome = 家庭住址.getText();if(shome.equals(""))shome="--";String siden = 身份證號碼.getText();if(siden.equals(""))siden="--";String ssex=null;if(.isSelected()){//選擇男女ssex=.getText();}else {if(.isSelected())ssex=.getText();else {ssex="--";}} //將要查詢的符合條件的寫入文件FileWriter fw=null;BufferedWriter out=null;//學號","姓名","性別","年齡","電話號碼","家庭住址","身份證號碼" };try {fw = new FileWriter("查詢時暫時存放的文件.txt");out = new BufferedWriter(fw);//姓名學號等中間隔一個空格out.write(sID+" ");out.write(sname+" ");out.write(ssex+" ");out.write(sage+" "); out.write(scall+" ");out.write(shome+" ");out.write(siden+" "); //每次覆蓋寫入,無需全部保存out.close();fw.close();} catch (IOException e1) {e1.printStackTrace();} //開始查詢new showones(); //清空文本框學號.setText("");姓名.setText("");年齡.setText("");電話號碼.setText("");家庭住址.setText("");身份證號碼.setText("");group.clearSelection();} }); //刪除學生信息,按學號刪除刪除.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String sID = 學號.getText(); //獲取文本框中內容int flag=fun.find(sID);if(flag==-1){JOptionPane.showMessageDialog(null, "未查找到該學號的學生!!!\n\n請重新輸入"); }else {fun.delete(sID); fun.writefile();JOptionPane.showMessageDialog(null, "刪除成功!!!\n");}//清空文本框學號.setText("");姓名.setText("");年齡.setText("");電話號碼.setText("");家庭住址.setText("");身份證號碼.setText("");group.clearSelection();} }); //修改學生信息修改.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String sID = 學號.getText(); //獲取文本框中內容int flag=fun.find(sID); //查找是否存在 if (flag==-1){JOptionPane.showMessageDialog(null, "未查找到該學號的學生!!!\n\n請重新輸入");return; } elseJOptionPane.showMessageDialog(null, "該系統中存在該學生數據\n\n,確認返回后請輸入需要修改后的數據");String sage = 年齡.getText(); if(sage.equals(""))//年齡為空,沒有輸入sage="--"; String scall = 電話號碼.getText();if(scall.equals(""))scall="--";String shome = 家庭住址.getText();if(shome.equals(""))shome="--";String siden = 身份證號碼.getText();if(siden.equals(""))siden="--";String ssex=null;if(.isSelected()){//選擇男女ssex=.getText();}else{ssex=.getText();} String sname = 姓名.getText(); //先判斷學號和姓名是否為空,如果為空,直接退出if(sname.equals("")){JOptionPane.showMessageDialog(null, "錄入的學生姓名為空!!!\n\n請重新輸入");return;} // student_information stu=new student_information();stu.setStuID(sID);stu.setAge(sage);stu.setName(sname);stu.setSex(ssex);stu.setCallnummber(scall);stu.setHome_place(shome);stu.setIdentityID(siden);fun.update(stu); //修改fun.writefile();JOptionPane.showMessageDialog(null, "修改成功!!!");//清空文本框學號.setText("");姓名.setText("");年齡.setText("");電話號碼.setText("");家庭住址.setText("");身份證號碼.setText("");group.clearSelection(); } });返回.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {setVisible(false); //目的是使控件不可以顯示出來new Login();}});}@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stub}}

Function.java

package Student_Manage;import java.io.*; import java.util.*;//修改,刪除,增加某個學生信息class Function {//使用數組存儲ArrayList<student_information> arry=new ArrayList<student_information>(); public Function() //讀文件,將文件中的學生信息存放在數組列表{this.readfile();}//根據學號查找學生信息,找到返回學號,找不到返回-1public int find(String str) { for (int i = 0; i<arry.size(); i++)if (arry.get(i).getStuID().equals(str))return i;//等于在數組列表的位置return -1;} //修改學生信息public void update(student_information stu) {int flag=find(stu.getStuID()); //查找是否存在arry.set(flag, stu); //替換 flag 處的學生信息} // 讀文件,public boolean readfile() { String t=null;try{FileReader f1 = new FileReader("student.txt");BufferedReader br=new BufferedReader(f1); arry.clear(); // 清除原數組列表中的數據 while ((t= br.readLine())!= null){String [] s=t.split("\\s+"); student_information st=new student_information(s[0],s[1],s[2],s[3],s[4],s[5],s[6]);//注意若該文件每行沒有七個字符串,則會出錯arry.add(st);System.out.println("讀取文件:");System.out.println(s[0]);}f1.close();br.close(); return true;} catch (IOException e) {// TODO 自動生成的 catch 塊e.printStackTrace();return false;} } //添加學生信息 public boolean add(student_information stu){ System.out.println(); System.out.println("要添加的學生"); System.out.println(stu.fileString());System.out.println();if (find(stu.getStuID())!=-1)return false; arry.add(stu); return true; }//寫注意每行必須有七個元素,否則讀取文件并判斷是否存在時會出錯時會出錯,沒有輸入的用---代替public boolean writefile() {FileWriter fw=null;BufferedWriter out=null;try {fw = new FileWriter("student.txt"); out = new BufferedWriter(fw);//姓名學號等中間隔一個空格for(int i=0;i<arry.size();i++){String s=arry.get(i).fileString();System.out.println("數組列表數據:");System.out.println(arry.get(i).fileString());out.write(s);out.newLine();}out.close();fw.close();return true;} catch (IOException e) {e.printStackTrace();return false;}}//刪除學生信息,并且文件中的內容也要修改public boolean delete(String s) //添加學生記信息{ int pos=find(s);if (pos==-1)return false;arry.remove(pos); return true;}}

showstuall.java

package Student_Manage;import java.awt.*; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter;import java.io.*;import java.util.ArrayList; import java.util.Vector;//讀取學生信息,展示在窗口@SuppressWarnings("unused") public class show_stuall { JTable table = null;DefaultTableModel model = null;//顯示全部學生信息@SuppressWarnings("unchecked") public show_stuall() {JFrame jf = new JFrame("顯示全部學生信息(點擊表頭可以按照升序降序排序)"); // 創建內容面板JPanel panel = new JPanel();// 表頭(列名)@SuppressWarnings("rawtypes")Vector columnNames=createColumnNames();@SuppressWarnings("rawtypes")Vector data=createTableModelData(); // 創建一個默認的表格模型model = new DefaultTableModel(data, columnNames);table = new JTable(model);table.setPreferredScrollableViewportSize(new Dimension(400, 80));JScrollPane tablePanel = new JScrollPane(table); // 設置表格內容顏色table.setForeground(Color.BLACK); // 字體顏色table.setFont(new Font(null, Font.PLAIN, 14)); // 字體樣式table.setSelectionForeground(Color.DARK_GRAY); // 選中后字體顏色table.setSelectionBackground(Color.LIGHT_GRAY); // 選中后字體背景table.setGridColor(Color.GRAY); // 網格顏色// 設置表頭table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 設置表頭名稱字體樣式table.getTableHeader().setForeground(Color.RED); // 設置表頭名稱字體顏色table.getTableHeader().setResizingAllowed(false); // 設置不允許手動改變列寬table.getTableHeader().setReorderingAllowed(false); // 設置不允許拖動重新排序各列// 設置行高table.setRowHeight(40);// 第一列列寬設置為40table.getColumnModel().getColumn(0).setPreferredWidth(40);// 設置滾動面板視口大小(超過該大小的行數據,需要拖動滾動條才能看到)table.setPreferredScrollableViewportSize(new Dimension(900, 320));//排序器 @SuppressWarnings({ "rawtypes" })RowSorter sorter = new TableRowSorter(model);table.setRowSorter(sorter);JScrollPane pane = new JScrollPane(table); // 把 表格 放到 滾動面板 中(表頭將自動添加到滾動面板頂部)JScrollPane scrollPane = new JScrollPane(table);// 添加 滾動面板 到 內容面板panel.add(scrollPane);// JScrollPane pane = new JScrollPane(table);// 設置 內容面板 到 窗口jf.setContentPane(panel);jf.pack();jf.setSize(900, 600);jf.add(scrollPane, BorderLayout.CENTER);//數據居中顯示DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); table.setDefaultRenderer(Object.class, r);jf.setLocationRelativeTo(null);int t=table.getRowCount();if(t<=0){JOptionPane.showMessageDialog(null, "該系統中還沒有錄入學生信息!!!");jf.setVisible(false);}else {jf.setVisible(true);} }@SuppressWarnings({ "rawtypes", "unchecked" })private Vector createColumnNames() {Vector columnNames = new Vector();//columnNames.add("序號");columnNames.add("學號");columnNames.add("姓名");columnNames.add("性別");columnNames.add("年齡");columnNames.add("電話號碼");columnNames.add("家庭住址");columnNames.add("身份證號碼");return columnNames;}@SuppressWarnings({ "rawtypes", "unchecked" })private Vector createTableModelData() {Vector data = new Vector();String t=null;try{FileReader f1 = new FileReader("student.txt");BufferedReader br=new BufferedReader(f1); //arry.clear();// 清除原數組列表中的數據int i=0;while ((t= br.readLine())!= null){String [] s=t.split("\\s+"); //通過空格分割字符串數組 Vector rowData = new Vector();//rowData.add("i"); rowData.add(s[0]); rowData.add(s[1]);rowData.add(s[2]);rowData.add(s[3]);rowData.add(s[4]); rowData.add(s[5]); rowData.add(s[6]); data.add(rowData); // System.out.print(s[6]); i++; }f1.close();br.close(); } catch (IOException e) {// TODO 自動生成的 catch 塊e.printStackTrace();} return data;} }

showones.java

package Student_Manage;import javax.management.modelmbean.ModelMBean; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter;import java.awt.*; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Vector;@SuppressWarnings("unused") public class showones { //讀取學生信息,展示在窗口ArrayList<student_information> arry=new ArrayList<student_information>();student_information stu=new student_information();JTable table = null;DefaultTableModel model = null;//顯示全部學生信息@SuppressWarnings("unchecked")public showones() {JFrame jf = new JFrame("顯示符合條件的學生信息(點擊表頭可以按照升序降序排序");//jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 創建內容面板JPanel panel = new JPanel();// 表頭(列名)// String[] columnNames ={"序號","學號","姓名","性別","年齡","電話號碼","家庭住址","身份證號碼" }; @SuppressWarnings("rawtypes")Vector columnNames=createColumnNames(); //需要查詢的符合條件的,用字符串數組f記錄 String [] f = new String [7];try{FileReader f1 = new FileReader("查詢時暫時存放的文件.txt");BufferedReader br=new BufferedReader(f1); //arry.clear();// 清除原數組列表中的數據String t=null;while ((t= br.readLine())!= null){f=t.split("\\s+"); //要查詢的學生信息 }f1.close();br.close(); } catch (IOException e) {e.printStackTrace(); }//記得清空,否則下次查詢沒有篩選條件時,查詢的是上一次的條件File file =new File("查詢時暫時存放的文件.txt");try {if(!file.exists()) {file.createNewFile();}FileWriter fileWriter =new FileWriter(file);fileWriter.write("");fileWriter.flush();fileWriter.close(); } catch (IOException e) {e.printStackTrace(); } //判斷需要查詢的是那些條件 @SuppressWarnings("rawtypes")ArrayList List = new ArrayList(); for(int i=0;i<7;i++) {if(!f[i].equals("--")) //需要滿足的條件List.add(i); }//將滿足查詢條件的學生信息錄入系統 for(int i=0;i<List.size();i++)System.out.println(List.get(i));try{FileReader f1 = new FileReader("student.txt");BufferedReader br=new BufferedReader(f1);String t=null;int flag=0;int t1=0;arry.clear();// 清除原數組列表中的數據 while ((t= br.readLine())!= null){String [] s=t.split("\\s+"); for(int i=0;i<List.size();i++){t1=(int) List.get(i);if(f[t1].equals(s[t1])) {flag=flag+1;}}if(flag==List.size()) {student_information st=new student_information(s[0],s[1],s[2],s[3],s[4],s[5],s[6]);//注意若該文件每行沒有七個字符串,則會出錯arry.add(st);} flag=0;}f1.close();br.close(); } catch (IOException e) {// TODO 自動生成的 catch 塊e.printStackTrace(); } @SuppressWarnings("rawtypes")Vector data=createTableModelData();// 創建一個默認的表格模型model = new DefaultTableModel(data, columnNames);table = new JTable(model);table.setPreferredScrollableViewportSize(new Dimension(400, 80));JScrollPane tablePanel = new JScrollPane(table); // 設置表格內容顏色table.setForeground(Color.BLACK); // 字體顏色table.setFont(new Font(null, Font.PLAIN, 14)); // 字體樣式table.setSelectionForeground(Color.DARK_GRAY); // 選中后字體顏色table.setSelectionBackground(Color.LIGHT_GRAY); // 選中后字體背景table.setGridColor(Color.GRAY); // 網格顏色// 設置表頭table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 設置表頭名稱字體樣式table.getTableHeader().setForeground(Color.RED); // 設置表頭名稱字體顏色table.getTableHeader().setResizingAllowed(false); // 設置不允許手動改變列寬table.getTableHeader().setReorderingAllowed(false); // 設置不允許拖動重新排序各列// 設置行高table.setRowHeight(40);// 第一列列寬設置為40table.getColumnModel().getColumn(0).setPreferredWidth(40);// 設置滾動面板視口大小(超過該大小的行數據,需要拖動滾動條才能看到)table.setPreferredScrollableViewportSize(new Dimension(900, 320));//排序器 @SuppressWarnings("rawtypes")RowSorter sorter = new TableRowSorter(model);table.setRowSorter(sorter);JScrollPane pane = new JScrollPane(table); // 把 表格 放到 滾動面板 中(表頭將自動添加到滾動面板頂部)JScrollPane scrollPane = new JScrollPane(table);// 添加 滾動面板 到 內容面板panel.add(scrollPane);// JScrollPane pane = new JScrollPane(table);// 設置 內容面板 到 窗口jf.setContentPane(panel);jf.pack();jf.setSize(900, 600);jf.add(scrollPane, BorderLayout.CENTER);//數據居中顯示DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); table.setDefaultRenderer(Object.class, r);jf.setLocationRelativeTo(null);int t=arry.size();if(t<=0){JOptionPane.showMessageDialog(null, "該系統中沒有符合條件的學生!!!");jf.setVisible(false);}else {jf.setVisible(true);}}@SuppressWarnings({ "rawtypes", "unchecked" })private Vector createColumnNames() {Vector columnNames = new Vector();//columnNames.add("序號");columnNames.add("學號");columnNames.add("姓名");columnNames.add("性別");columnNames.add("年齡");columnNames.add("電話號碼");columnNames.add("家庭住址");columnNames.add("身份證號碼");return columnNames;}@SuppressWarnings({ "unchecked", "rawtypes" })private Vector createTableModelData() {Vector data = new Vector(); for(int i=0;i<arry.size();i++) { Vector<String> rowData=new Vector<>(); rowData.add(arry.get(i).getStuID());rowData.add(arry.get(i).getName());rowData.add(arry.get(i).getSex());rowData.add(arry.get(i).getAge());rowData.add(arry.get(i).getCallnumber());rowData.add(arry.get(i).getHome_place());rowData.add(arry.get(i).getIdentityID()); data.add(rowData);} return data;} }

總結

以上是生活随笔為你收集整理的Java 学生管理系统 GUI txt文件存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。