java实训报告.docx
- 文档编号:5061828
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:35
- 大小:265.81KB
java实训报告.docx
《java实训报告.docx》由会员分享,可在线阅读,更多相关《java实训报告.docx(35页珍藏版)》请在冰豆网上搜索。
java实训报告
北京联合大学
《面向对象程序设计》实践报告
员工信息管理系统
题目:
员工信息管理系统
姓名:
@@@
学号:
###############
专业:
计算机工程
指导老师:
########
编制时间:
2012-12-27
北京联合大学编制
摘要
当下为信息时代,信息的管理日益重要。
信息管理系统软件的需求很大。
我希望通过本次实训达到训练自己的目的。
本实验中,我利用了java作为编程语言,实现了图形化用户界面,信息存取只是对本地文件的。
关键字:
员工信息管理系统java图形化用户界面本地文件存取
一、引言
当今社会是信息时代,信息的多而繁杂,信息的管理就尤为重要。
每个公司都会有一个信息管理系统。
员工信息管理系统是信息管理系统的关键的组成部分。
使用的设计软件进行信息管理有着重要意义。
作为计算机工程系的学生来说,在未来的工作中可能会遇到基于此的软件设计。
基于此,我决定把本次实训的题目设定为员工信息管理系统。
二、软件主要功能
(1)能够永久存储一个部门的员工信息
(2)有管理者图形化登陆界面
(3)能够查看员工信息
(4)能够增加和删除管理员
(5)能够根据员工的姓名、年龄等进行查询并输出查询结果;
(6)能够更改员工信息,例如把员工的职务由高级程序员改为项目经理
三、用户界面(UI)设计
(1)该应用程序是图形化用户界面。
(2)在程序启动后出现用户登录界面:
填写正确的用户名和密码后就可以进入信息操作。
(3)在有四个菜单,点击后会有相应的选项,点击选项后可进入不同的操作的对话框。
(4)各个操作如下图所示。
四、数据存储方案设计
采用文件来存储各部门的员工信息,文件名称为Seceret.txt和EmployeeInfo.txt。
五、类的设计
(1)首先设计类Employee,该类表示员工,根据文件中的员工信息,至少需要定义下列成员变量:
员工姓名、员工年龄、员工职称、员工薪水。
然后定义相应的get方法和set方法。
(2)然后设计类Secret,该类表示管理员登录账号,包括账号名和密码,然后定义相应的get方法和set方法。
(3)然后设计类Reader,该类用于读取文件中的员工信息。
然后将员工信息存入一个数组中,并且得到有多少个有效数据。
(4)然后设计类ReaderSecret,该类用于读取文件中的管理员信息。
然后将管理员信息存入一个数组中,并且得到有多少个有效数据。
(5)然后设计类ReaderSecret,该类用于读取文件中的管理员信息。
然后将管理员信息存入一个数组中,并且得到有多少个有效数据。
(6)然后设计类SaveS,该类用于在结束了对管理员信息的操作后把信息存到读取数据的文件中去。
并且要保证存储的方式能够再次正常读取。
(7)然后设计类SaveE,该类用于在结束了对员工信息的操作后把信息存到读取数据的文件中去。
并且要保证存储的方式能够再次正常读取。
(8)然后设计类loginFrame,该类用于设计用户登录界面,对界面布局,然后添加事件监听器,根据不同的操作,做出不同的反应。
(9)然后设计类mainFrame,该类用于设计信息管理的主界面,对界面布局,设计菜单,然后添加事件监听器,根据不同的操作,做出不同的反应。
(10)然后设计类aboutFrame,该类用于显示一些信息,没有数据的操作,只是一些JLabel。
(11)然后设计类addFrame,该类用于增加员工信息,当执行时会创建一个窗口,在里面设计JLabel、JTextField、JButton,操作后,将其获得的信息存入数组。
(12)然后设计类editFrame,该类用于编辑员工信息,当执行时会创建一个窗口,在里面设计JLabel、JTextField、JButton,操作后,将其获得的信息覆盖原数组中的信息。
(13)然后设计类findFrame,该类用于查询员工信息,当执行时会创建一个窗口,在里面设计JComboBox、JLabel、JTextField、JButton,操作后,将其获得与查找内容相符的信息,用到是字符串的比较。
(14)然后设计类userFrame,该类用于查询、修改、增删管理员信息,当执行时会创建一个窗口,其操作与在主窗口中的相似。
六、设计思想综述、解决问题的思路
本程序的总的思路是:
读取数据、操作数据、保存数据。
其中,读取和保存数据应用了文件读取方面的知识,相对比较简单。
数据的操作是本程序的核心。
数据操作的核心是对一个数组的操作。
追加信息,就是在整个大数组中的有效数组部分的后面加上一个新的信息。
编辑就是获得该信息的在数组中的位置,然后,更改其中的信息。
删除是把要删除信息后面的有效信息一次存入前一个数组元素中。
查找是利用了字符串的比较,然后把符合的存入到一个新的数组中,在把新数组输出。
而图形化界面只是一层皮而已,让程序美观,不涉及到算法问题。
七、程序的不足以及改进的方向
程序是在实训周集中完成的,时间紧,任务重,虽然自己进了努力,但是不免也有一些问题和待完善的地方。
程序的主要问题是,采用了数组临时储存要操作的信息。
当数据量变大,比如要操作的员工是1000人,信息量再增加,就会使程序显得力不从心,太吃内存,会影响程序的正常远行。
带完善的部分是,我的程序只能在选定后紧执行一个操作,然后关闭,再执行其他的操作,这样会在实际的信息管理中显得不顺手,不够人性化。
还有就是本程序是使用的本地储存文件的方式,限制了程序的移植。
八、收获和体会
通过本次课程设计,不仅让我更深入的了解JAVA这门学科,更使自己有了继续探索的兴趣。
对我来说,在之前的学习过程中没有能够很好的掌握JAVA语言的学习,在很多地方还有生疏和遗漏,并且在此次课程设计过程中也遇到困难不能自己独立解决。
但是,通过这次程序设计,除了增加了自己的编程能力,提高了我对JAVA的应用能力,同时我也深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。
在今后的学习中,我将继续保持严谨的学习态度。
总之,此次课程设计让我获益匪浅。
九、附录
publicclassEmployee{
privateStringname;
privateStringage;
privateStringid;
privateStringposition;
privateStringsalary;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetAge(){
returnage;
}
publicvoidsetAge(Stringage){
this.age=age;
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetPosition(){
returnposition;
}
publicvoidsetPosition(Stringposition){
this.position=position;
}
publicStringgetSalary(){
returnsalary;
}
publicvoidsetSalary(Stringsalary){
this.salary=salary;
}
}
publicclassSecret
{
privateStringusername;
privateStringpassword;
publicStringgetName(){
returnusername;
}
publicvoidsetName(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.io.IOException;
publicclassReaderSecret
{
privatestaticSecret[]allSecrets;
privatestaticfinalintMAX_Secret_COUNT=10;
privatestaticintactualSecretCount=0;
publicstaticvoidreadAllSecretsFromFile()throwsIOException
{
allSecrets=newSecret[MAX_Secret_COUNT];
finalStringfilePath="Secret.txt";
BufferedReaderreader=newBufferedReader(newFileReader(filePath));
Stringline;
String[]values;
Secretsec=null;
line=reader.readLine();
inti=0;
while(line!
=null)
{
sec=newSecret();
values=line.split("\t");
sec.setName(values[0]);
sec.setPassword(values[1]);
allSecrets[i]=sec;
i++;
line=reader.readLine();
}
actualSecretCount=i;
reader.close();
}
publicSecret[]getSecrets()
{
returnallSecrets;
}
publicintgetSecretCount(){
returnactualSecretCount;
}
publicvoidsetSecretCount(intactualSecretCount){
this.actualSecretCount=actualSecretCount;
}
}
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.io.IOException;
publicclassReader
{
privatestaticfinalintMAX_Employee_COUNT=100;
privatestaticEmployee[]allEmployees;
//变量,用于存储教师的实际人数,文件读取结束后该值就存储了文件中的教师人数
privatestaticintactualEmployeeCount=0;
publicstaticvoidreadAllEmployeesFromFile()throwsIOException{
allEmployees=newEmployee[MAX_Employee_COUNT];
finalStringfilePath="EmployeeInfo.txt";BufferedReaderreader=newBufferedReader(newFileReader(filePath));
Stringline;
String[]values;
//教师对象,准备给各成员变量赋值并添加到数组对象中
Employeeemployee=null;
//从文件中读取一行,因为是第一次读取,因此实际上读取的是首行
line=reader.readLine();
//数组下标,从0开始,把teacher添加到数组时其下标即为i
//每添加一个Teacher对象,i自增1,即:
i++
inti=0;
//如果没有达到文件的末尾
while(line!
=null){
//新建一个Teacher对象,用于存储该行的教师信息
employee=newEmployee();
//把读取的一行数据使用制表符\t进行分割,得到包含教师信息的字符串数组
values=line.split("\t");
//调用setter方法
//把文件中的教师信息赋值给teacher对象的各个成员变量
employee.setName(values[0]);
employee.setAge(values[1]);
employee.setId(values[2]);
employee.setPosition(values[3]);
employee.setSalary(values[4]);
//把teacher对象添加到对象数组中
allEmployees[i]=employee;
//下标自增1
i++;
line=reader.readLine();
}
actualEmployeeCount=i;
reader.close();
}
publicEmployee[]getEmployee()
{
returnallEmployees;
}
publicintgetEmployeeCount()
{
returnactualEmployeeCount;
}
publicvoidsetEmployeeCount(intactualEmployeeCount)
{
this.actualEmployeeCount=actualEmployeeCount;
}
}
publicclassTest
{
publicstaticvoidmain(String[]args)
{
loginFramelf=newloginFrame();
}
}
importjava.awt.Dimension;
importjava.awt.Image;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.IOException;
importjavax.swing.JButton;
importjavax.swing.JDialog;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
classloginFrameextendsJDialogimplementsActionListener{
JPanelp;
JTextFielduser,pass,user1;
JButtonlogin,cancel;
ReaderSecretre=newReaderSecret();
publicloginFrame()
{
p=newJPanel();
user=newJTextField(10);
user1=newJTextField(10);
pass=newJTextField(10);
login=newJButton("登录");
cancel=newJButton("退出");
Readerr=newReader();
try{
r.readAllEmployeesFromFile();
}catch(IOExceptione){
System.out.println(e.getMessage());
e.printStackTrace();
}
try{
re.readAllSecretsFromFile();
}catch(IOExceptione){
System.out.println(e.getMessage());
e.printStackTrace();
}
user.setText("");//临时看来可删除
pass.setText("");
login.addActionListener(this);
cancel.addActionListener(this);
p.add(newJLabel("用户名"));
p.add(user);
p.add(newJLabel("密码"));
p.add(pass);
p.add(login);
p.add(cancel);
this.add(p);
//设置可见
this.setVisible(true);
this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});
this.setTitle("系统登录");
//不允许用户改变窗口大小
this.setResizable(false);
this.setSize(757,529);
//以下5行设置窗口位置
Toolkittoolkit=Toolkit.getDefaultToolkit();
Dimensionscreen=toolkit.getScreenSize();
inth=(screen.height-20-this.getHeight())>>1;//左移1为就是除以2
intw=(screen.width-this.getWidth())>>1;
this.setLocation(w,h);
}
publicvoidactionPerformed(ActionEvente){//验证信息登陆系统
if(e.getSource()==login){
if(user.getText().toString().equals("")){
JOptionPane.showMessageDialog(null,"请输入用户名","提示",JOptionPane.INFORMATION_MESSAGE);
}
else
if(pass.getText().toString().equals(""))
{
JOptionPane.showMessageDialog(null,"请输入密码","提示",JOptionPane.INFORMATION_MESSAGE);
}
else
{
Stringusername=user.getText();
Stringpassword=pass.getText();
intactualSecretCount=re.getSecretCount();
Secret[]allSecrets;
allSecrets=re.getSecrets();
booleanb=false;
for(inti=0;i { if(b) break; b=allSecrets[i].getName().equals(username)||allSecrets[i].getPassword().equals(password); } try { if(b) { this.dispose(); mainFramemf=newmainFrame(re);//创建主界面 mf.setTitle("员工信息管理系统"); mf.setVisible(true); mf.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}}); } else { JOptionPane.showMessageDialog(null,"用户名或密码错误","登录失败",JOptionPane.INFORMATION_MESSAGE); } } catch(Exceptioner) { System.out.println(e.toString()); } } } if(e.getSource()==cancel) { System.exit(0); } } } importjava.awt.Dimension; importjava.awt.Menu;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)