Java用戶信息注冊(cè)與登錄系統(tǒng)

//用戶注冊(cè)/登陸镊折,將用戶注冊(cè)信息寫入文件鹦筹,注冊(cè)時(shí)匹配填寫信息

//當(dāng)?shù)卿洉r(shí)夜畴,若用戶已經(jīng)存在時(shí)拖刃,顯示登陸成功;否則登錄失敗

//****運(yùn)用到的技能:對(duì)象序列化與反序列化贪绘,輸入與輸出流兑牡,事件與窗體監(jiān)聽,用戶類和線性表的使用

//****注意事項(xiàng):見程序末尾兔簇。

//主要方法:產(chǎn)生界面方法发绢,寫入文件方法硬耍,從文件中讀取,信息匹配等

package day1;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.ArrayList;

import javax.swing.*;

public class userRegister implements ActionListener {

ArrayList<User> list = new ArrayList<User>();

JTextField jtf1 = new JTextField(14);

JTextField jtf2 = new JTextField(14);

JTextField jtf3 = new JTextField(14);

JTextField jtf4 = new JTextField(14);

JFrame jf;

public userRegister() throws Exception {

createGUI();

}

//當(dāng)事件發(fā)生時(shí)边酒,自動(dòng)調(diào)用actionPerformed()方法

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();

if ("注冊(cè)".equals(str)) {

User user = new User();

user.setUserName(jtf1.getText());

user.setPassWord(jtf2.getText());

user.setEmail(jtf4.getText());

String rePassWord = jtf3.getText();

if (!(user.getPassWord().equalsIgnoreCase(rePassWord))) {

jtf2.setText("密碼輸入錯(cuò)誤");

jtf3.setText("密碼輸入錯(cuò)誤");

} else {

jf.setTitle("注冊(cè)成功" + "歡迎您" + user.getUserName());

jtf2.setText("******");

jtf3.setText("******");

list.add(user);

}

} else if ("登錄".equals(str)) {

try {

readFromFile();

} catch (Exception e1) {

e1.printStackTrace();}}}

//createGui()方法经柴,用于生成圖形用戶界面

public void createGUI() {

jf = new JFrame("用戶注冊(cè)");

//當(dāng)用戶關(guān)閉窗口時(shí),多個(gè)用戶信息自動(dòng)保存到本地文件系統(tǒng)(通過調(diào)用writeToFile()方法)

jf.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

try {

writeToFile();

} catch (IOException e1) {

e1.printStackTrace();

}

System.exit(0);

}

});

jf.setLayout(new GridLayout(4, 2));

JPanel jp1 = new JPanel();

jf.add(jp1);

JLabel jl1 = new JLabel("User Name:");

jp1.add(jl1);jp1.add(jtf1);

JPanel jp2 = new JPanel();

jf.add(jp2);

JLabel jl2 = new JLabel("Pass Word:");

jp2.add(jl2);jp2.add(jtf2);

JPanel jp3 = new JPanel();

jf.add(jp3);

JLabel jl3 = new JLabel("ReInputPwd:");

jp3.add(jl3);

jp3.add(jtf3);

JPanel jp4 = new JPanel();

jf.add(jp4);

JLabel jl4 = new JLabel("E-mail:");

jp4.add(jl4);jp4.add(jtf4);

JPanel jp5 = new JPanel();

jf.add(jp5);

JButton jb51 = new JButton("注冊(cè)");

jb51.addActionListener(this);

JButton jb52 = new JButton("登錄");

jb52.addActionListener(this);

jp5.add(jb51);jp5.add(jb52);

jf.setSize(500, 300);

jf.setVisible(true);

}

//readFromFile()方法用于從文件中讀取用戶對(duì)象信息墩朦,并將用戶對(duì)象添加進(jìn)線性表(list)

public void readFromFile() throws IOException, Exception {

FileInputStream fis = new FileInputStream(new File(

"d:\\userRegister.dat"));

ObjectInputStream ois = new ObjectInputStream(fis);

User read = null;

try {

while (true) {

read = (User) ois.readObject();

if (read == null) {

break;

}

list.add(read);

}

} catch (Exception e) {

}

// System.out.println(list);

User temp = new User(jtf1.getText(), jtf2.getText(), "q");

match(temp);

ois.close();

}

//writeToFile()方法坯认,實(shí)現(xiàn)用戶信息保存功能。

public void writeToFile() throws IOException {

File file = new File("d:\\userRegister.dat");

file.createNewFile();

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(

file));

for (User usr : list) {

oos.writeObject(usr);

}

oos.flush();

oos.close();

}

//當(dāng)用戶試圖登錄時(shí)氓涣,match()方法可以將用戶輸入與保存的信息牛哺,進(jìn)行匹配。

//如果用戶名和密碼正確劳吠,登錄成功引润;否則,登錄失敗痒玩。

public void match(User user) {

boolean match = false;

for (User usr : list) {

if (usr.getUserName().equals(user.getUserName())

&& usr.getPassWord().equals(user.getPassWord())) {

jf.setTitle("登錄成功");

match = true;

break;

}

}

if (!match) {

jf.setTitle("用戶名或密碼錯(cuò)誤淳附,請(qǐng)重新輸入!");

jtf1.setText("");

jtf2.setText("");

jtf3.setText("");

jtf4.setText("");

jtf1.requestFocus();

}

}

public static void main(String[] args) throws Exception {

new userRegister();

}

}

//------------------------------------------------------------//

User類是個(gè)用戶信息類蠢古,包括userName,passWord,email等屬性奴曙。

public class User implements java.io.Serializable {

private String userName;

private String passWord;

private String email;

public User() {

}

public User(String userName, String passWord, String email) {

super();

this.setUserName(userName);

this.setPassWord(passWord);

this.setEmail(email);

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getPassWord() {

return passWord;

}

public void setPassWord(String passWord) {

this.passWord = passWord;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String toString(){

return userName+":"+passWord+":"+email;

}

}

//徐亮:如果將文件保存為txt等有一定格式的文件,對(duì)象讀取與寫入可能會(huì)發(fā)生錯(cuò)誤草讶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洽糟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子堕战,更是在濱河造成了極大的恐慌坤溃,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件践啄,死亡現(xiàn)場(chǎng)離奇詭異浇雹,居然都是意外死亡沉御,警方通過查閱死者的電腦和手機(jī)屿讽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吠裆,“玉大人伐谈,你說我怎么就攤上這事∈愿恚” “怎么了诵棵?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)祝旷。 經(jīng)常有香客問我履澳,道長(zhǎng)嘶窄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任距贷,我火速辦了婚禮柄冲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忠蝗。我一直安慰自己现横,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布阁最。 她就那樣靜靜地躺著戒祠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪速种。 梳的紋絲不亂的頭發(fā)上姜盈,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音配阵,去河邊找鬼贩据。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闸餐,可吹牛的內(nèi)容都是我干的饱亮。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼舍沙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼近上!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拂铡,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤壹无,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后感帅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斗锭,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年失球,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岖是。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡实苞,死狀恐怖豺撑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情黔牵,我是刑警寧澤聪轿,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站猾浦,受9級(jí)特大地震影響陆错,放射性物質(zhì)發(fā)生泄漏灯抛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一音瓷、第九天 我趴在偏房一處隱蔽的房頂上張望牧愁。 院中可真熱鬧,春花似錦外莲、人聲如沸猪半。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磨确。三九已至,卻和暖如春声邦,著一層夾襖步出監(jiān)牢的瞬間乏奥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工亥曹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邓了,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓媳瞪,卻偏偏與公主長(zhǎng)得像骗炉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蛇受,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容