java实训报告Word文档下载推荐.docx
《java实训报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java实训报告Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
(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;
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;
publicclassReader
privatestaticfinalintMAX_Employee_COUNT=100;
privatestaticEmployee[]allEmployees;
//变量,用于存储教师的实际人数,文件读取结束后该值就存储了文件中的教师人数
privatestaticintactualEmployeeCount=0;
publicstaticvoidreadAllEmployeesFromFile()throwsIOException{
allEmployees=newEmployee[MAX_Employee_COUNT];
EmployeeInfo.txt"
BufferedReaderreader=newBufferedReader(newFileReader(filePath));
Stringline;
String[]values;
//教师对象,准备给各成员变量赋值并添加到数组对象中
Employeeemployee=null;
//从文件中读取一行,因为是第一次读取,因此实际上读取的是首行
//数组下标,从0开始,把teacher添加到数组时其下标即为i
//每添加一个Teacher对象,i自增1,即:
i++
inti=0;
//如果没有达到文件的末尾
while(line!
=null){
//新建一个Teacher对象,用于存储该行的教师信息
employee=newEmployee();
//把读取的一行数据使用制表符\t进行分割,得到包含教师信息的字符串数组
values=line.split("
//调用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;
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();
user.setText("
"
//临时看来可删除
pass.setText("
login.addActionListener(this);
cancel.addActionListener(this);
p.add(newJLabel("
用户名"
));
p.add(user);
密码"
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())>
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("
))
{
请输入密码"
}
else
{
Stringusername=user.getText();
Stringpassword=pass.getText();
intactualSecretCount=re.getSecretCount();
Secret[]allSecrets;
allSecrets=re.getSecrets();
booleanb=false;
for(inti=0;
i<
actualSecretCount;
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,"
用户名或密码错误"
登录失败"
}
catch(Exceptioner)
System.out.println(e.toString());
}
if(e.getSource()==cancel)
System.exit(0);
importjava.awt.Menu;