是否有一种方法从保存的文件中读取信息,以检查是否存在已保存的doctorID ?



所以我正在尝试为学校项目创建一个医疗诊所系统管理程序。这是我使用NetBeans创建GUI的第一个项目,不幸的是,我的课在这个主题上花了大约两周的时间,所以我不像我希望的那样精通这个。所以请不要对我的代码太苛刻。当我创建一个医生对象时,数据被保存到一个文件中。当我返回并尝试使用相同的ID创建另一个医生时,我的布尔isKeyPresent无法捕获它,因为(我假设)我的医生映射与保存文件中创建的任何医生都没有关联。我如何解决这个问题,使我的系统不做医生,如果ID已经在使用中?

private void btnAddDoctorActionPerformed(java.awt.event.ActionEvent evt) {                                             

try {

String id = txtDocID.getText();
String name = txtDocName.getText();
String specialty = txtSpecialty.getText();

boolean isKeyPresent = administrative.doctors.containsKey(id);
if(isKeyPresent) {

JOptionPane.showMessageDialog(this, "Doctor ID Already Exists");
}
else {

addDoctor(name, specialty, id);
String s = name + ",";
s += specialty + ",";
s += id;

FileWriter w = new FileWriter(fileLocation);
BufferedWriter writer = new BufferedWriter(w);
writer.write(s);
writer.close();
JOptionPane.showMessageDialog(this, "Doctor Added");
}        
txtDocID.setText("");
txtDocName.setText("");
txtSpecialty.setText("");
}
catch(IOException e) {

JOptionPane.showMessageDialog(this, "File Error");
}
}

首先,我建议在访问txtDocID字段时将医生id转换为小写(String#toLowerCase),因为这可以防止用户输入不同大小写的重复id。

我不确定你的addDoctor方法做什么,我猜它只是把它添加到GUI。如果您包含了相应的代码将会很有用。如果是这种情况,那么您假设问题是administrative.doctorsMap没有链接到您的保存文件是正确的。

解决这个问题的一种方法是在将医生保存到保存文件后将其添加到administrative.doctorsMap中。

但是,我建议您创建一个单独的类来处理保存和存储医生。这样,您只需调用DoctorManager#saveDoctor之类的东西,它就会写入文件并保存到内部Map中。封装Map也是值得的。

最后,关于对数据库的评论,听起来你还没有学过它们,而且对于你的用例来说,这可能不值得麻烦。将代码抽象为使用一个单独的类来管理医生的存储可能是理想的。

最新更新