Java程序课程设计报告文档格式.docx
《Java程序课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《Java程序课程设计报告文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
Xmlutils类(工具类)9
模块五:
xml文件9
六、操作方法(流程)10
1、添加学生10
2、查找学生11
3、删除学生12
七、设计体会13
参考文献14
前言
一直以来学生的成绩管理是学校工作中的一项重要内容,随着办学规模的扩大和招生人数的增加,学校工作繁杂、资料重多,普通的成绩管理已不能适应时代的发展,它浪费了许多的人力和物力。
在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。
虽然管理信息系统已进入高校,但还未普及而且对于学生成绩管理来说,还没有一套完整的、统一的系统,建立一个成绩维护系统是非常必要的。
建立学生成绩管理系统,采用计算机对学生成绩进行管理,能进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。
2、专业需求
通过java实习不仅可以提升本专业我们对此课程中的理论知识的综合应用能力而且可以提高我们的逻辑思维能力、软件开发能力。
我们通过Java技术在Windows平台下开发学生信息管理系统。
能够切实提高我们的程序设计水平,在实践中掌握面向对象程序设计的开发思想。
1、开发环境
操作系统:
Windows7
编程环境:
Eclipseneon.1
编程语言:
Java
虚拟机版本:
Java8u111
主要技术:
xml
二、设计分析
1、系统功能需求
由于本系统比较简单,学生信息管理系统主要对在校学生的个人基本信息以及成绩信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;
没有对学生用户提供成绩查询功能。
系统程序没有采用JavaSwing组件实现,数据记录操作采用xml实现。
学生信息管理系统要面对教师。
对于教师,需要查询全部学生的基本信息和成绩信息,并且可以对其进行修改。
进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。
在查询功能里面,可以选择是查询学生基本信息,还是查询学生成绩信息。
在查询学生基本信息时,可以从依据不同字段,即学生信息表的不同属性进行查找。
在查找学生成绩信息时,只能依据学生姓名和学号进行查找。
在修改功能里面,包括对学生基本信息表和学生成绩表进行增加和删除记录。
3、程序功能简介
1、总体设计
这次java设计的学生信息管理系统,是对学生的个人信息,成绩信息以信息化的方式进行管理,最大限度地减少各个环节可能出现的错误,有效减少因人力资源局限性导致的存储信息量大,信息存储错误,混淆等问题,合理进行信息存储,使学校能够合理录入学生的个人资料,学期成绩情况,以及课程安排,为学校师生的工作提供后方面。
根据需求计
学生信息管理系统教师可以查询、增添、删除学生信息
2、详细设计
这次Java设计,首先,我们在自己电脑上装上了Eclipse
none.1(myeclipse需要收费,没有使用)等程序。
其次,我们敲程序代码。
源于程序的运行过程是进入提供用户输入机会的“视图层”,进而进入控制用户输入的“控制层”,最后到达“数据操作层”。
我们新建工程,建立StudentCof,在里面创建doman、exception、xmlutils、dao、UI包还有一个xml文件,在UI包中建main类,在dao包中建studentDao类,在doman包中建Student类,在包exception中创建StudentNotExistException类,在xmlutils创建了XmlUtils类。
4、程序结构
结构如java4-1图所示:
Java4-1图
在本次设计里,用户操作在UI包中的Main类里,通过用户输入,可以在显示框里进行增加,删除,查看学生信息:
如图Java4-2图:
Java4-2图
当在输入框中输入操作类型以后,此程序就会进行相对应的操作,输入后的操作主要执行的是dao包中的StudentDao类,通过StudentDao类,将信息进行增加,删除,显示。
信息记录在exam.xml中,利用工具类——XmlUtils.Java,将StudentDao类获得的操作信息记录解析入xml中去,在页面显示的信息,主要通过StudentDao类将xml中的信息解析记录进doMan包中的Student类中去,此程序中的异常类主要针对于StudentDao类出现的异常进行处理。
5、各模块的功能及说明
Main类
部分代码:
System.out.println("
添加学生:
(a)删除学生:
(b)查找学生:
(c)"
);
System.out.print("
请输入操作的类型:
"
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Stringtype=br.readLine();
if("
a"
.equals(type)){
System.out.print("
请输入学生姓名:
Stringname=br.readLine();
请输入学生学号:
Stringstuid=br.readLine();
请输入学生身份证号:
Stringexamid=br.readLine();
请输入学生所在地:
Stringlocation=br.readLine();
请输入学生成绩:
Stringgrade=br.readLine();
Students=newStudent();
s.setExamid(examid);
s.setGrade(Double.parseDouble(grade));
s.setLocation(location);
s.setName(name);
s.setStuid(stuid);
StudentDaodao=newStudentDao();
dao.add(s);
System.out.println("
----添加完成!
----"
在本模块中主要用于使用者的操作,当显示如图Java4-2的样子以后,使用者即可将其指令输入,BufferedReader将会把输入的字符接受,存放到type中去。
在遇上的代码片段中,主要用于信息的输入,添加的信息将会逐条记录下来,临时存放在Student类中的变量里面,然后通过StudentDao类,将其存储到xml中,添加信息过程如Java5-1图所示:
Java5-1图
Student类
publicclassStudent{
privateStringstuid;
privateStringexamid;
privateStringname;
privateStringlocation;
privatedoublegrade;
publicStringgetStuid(){
returnstuid;
}
publicvoidsetStuid(Stringstuid){
this.stuid=stuid;
publicStringgetExamid(){
returnexamid;
publicvoidsetExamid(Stringexamid){
this.examid=examid;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
this.name=name;
publicStringgetLocation(){
returnlocation;
publicvoidsetLocation(Stringlocation){
this.location=location;
publicdoublegetGrade(){
returngrade;
publicvoidsetGrade(doublegrade){
this.grade=grade;
@Override
publicStringtoString(){
return"
stuid:
+stuid+"
\nexamid:
+examid+"
\nname:
+name+"
\nlocation:
+location
+"
\ngrade:
+grade;
本模块主要是用于解析Xml中的信息,显示到屏幕上,或者临时存储屏幕上输入的信息。
本模块记录的信息有:
1.姓名
2.学号
3.身份证号
4.家庭住址
5.成绩
为了使信息不被外界随意改变,全部采用private修饰符,并且设置get,set方法,用于修改,访问变量内容
重写其toString方法,使其能够显示个人全部信息。
StudentDao类(程序核心)
代码段一:
Documentdocument=XmlUtils.getDocument();
Elementstudent=document.createElement("
student"
student.setAttribute("
stuid"
s.getStuid());
examid"
s.getExamid());
Elementname=document.createElement("
name"
Elementlocation=document.createElement("
location"
Elementgrade=document.createElement("
grade"
name.setTextContent(s.getName());
location.setTextContent(s.getLocation());
grade.setTextContent(s.getGrade()+"
student.appendChild(name);
student.appendChild(location);
student.appendChild(grade);
document.getElementsByTagName("
exam"
).item(0).appendChild(student);
XmlUtils.writeXml(document);
代码段二:
NodeListlist=document.getElementsByTagName("
for(inti=0;
i<
list.getLength();
i++){
Elementstudent=(Element)list.item(i);
if(student.getAttribute("
).equals(examid)){
Students=newStudent();
s.setExamid(examid);
s.setStuid(student.getAttribute("
));
s.setName(student.getElementsByTagName("
).item(0).getTextContent());
s.setLocation(student.getElementsByTagName("
s.setGrade(Double.parseDouble(student.getElementsByTagName("
).item(0).getTextContent()));
returns;
}
}
returnnull;
}
代码段三:
for(inti=0;
i++){
if(list.item(i).getTextContent().equals(name)){
list.item(i).getParentNode().getParentNode().removeChild(list.item(i).getParentNode());
XmlUtils.writeXml(document);
return;
thrownewStudentNotExistException(name+"
不存在!
!
本模块是程序的核心部分,作用是将信息从内存中取出,存放到xml中,或者根据关键字,将xml中的相关信息解析到Student类中去,或者根据指令删除xml中存在的相关信息。
模块一是用于添加学生信息的代码段,从Student类中暂存的信息中将其添加到创建的相对应的xml元素中,将其存储起来。
模块二是显示信息,通过examid编号,经相对应得信息模块解析到Student类中相对应的变量中去。
模块三是用来删除信息的,通过关键字name,直接删除在xml中对应信息的根节点(但是不会删除其他的信息块)。
Xmlutils类(工具类)
代码段:
publicclassXmlUtils{
privatestaticStringfilename="
src/exam.xml"
;
publicstaticDocumentgetDocument()throwsException{
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
DocumentBuilderbuider=factory.newDocumentBuilder();
returnbuider.parse(filename);
publicstaticvoidwriteXml(Documentdocument)throwsException{
TransformerFactoryfactory=TransformerFactory.newInstance();
Transformertf=factory.newTransformer();
tf.transform(newDOMSource(document),newStreamResult(newFileOutputStream(filename)));
工具类的权限修饰符为static静态,使其在使用时不必再创建一个工具类的对象,getDocument方法用于获取xml中的内容,利用WriteXml方法,将获取的信息保存到xml中去。
xml文件
Xml内容如Java5-2图所示:
Java5-2图
XML,可扩展的标识语言(eXtensibleMarkupLanguage),其先驱是SGML和HTML。
SGML,通用标识语言标准(StandardGeneralizedMarkupLanguage),是国际上定义电子文件结构和内容描述的标准,是一种非常复杂的文档结构,主要用于大量高度结构化数据的防卫区和其它各种工业领域,便于分类和索引。
同XML相比,SGML定义的功能很强大,然而它不适于Web数据描述,而且价格非常昂贵。
XML与Access,Oracle和SQLServer等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:
数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。
事实上XML与其他数据表现形式最大的不同是:
他极其简单。
这是一个看上去有点琐细的优点,但正是这点使XML与众不同。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、MacOS、Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。
XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。
XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成。
因为XML是个公共格式,(它不专属于任何一家公司),不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言。
6、操作方法(流程)
1、添加学生
首先要选择要进行操作的选项,并在屏幕输入对象的字母:
添加学生信息如图Java6-1图:
Java6-1图
按下Enter键,依次屏幕上提示信息输入内容,如:
Java6-2图:
Java6-2图
在学生成绩一栏填完后,再按下Enter键,显示添加信息完成。
2、查找学生
首先输入对应的字母,然后按下Enter键:
如Java6-3图:
Java6-3图
按下Enter键后会出现如图Java6-4图的提示信息:
Java6-4图
在他的提示后输入提示信息,并按下Enter键,可将会在屏幕显示其信息,如
Java6-5图:
Java6-5图
3、删除学生
如Java6-6图:
Java6-6图
按下Enter键后会出现如图Java6-7图的提示信息:
Java6-7图
在他的提示后输入提示信息,并按下Enter键,可将会在屏幕显示删除信息,如
Java6-8图:
Java6-8图
当再次重复操作的时候,将会被提醒没有该的信息
如图Java6-9图:
Java6-9图
七、设计体会
这次的java程序设计,我把所学的知识综合运用到开发过程中,使我获得了许多在课本中学不到的知识。
当然,在实习中也遇到了许多的困难。
通过编写、调试程序我明白了许多。
第一,不应该被未知的困难吓到,一切事情只要勇于一步步去做就会成功,想想当初害怕的要命自己就觉得好笑。
第二,态度要端正,摆正自己的心态,不要以为什么东西上网搜搜就可以了,一定要有自己的东西。
只有自己付出过,当程序运行成功时的那种喜悦才会令自己有一种莫名的自豪感。
态度决定一切!
第三,要细心,在对程序的过程中我锻炼了自己的耐力和毅力
参考文献
[1][美]豪斯特曼.Java核心技术:
卷I基础知识[M].8版.
[2]李刚.疯狂的Java讲义[M].3版.北京:
电子工业大学,2014.
[3]吕凤翥,马皓.Java语言程序设计(第2版).北京:
清华大学出版社,2010.