📄 queryimpl.java
字号:
//QueryImpl.java
import java.rmi.*;
import java.rmi.server.*;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.XmlDocument;
public class QueryImpl extends UnicastRemoteObject implements QueryInterface
{
public QueryImpl() throws RemoteException
{
super();
}
private Document getDocument()
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
}
catch (ParserConfigurationException pce) {
pce.printStackTrace(); //出异常时输出异常信息,然后退出,下同
return null;
}
Document doc = null;
try {
doc = db.parse("SCORE.xml");
}
catch (Exception dom) {
dom.printStackTrace();
return null;
}
return doc;
}
private String getValue(NodeList n)
{
if (n.getLength() == 1){
Element e = (Element) n.item(0);
Text t = (Text) e.getFirstChild();
return t.getNodeValue();
}
else return "";
}
public String listAll() throws RemoteException
{//打印表
String temp="SID\t\tSNAME\tSCHOOL\t\tCOURSEA\tCOURSEB\tCOURSEC\tCOURSED\n";
Document doc = getDocument();
Element root = doc.getDocumentElement();
NodeList students = root.getElementsByTagName("STUDENT");
if(students != null)
{
for(int i = 0 ; i < students.getLength() ; i ++)
{
Element student = (Element) students.item(i);
String SID = student.getAttribute("SID");
String SNAME = "";
SNAME = getValue(student.getElementsByTagName("SNAME"));
temp=temp + SID +'\t'
+ SNAME +'\t'
+ getValue(student.getElementsByTagName("SCHOOL")) +'\t'
+ getValue(student.getElementsByTagName("COURSEA")) +'\t'
+ getValue(student.getElementsByTagName("COURSEB")) +'\t'
+ getValue(student.getElementsByTagName("COURSEC")) +'\t'
+ getValue(student.getElementsByTagName("COURSED")) +'\n';
}
}
return temp;
}
private void insertElement(Document doc, Element student, String attribute, String value)
{
Element e = doc.createElement(attribute);
student.appendChild(e);
Text t = doc.createTextNode(value);
e.appendChild(t);
}
public String insert(String SID,String SNAME,String SCHOOL,String courseA,
String courseB,String courseC,String courseD) throws RemoteException
{//插入操作
Document doc = getDocument();
Element root = doc.getDocumentElement();
Element student = doc.createElement("STUDENT");
student.setAttribute("SID",SID);
root.appendChild(student);
insertElement(doc,student,"SNAME",SNAME);
insertElement(doc,student,"SCHOOL",SCHOOL);
insertElement(doc,student,"COURSEA",courseA);
insertElement(doc,student,"COURSEB",courseB);
insertElement(doc,student,"COURSEC",courseC);
insertElement(doc,student,"COURSED",courseD);
try{
FileOutputStream outStream = new FileOutputStream("SCORE.xml");
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
( (XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
}
catch(Exception e)
{
e.printStackTrace();
return "Insert unsuccessfully.";
}
return "Insert successfully.";
}
public String update(String SID,String SNAME,String SCHOOL,String courseA,
String courseB,String courseC,String courseD) throws RemoteException
{//更新操作
Document doc = getDocument();
Element root = doc.getDocumentElement();
NodeList students = root.getElementsByTagName("STUDENT");
if(students != null)
{
for(int i = 0 ; i < students.getLength() ; i ++)
{
Element student = (Element) students.item(i);
if(SID.trim().equals(student.getAttribute("SID")))
{
root.removeChild(student);
Element stu = doc.createElement("STUDENT");
stu.setAttribute("SID",SID);
root.appendChild(stu);
insertElement(doc,stu,"SNAME",SNAME);
insertElement(doc,stu,"SCHOOL",SCHOOL);
insertElement(doc,stu,"COURSEA",courseA);
insertElement(doc,stu,"COURSEB",courseB);
insertElement(doc,stu,"COURSEC",courseC);
insertElement(doc,stu,"COURSED",courseD);
try{
FileOutputStream outStream = new FileOutputStream("SCORE.xml");
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
( (XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
}
catch(Exception e)
{
e.printStackTrace();
return "Update unsuccessfully.";
}
return "Update successfully.";
}
}
return "Not found the SID.";
}
else return "Not found the SID.";
}
public String delete(String SID) throws RemoteException
{//删除操作
Document doc = getDocument();
Element root = doc.getDocumentElement();
NodeList students = root.getElementsByTagName("STUDENT");
if(students != null)
{
for(int i = 0 ; i < students.getLength() ; i ++)
{
Element student = (Element) students.item(i);
if(SID.trim().equals(student.getAttribute("SID")))
{
root.removeChild(student);
try{
FileOutputStream outStream = new FileOutputStream("SCORE.xml");
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
( (XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
}
catch(Exception e)
{
e.printStackTrace();
return "Delete unsuccessfully.";
}
return "Delete successfully.";
}
}
return "Not found the SID.";
}
else return "Not found the SID.";
}
public String sumScore() throws RemoteException
{//计算学生总成绩
String temp="SID\t\tSNAME\tSCHOOL\t\tsumScore\n";
Document doc = getDocument();
Element root = doc.getDocumentElement();
NodeList students = root.getElementsByTagName("STUDENT");
if(students != null)
{
for(int i = 0 ; i < students.getLength() ; i ++)
{
Element student = (Element) students.item(i);
String SID = student.getAttribute("SID");
String SNAME = "";
SNAME = getValue(student.getElementsByTagName("SNAME"));
int courseA = java.lang.Integer.parseInt(getValue(student.getElementsByTagName("COURSEA")));
int courseB = java.lang.Integer.parseInt(getValue(student.getElementsByTagName("COURSEB")));
int courseC = java.lang.Integer.parseInt(getValue(student.getElementsByTagName("COURSEC")));
int courseD = java.lang.Integer.parseInt(getValue(student.getElementsByTagName("COURSED")));
temp=temp + SID +'\t'
+ SNAME +'\t'
+ getValue(student.getElementsByTagName("SCHOOL")) +'\t'
+ java.lang.String.valueOf(courseA + courseB + courseC + courseD) +'\n';
}
}
return temp;
}
public String find(String SID, String attribute) throws RemoteException
{
Document doc = getDocument();
Element root = doc.getDocumentElement();
NodeList students = root.getElementsByTagName("STUDENT");
if(students != null)
{
for(int i = 0 ; i < students.getLength() ; i ++)
{
Element student = (Element) students.item(i);
if(SID.trim().equals(student.getAttribute("SID")))
{
return getValue(student.getElementsByTagName(attribute.trim()));
}
}
return "Not found the SID.";
}
else return "Not found the SID.";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -