Java大作业同学通信录管理系统.docx
《Java大作业同学通信录管理系统.docx》由会员分享,可在线阅读,更多相关《Java大作业同学通信录管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
Java大作业同学通信录管理系统
Java程序设计
学生通讯录系统设计
计算机Z1111班:
张志虎、葛志强
2013/12/21
同学通信录管理系统
一、功能要求:
1、信息录入,包括记录的追加和插入;
2、信息删除;
3、信息修改;
4、信息排序和查询;
5、信息的保存和装载;
6、简单的帮助。
系统开发目录:
图2-1:
系统开发目录
二、用例图
图2-1:
系统用例图
三、类图
图3-1:
系统类图书
四、截图及核心代码
1、登录模块
功能介绍:
实现用户的登陆,还包含注册账号和找回密码两个功能。
同时可以实现记住密码、自动登陆。
界面展示:
图4-1系统登录
核心代码:
try{
Stringname=cobUserName.getSelectedItem().toString();//获取用户输入的用户名
//输入用户名是否为空
if(name.equals("")){
JOptionPane.showMessageDialog(
null,
"用户名不能为空!
",
"登录失败",
JOptionPane.INFORMATION_MESSAGE
);
}
Stringpassword=newString(txtPassword.getPassword()).trim();//获取用户输入的密码
//输入密码是否为空
if(password.equals("")){
JOptionPane.showMessageDialog(
null,
"密码不能为空!
",
"登录失败",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
booleanisMemoryPWD=chbMemoryPWD.isSelected();
booleanisAutoLogon=chbAutoLogon.isSelected();
//System.out.println(isMemoryPWD);
Useruser=newUser(name,password);
if(user.userLogon()){//用户是否存在
UserPropertyuserp=newUserProperty(user,isMemoryPWD,isAutoLogon);
ReadWriteProperties.writeProperties(userp);
dispose();
MainFramemainframe=newMainFrame(user);//启动主操作界面
mainframe.setVisible(true);
}else{
//提示失败信息
JOptionPane.showMessageDialog(
null,
"用户名或密码输入有误!
",
"登录成功",
JOptionPane.INFORMATION_MESSAGE
);
}
cobUserName.setFocusable(true);//输入用户名的控件获得焦点
txtPassword.setText(null);//输入密码的控件为空
}catch(Exceptione){}
}
●登录界面--账号注册
功能介绍:
注册用户
界面展示:
图4-2系统用户注册
核心代码:
publicvoiduserRegist(){
Stringusername=txtUserName.getText().trim();
Stringpassword=newString(txtpassword.getPassword()).trim();
Stringpasswordok=newString(txtPasswordOk.getPassword());
Stringid=txtId.getText().trim();
//用户名不能为空
if(username.isEmpty()){
//提示信息
JOptionPane.showMessageDialog(
null,
"用户名不能为空!
",
"用户注册",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
//用户名为5~18
if(username.length()<5||username.length()>18){
//提示信息
JOptionPane.showMessageDialog(
null,
"用户名长度应在5~18之间!
",
"用户注册",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
Useruser=newUser(username,password,id);
try{
if(user.userRegist()){
//提示失败信息
JOptionPane.showMessageDialog(
null,
"注册成功!
",
"注册成功",
JOptionPane.INFORMATION_MESSAGE
);
dispose();
@SuppressWarnings("unused")
LogonFramelogon=newLogonFrame();
}else{
//提示失败信息
JOptionPane.showMessageDialog(
null,
"此注册用户已存在!
",
"注册失败!
",
JOptionPane.INFORMATION_MESSAGE
);
txtUserName.setFocusable(true);
}
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
●登录界面—找回密码
功能介绍:
用户忘记密码,可以通过验证用户名和身份证号找回密码
界面展示:
图4-3系统找回密码
核心代码:
publicvoiduserfindPwd(){
Stringusername=txtUserName.getText().trim();
Stringid=txtId.getText().trim();
//用户名不能为空
if(username.isEmpty()){
//提示信息
JOptionPane.showMessageDialog(
null,
"用户名不能为空!
",
"用户注册",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
//用户名为5~18
if(username.length()<5||username.length()>18){
//提示信息
JOptionPane.showMessageDialog(
null,
"用户名长度应在5~18之间!
",
"用户注册",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
//身份证号不能为空
//身份证号不是18位时
//验证身份证号
Useruser=newUser();
user.setUsername(username);
user.setId(id);
try{
Useruserr=user.userFindPwd();
if(userr==null){
JOptionPane.showMessageDialog(
null,
"用户名或身份证号有误!
",
"找回密码失败",
JOptionPane.INFORMATION_MESSAGE
);
}else{
JOptionPane.showMessageDialog(
null,
"用户名:
"+userr.getUsername()+"\r\n密码:
"+newString(userr.getPassword()).trim(),
"找回密码成功",
JOptionPane.INFORMATION_MESSAGE
);
}
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
2、系统主界面
功能介绍:
包含系统管理、文件管理、操作管理、其他4个功能模块,具体模块功能后面详细介绍
主界面展示:
图4-4系统主操作界面
核心代码:
//显示关于对话框
JMenuItemmntmAbout=newJMenuItem("\u7CFB\u7EDF\u5173\u4E8E");
mnOther.add(mntmAbout);
JMenuItemmntmHelp=newJMenuItem("\u5E2E\u52A9");
mntmHelp.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(!
helpFlag){
panelHelp.setVisible(true);
Stringstr="系统名称:
\r\n";
txtHelpInfor.setText(str);
helpFlag=true;
}else{
panelHelp.setVisible(false);
helpFlag=false;
}
}
})
2.1.1、系统管理—修改密码
功能介绍:
更改用户密码
界面展示:
图4-5系统更改密码
核心代码:
publicvoidupdatepwd(){
Stringoldpassword=newString(txtOldPassword.getPassword()).trim();
Stringnewpassword=newString(txtNewPassword.getPassword()).trim();
Stringpasswordok=newString(txtPasswordOk.getPassword()).trim();
//旧密码不能为空
if(oldpassword.isEmpty()){
//提示信息
JOptionPane.showMessageDialog(
null,
"旧密码不能为空!
",
"用户更改密码",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
//新密码不能为空
//密码为6~15
//确认密码不能为空
//两次密码不一致
//是否更改密码成功
try{
if(!
user.userUpdatePwd(newpassword)){
//失败
JOptionPane.showMessageDialog(
null,
"原密码输入有误!
",
"密码更改失败",
JOptionPane.INFORMATION_MESSAGE
);
}else{//成功
JOptionPane.showMessageDialog(
null,
"密码更改成功",
"密码更改成功",
JOptionPane.INFORMATION_MESSAGE
);
}
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
2.1.2、系统管理—注销账号
功能介绍:
退回到登陆界面
界面:
图4-6系统管理-注销账号
核心代码:
mntmLogoff.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
dispose();
LogonFrameframe=newLogonFrame();
}
});
2.1.3、系统管理—退出系统
功能介绍:
退出系统
图4-7系统管理-退出系统
核心代码:
mntmExit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
System.exit(0);
}
});
2.2.1、文件管理—导入文件
功能介绍:
导入类型是.TXT类型的通讯记录到通讯系统中
界面展示:
图4-8文件管理-导入文件
核心代码:
okButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(v==null){
JOptionPane.showMessageDialog(
null,
"导入失败,请选择文件进行导入",
"导入数据",
JOptionPane.INFORMATION_MESSAGE
);
return;
}else{
UseFile.writeFile(fname,v);
JOptionPane.showMessageDialog(
null,
"数据导入成功",
"导入数据",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
}
});
btnSelectFile.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JFileChooserchooser=newJFileChooser();
FileNameExtensionFilterfilter=newFileNameExtensionFilter("*.txt","txt");
chooser.setFileFilter(filter);
intreturnVal=chooser.showOpenDialog(getParent());
Stringfilename=null;
if(returnVal==JFileChooser.APPROVE_OPTION){
filename=chooser.getSelectedFile().toString();
txtFilePath.setText(filename);//在文本框中显示文件路径
if(!
filename.substring(filename.indexOf(".")+1,filename.length()).equals("txt")){
JOptionPane.showMessageDialog(
null,
"文件类型必需为*.xls|*.txt",
"文件选择失败",
JOptionPane.INFORMATION_MESSAGE
);
txtFilePath.setText("");
return;
}
}
}
});
2.2.1、文件管理—导出文件
功能介绍:
将在同学通讯录系统中生成的文件以.TXT文件形式导出
界面展示:
图4-9文件管理-导出文件
核心代码:
mntmSava.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JFileChooserchooser=newJFileChooser();
FileNameExtensionFilterfilter=newFileNameExtensionFilter("*.txt","txt");
chooser.setFileFilter(filter);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//选择目录和文件
intreturnVal=chooser.showSaveDialog(getParent());
if(returnVal==JFileChooser.APPROVE_OPTION){
Stringfilename=chooser.getSelectedFile().toString();//获取路径
VectorcVector=newVector();
UseFile.readFile(fname,cVector);
if(filename.indexOf('.')<=0){
filename+=".txt";
}
if(!
filename.substring(filename.indexOf(".")+1,filename.length()).equals("txt")){
JOptionPane.showMessageDialog(
null,
"文件类型必需为*.txt",
"导出",
JOptionPane.INFORMATION_MESSAGE
);
return;
}
UseFile.write(filename,cVector);
}
}
});
2.3.1、操作管理—增加通信记录
功能介绍:
增加新的同学信息,包括姓名、性别、电话、QQ号、邮箱、备注等
界面展示:
图4-10操作管理-添加通信记录
核心代码:
publicvoidappend(){
booleanflag=true;
Stringname=txtName.getText();
booleansex=Boolean.parseBoolean(rdbtnMale.isSelected()?
"true":
"false");
intage=this.sldAge.getValue();
Stringintegrity=this.cobIntegrity.getSelectedItem().toString();
Stringtel=txtTel.getText();
Stringqq=txtQQ.getText();
Stringemail=txtEmail.getText();
Stringmemo=txtMemo.getText();
if(name.isEmpty()){
JOptionPane.showMessageDialog(
null,
"姓名不能为空!
",
"增加通信信息",
JOptionPane.INFORMATION_MESSAGE
);
return;
}else{//否,添加新行后,加入新数据。
((javax.swing.table.DefaultTableModel)table.getModel()).insertRow(countRows,
newObject[]{name,
sex,
age,
integrity,
tel,
qq,
email,
memo});
}
row++;table.repaint();//刷新表格数据
Classmateclassmate=newClassmate(user.getUsername(),name,sex,age,integrity,tel,qq,email,memo);
cVector.add(classmate);
UseFile.writeFile(fname,cVector);
JOptionPane.showMessageDialog(
null,
"添加成功!
",
"增加通信信息",
JOptionPane.INFORMATION_MESSAGE
);
txtName.setText("");
txtTel.setText("");
txtQQ.setText("");
}
2.3.2、操作管理—删除通信记录
功能介绍:
通过姓名检索,找出要删除者的全部信息,选择删除或全部删除
界面展示:
图4-10操作管理-删除通信记录
核心代码:
//检索操作
publicvoidSelect(){
try{
if(cVector.size()<=0){
JOptionPane.showMessageDialog(
null,
"没有检索到任何记录!
",
"删除通信信息",
JOptionPane.INFORMATION_MESSAGE
);return;
}
Stringname;
name=txtName.getText();
if(name.isEmpty()){
tableLoadData();//显示全部通信记录
btnAllDel.setEnabled(true);
btnDelete.setEnabled(true);
DeleteFalg=true;
}else{
SelectByName(name);//姓名检索出要删除的通信记录
btnDelete.setEnabled(true);
DeleteFalg=false;
}
}catch(Exceptione){}
}
2.3.3、操作管理—更新通信记录
功能介绍:
通过姓名检索出要更新的全部信息,然后通过更新相应信息重新设置被检索出来人的信息
界面展示:
图4-11操作管理-更新通信记录
核心代码:
publicvoidUpdate(){
booleanflag=true;
Stringname=txtName.getText();
booleansex=Boolean.parseBoolean(rbtnMale.isSelected()?
"true":
"false");
intage=this.sldAge.getValue();
Stringintegrity=this.cobIntegrity.getSelectedItem().toString();
Stringtel=txtTel.getText();
Stringqq=txtQQ.getText();
Stringemail=txtE