java学生宿舍管理系统论文.docx
《java学生宿舍管理系统论文.docx》由会员分享,可在线阅读,更多相关《java学生宿舍管理系统论文.docx(26页珍藏版)》请在冰豆网上搜索。
java学生宿舍管理系统论文
XXXX大学
《Java语言程序设计》课程设计(论文)
题目:
java学生宿舍管理系统
院(系):
专业班级:
学号:
学生姓名:
指导教师:
教师职称:
起止时间:
课程设计(论文)任务及评语
院(系):
教研室:
学号
学生姓名
专业班级
课程设计(论文)题目
学生宿舍管理系统
课程设计(论文)任务
任务与要求:
(1).掌握面向对象程序设计语言JAVA的基本语法
(2).掌握JAVA面向对象设计的思想,
(3).掌握VJAVA6.0与MyEclipsJAVA开发工具的使用
(4).运用标准JAVA规范设计应用程序
设计过程中,要严格遵守设计的时间安排,听从指导教师的指导.正确地完成上述内容,规范完整地撰写出设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
年月日
第1章课程设计目的与要求
1。
1设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度.
通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力.
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的.
(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握面向对象程序设计的方法。
(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序和修改程序。
1.2实验环境
硬件要求能运行Windows操作系统的微机系统。
JAVA语言应用程序开发软件使用:
VJAVA系统,或其他JAVA语言应用程序开发软件.
1.3预备知识
熟悉JAVA语言程序设计的基本知识及VJAVA编辑器的使用方法。
1。
4设计要求
1。
仔细分析设计题目,画出程序流程图,编写程序源代码。
2.积极上机调试源程序,增强编程技巧与调程能力.
3.认真书写课程设计预习报告,课程设计说明书。
4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容.
第2章课程设计内容
2.1课题描述
对于问题的要求,我们可以选择使用链表处理数据,由于处理的数据相对比较多,所以在函数的具体实现时,可以考虑使用函数模板,函数模板会把很多问题的处理变得很容易,例如:
再查找学生信息时,使用姓名查找和学号或宿舍号查找方式,其中的两个函数只有函数的参数的类型不一样,功能完全一样,使用模板处理该问题,只需编写一次模板函数,再模板中声明的类型参数“T”,可以代替处理其他变量和返回类型。
如果使用了模板函数的条件下,类的设计最好选用模板类,因为类模板的使用,可以使得类中的某些成员函数、某些数据成员和某些成员函数的返回值能取得任意类型。
但模板的使用有一定的能力要求,如果使用其他的方法可以实现上述要求的功能时,模板可以作为一种前进的方法,去为程序实现精艺求精.
这样最普遍,可以适时考虑的就是使用链表进行数据的处理,链表是一种比较好且很适宜的方法;学生包含有很多信息,最基本的方法是创建一个class,对学生信息实现整体的代换,这样不仅方便数据处理,也为数据在程序中的录入、存储和显示提供很大的优越性.各功能的实现可以通过设计一个学生类students,然后将功能函数作为类中的成员函数来处理,这样不仅方便以后成员函数之间的调用,也为在编译和调试过程中出现问题和警告错误时方便修改。
当整体设计方案出炉后,具体的类中成员函数编译就是使用链表为载体来实现的.首先要创建链表,并将原始数据装入制定的文本文档中,以输入出流的方式将数据赋给各链表节点;数据读入程序后,各成员函数就可以根据链表的操作,对其实行查找,删除,添加,排序信息和交换信息等。
查找函数在操作时可运用顺序查找或折半查找,相对比较而言,在数据较多时使用顺序查找方便些,而且便于源代码的编译;在查找函数中要考虑到是否要考虑函数返回值的类型,因为查找函数在以后交换函数中可能会调用查找函数,这样会使交换信息函数显得简明,而且容易在交换时控制变量。
排序和查找函数,因为要使用不同排序或查找方法,所以在主函数的实现上,会考虑到使用一个子菜单来指导使用,在按照不同参考变量进行排序或查找时,这时最主要要实现以第一个方式的函数的算法思想和代码的编写,这样在编写其他方式函数代码时可以参考第一种方式,达到简化步骤,节省时间,空间的目的。
2.2系统设计
根据上述要求和思想算法的分析,需要设计一个类students。
由于学生信息包含有学号、姓名、宿舍号、系别等数据,所以设计一个student类来概括学生相关信息。
学生的各相关信息通过使用链表的方式将其联系在一起,这样不仅方便信息的录入和显示,也方便在数据的处理上。
各功能的实现均可在类student中定义各相关的成员函数。
程序运行时,首先提示用户是否进行操作,选择“Y/y”后,进入操作界面,出现功能选择菜单。
首先要进行数据的录入,选择“1。
信息录入”选项,这时数据直接通过磁盘文件录入程序中;录入结束后可按菜单中功能选项进行选择操作,如选择“信息排序”功能之后会出现子菜单,提示用户选择排序方式“按学号排序"“按宿舍号排序",这时可以选择一方式进行操作,再通过输出与储存函数进行显示或储存。
学生宿舍管理系统的开发主要包括前台用户界面的开发和后台数据库的开发,对于后台数据库的建立和维护要求建立起数据一致性和完整性强、数据安全性好的数据库.而对于前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点.本系统采用java作为前台用户界面的开发语言,而后台的数据库采用MySql
2。
2。
1功能分析
设计一个实用的小型学生宿舍管理程序,能够对学生宿舍进行管理.学生的原始信息由磁盘文件进行储存。
在程序的运行中要求能进行增加、删除学生记录、显示记录、查询/检索(依不同关键字,如学号、宿舍号、姓名等)、删除/修改记录等功能,并能运用链表进行动态处理.具体要求:
1。
对学生信息的录入、增加和删除;2.能显示宿舍的相应信息,即根据宿舍号显示宿舍位置,宿舍学生信息等;3。
能根据学生信息查询相应的宿舍信息;4.对宿舍管理可以从多方面对系统数据进行操作,如:
依据系别、学生姓名、班级等;并且能按各种条件进行组合查询和数据统计,并能按指定顺序进行格式化输出。
2.2.2面向对象设计
各模块之间的调用关系:
本系统分为四个模块:
查找子菜单、信息录入、信息显示、查找功能子菜单。
该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。
在每个区域中会调用不同的函数来实现主要的功能。
比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。
2.2。
2类成员描述
Students类:
(1)classStudentInf//学生信息类
(2)classOverException//异常类
(3)voidInsert()//添加方法
(4)voidsearch()//查找方法
2。
3程序实现
2。
3.1源码分析
importjava。
applet.Applet;
importjava。
awt.*;
importjava。
awt。
event。
*;
importjava.util。
*;
importjava。
lang。
*;
publicclassStudentsextendsAppletimplementsActionListener
{
VectorStuInf=newVector();
StudentInfSI;
Stringxm;
Stringbj;
inti,j,xh,cj;
staticintmid;
Labelprompt1=newLabel("学生宿舍管理系统”);
Labelprompt2=newLabel("用户:
");
Labelprompt3=newLabel("密码:
”);
Labelprompt4=newLabel(”班级:
");
Labelprompt5=newLabel("宿舍号:
");
TextFieldinput1=newTextField(8);
TextFieldinput2=newTextField(8);
TextFieldinput3=newTextField(8);
TextFieldinput4=newTextField(8);
Buttonbtn1=newButton(”登录");
Buttonbtn2=newButton(”增加”);
Buttonbtn3=newButton("修改”);
Buttonbtn4=newButton("删除");
publicvoidinit()
{
setLayout(newGridLayout(6,3));
add(newLabel());
add(prompt1);
add(newLabel());
add(prompt2);
add(input1);
add(newLabel());
add(prompt3);
add(inputadd(btn1);
add(prompt4);
add(input3);
add(newLabel());
add(prompt5);
add(input4);
add(newLabel());
add(btn2);
add(btn3);
add(btn4);
prompt4。
setVisible(false);
prompt5。
setVisible(false);
input3.setVisible(false);
input4.setVisible(false);
btn2.setVisible(false);
btn3.setVisible(false);
btn4.setVisible(false);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3。
addActionListener(this);
btn4。
addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getActionCommand()==”登录”)
{
Stringa,b;
a=input1。
getText();
b=input2.getText();
input1。
setText("");
if((a。
equals("孙凯”)==true)&&(b.equals("121301040”)==true))
{
prompt2.setText(”姓名:
");
prompt3。
setText("学号:
”);
prompt4.setVisible(true);
prompt5。
setVisible(true);
input3。
setVisible(true);
input4。
setVisible(true);
btn2.setVisible(true);
btn3。
setVisible(true);
btn4.setVisible(true);
btn3。
setEnabled(false);
btn4。
setEnabled(false);
btn1。
setLabel("查询");
input1.setText(”登录成功");
input1。
selectAll();
}
else
input2。
setText(”用户名或密码错");
}
if(e.getActionCommand()==”增加”)
{
booleanscucss=true;
try
{
XingMing();
}
catch(EmptyExceptionas)
{
input1。
setText(”姓名不能为空”);
scucss=false;
}
try
{
xh=Integer.parseInt(input2.getText());
}
catch(NumberFormatExceptionm)
{
input2。
setText("学号为空或格式错");
scucss=false;
}
bj=input3。
getText();
try
{
ChengJi();
}
catch(EmptyExceptionas)
{
cj=—1;
}
catch(OverExceptiondd)
{
input4。
setText("应在0—100间”);
scucss=false;
}
catch(NumberFormatExceptioncm)
{
input4。
setText("宿舍号应为数据");
scucss=false;
}
if(scucss==true)
{
SI=newStudentInf(xm,xh,bj,cj);
Insert(SI);
}
}
if(e。
getActionCommand()=="修改”)
{
xm=input1。
getText();
bj=input3.getText();
cj=Integer.parseInt(input4。
getText());
SI=newStudentInf(xm,xh,bj,cj);
StuInf。
setElementAt(SI,mid);
btn3。
setEnabled(false);
}
if(e.getActionCommand()=="删除")
{
StuInf。
removeElementAt(mid);
btn4。
setEnabled(false);
input1。
setText(”删除成功");
input2.setText("”);
input3。
setText("");
input4。
setText("");
}
if(e。
getActionCommand()==”查询")
{
booleanright=true;
try
{
xh=Integer。
parseInt(input2。
getText());
}
catch(NumberFormatExceptionm)
{
input2。
setText(”学号为空或格式错”);
right=false;
}
if(right==true)
{
search(xh);
btn3.setEnabled(true);
btn4.setEnabled(true);
}
}
}
//查找方法
publicvoidsearch(intk)
{
booleanexist=false;
intlow=0;
inthigh=StuInf.size()—1;
while(low〈=high)
{
mid=(high+low)/2;
StudentInfa1=(StudentInf)StuInf。
elementAt(mid);
if(a1。
getStuNo()==k)
{
SI=(StudentInf)StuInf。
elementAt(mid);
Stringx=String。
valueOf(SI.getStuNo());
exist=true;
input1。
setText(SI.getname());
input1。
selectAll();
input2.setText(”0”+x);
input3。
setText(SI.getClassNo());
if(SI.getLevel()==-1)
input4.setText("无记录”);
else
{
Stringy=String。
valueOf(SI.getLevel());
input4.setText(y);
}
break;
}
elseif(a1。
getStuNo()〈k)
low=mid+1;
else
high=mid-1;
}
if(exist==false)
{
input1。
setText(”无此信息");
input1.selectAll();
}
}
//添加方法
publicvoidInsert(StudentInfq)
{
inti=0;
if(StuInf.isEmpty()==true)
{
StuInf。
addElement(q);
input1。
setText(”");
input2.setText("");
input3。
setText("”);
input4。
setText(”");
}
else
{
StudentInfxh;
xh=(StudentInf)StuInf。
firstElement();
while(xh.getStuNo()〈q。
getStuNo())
{
i++;
if(isize())
xh=(StudentInf)StuInf。
elementAt(i);
else
break;
}
if(xh.getStuNo()==q。
getStuNo())
{
input2。
setText(”此学生已存在”);
input2。
requestFocus();
input2。
selectAll();
}
else
{
StuInf。
insertElementAt(q,i);
input1.setText(”");
input2.setText("");
input3。
setText(””);
input4。
setText("”);
}
}
}
//异常类
classOverExceptionextendsException
{
Stringover;
}
classEmptyExceptionextendsException
{
Stringempty;
}
voidXingMing()throwsEmptyException
{
if((input1.getText())。
equals(””))
throw(newEmptyException());
else
xm=input1.getText();
}
voidChengJi()throwsOverException,EmptyException
{
if((input4.getText())。
equals(""))
throw(newEmptyException());
else
cj=Integer.parseInt(input4。
getText());
if(cj<0||cj〉100)
throw(newOverException());
}
//学生信息类
publicclassStudentInf
{
privateStringname;
privateintStuNo;
privateStringClassNo;
privateintLevel;
StudentInf(Stringxingming,intxuehao,Stringbanji,intchengji)
{
name=xingming;
StuNo=xuehao;
ClassNo=banji;
Level=chengji;
}
publicintgetStuNo()
{
returnStuNo;
}
publicStringgetname()
{
returnname;
}
publicStringgetClassNo()
{
returnClassNo;
}
publicintgetLevel()
{
returnLevel;
}
}
}
2.3。
2运行结果
登陆界面显示:
登陆信息显示:
添加学生信息;
修改学生信息;
删除信息显示:
学生寝室查询:
第3章总结
经过了一个多星期的努力,终于在规定的时间内完成率这份课程设计。
以前,我对Java的很多知识都很陌生,但是通过这次的课程设计使我明白了许多东西,翻阅了大量的书籍以及上网查了很多的相关资料,也从中学会了不少东西,它使我知识更加的系统化、全面化。
在实验的过程中也让我体会到了做任何事情都是要付出一定的努力的。
一份努力一分收获,每当自己单独的成功解决某些问题时,都会感觉很兴奋,也很有成就感.
在这次课程设计中,我体会到要想开发应该系统软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。
只有思想上清晰了,编程才有意义,否则就是白费力气。
同时还要善于捕捉细小的方面,因为那往往是这个程序的致命因素。
通过这次程序设计,培养了我的细心和耐心吗,也树立一种正确的求知态度。
通过这次课程设计,我发现了自己的许多的不足,尤其是露出了对Java知识基础的掌握不好,许多简单的东西都不知道.在课本上看到的各种算法感觉都很简单,但是真正的让自己去写一个算法感觉很困难,。
即使是课本上的源程序算法,自己写起来都感觉有点生疏。
在调试过程中经常出现的错误也不是很熟悉。
我认识到学好计算机要重视实践操作,不仅仅是类的创建或建包,在其他的课程中都会注重实践。
所以在今后的学习过程中,我会更加注视实践操作,使自己更好的学好计算机。
虽然完成了课程设计,但是这次课程设计的意义对我来说却很重要,让我明白了很多。
我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正的掌握,从而提高自己的实际动手能力和独立思考的能力.今后我要多加实践,把理论和实践完美结合起来,争取去达到另一个高度。
参考文献
[1]Eric。
Java编程思想[M]。
第4版。
机械工业出版社,机械工业出版社.
[2]杜波依斯。
MySQL技术内幕[M]。
第4版.人民邮电出版社,2011年07月.
[3]林信良。
学习笔记[M]。
第2版.清华大学出版社,2012年05月。
[4]张峋.杨三成.关键技术:
Java应用详解[M]。
中国铁道出版社,2010年11月.
[5]张银鹤.点石成金:
Java开发典型实例[M]。
电子工业出版社,2009年01月.
[6]李宗伟.Java语言描述[M]。
第2版。
机械工业出版社,2009年01月.
[7]MetskerSJ。