java学生宿舍管理系统论文.docx
- 文档编号:17297672
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:19
- 大小:22.05KB
java学生宿舍管理系统论文.docx
《java学生宿舍管理系统论文.docx》由会员分享,可在线阅读,更多相关《java学生宿舍管理系统论文.docx(19页珍藏版)》请在冰点文库上搜索。
java学生宿舍管理系统论文
****大学
"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
功能分析
设计一个实用的小型学生宿舍管理程序,能够对学生宿舍进展管理。
学生的原始信息由磁盘文件进展储存。
在程序的运行中要求能进展增加、删除学生记录、显示记录、查询/检索〔依不同关键字,如**、宿舍号、等〕、删除/修改记录等功能,并能运用链表进展动态处理。
具体要求:
1.对学生信息的录入、增加和删除;2.能显示宿舍的相应信息,即根据宿舍号显示宿舍位置,宿舍学生信息等;3.能根据学生信息查询相应的宿舍信息;4.对宿舍管理可以从多面对系统数据进展操作,如:
依据系别、学生、班级等;并且能按各种条件进展组合查询和数据统计,并能按指定顺序进展格式化输出。
面向对象设计
各模块之间的调用关系:
本系统分为四个模块:
查找子菜单、信息录入、信息显示、查找功能子菜单。
该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。
在每个区域中会调用不同的函数来实现主要的功能。
比方,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进展排序,然后再输出;在查找功能里会调用查找函数来进展查找,包括按照性别,**,,房间号等查询。
类成员描述
Students类:
〔1〕classStudentInf//学生信息类
〔2〕classOverE*ception//异常类
〔3〕voidInsert〔〕//添加法
〔4〕voidsearch()//查找法
2.3程序实现
源码分析
importjava.applet.Applet;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava.lang.*;
publicclassStudentse*tendsAppletimplementsActionListener
{
VectorStuInf=newVector();
StudentInfSI;
String*m;
Stringbj;
inti,j,*h,cj;
staticintmid;
Labelprompt1=newLabel("学生宿舍管理系统");
Labelprompt2=newLabel("用户:
");
Labelprompt3=newLabel("密码:
");
Labelprompt4=newLabel("班级:
");
Labelprompt5=newLabel("宿舍号:
");
Te*tFieldinput1=newTe*tField(8);
Te*tFieldinput2=newTe*tField(8);
Te*tFieldinput3=newTe*tField(8);
Te*tFieldinput4=newTe*tField(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.getActionmand()=="登录")
{
Stringa,b;
a=input1.getTe*t();
b=input2.getTe*t();
input1.setTe*t(");
if((a.equals("凯")==true)&&(b.equals("121301040")==true))
{
prompt2.setTe*t(":
");
prompt3.setTe*t("**:
");
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.setTe*t("登录成功");
input1.selectAll();
}
else
input2.setTe*t("用户名或密码错");
}
if(e.getActionmand()=="增加")
{
booleanscucss=true;
try
{
*ingMing();
}
catch(EmptyE*ceptionas)
{
input1.setTe*t("不能为空");
scucss=false;
}
try
{
*h=Integer.parseInt(input2.getTe*t());
}
catch(NumberFormatE*ceptionm)
{
input2.setTe*t("**为空或格式错");
scucss=false;
}
bj=input3.getTe*t();
try
{
ChengJi();
}
catch(EmptyE*ceptionas)
{
cj=-1;
}
catch(OverE*ceptiondd)
{
input4.setTe*t("应在0-100间");
scucss=false;
}
catch(NumberFormatE*ceptioncm)
{
input4.setTe*t("宿舍号应为数据");
scucss=false;
}
if(scucss==true)
{
SI=newStudentInf(*m,*h,bj,cj);
Insert(SI);
}
}
if(e.getActionmand()=="修改")
{
*m=input1.getTe*t();
bj=input3.getTe*t();
cj=Integer.parseInt(input4.getTe*t());
SI=newStudentInf(*m,*h,bj,cj);
StuInf.setElementAt(SI,mid);
btn3.setEnabled(false);
}
if(e.getActionmand()=="删除")
{
StuInf.removeElementAt(mid);
btn4.setEnabled(false);
input1.setTe*t("删除成功");
input2.setTe*t(");
input3.setTe*t(");
input4.setTe*t(");
}
if(e.getActionmand()=="查询")
{
booleanright=true;
try
{
*h=Integer.parseInt(input2.getTe*t());
}
catch(NumberFormatE*ceptionm)
{
input2.setTe*t("**为空或格式错");
right=false;
}
if(right==true)
{
search(*h);
btn3.setEnabled(true);
btn4.setEnabled(true);
}
}
}
//查找法
publicvoidsearch(intk)
{
booleane*ist=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);
String*=String.valueOf(SI.getStuNo());
e*ist=true;
input1.setTe*t(SI.getname());
input1.selectAll();
input2.setTe*t("0"+*);
input3.setTe*t(SI.getClassNo());
if(SI.getLevel()==-1)
input4.setTe*t("无记录");
else
{
Stringy=String.valueOf(SI.getLevel());
input4.setTe*t(y);
}
break;
}
elseif(a1.getStuNo() low=mid+1; else high=mid-1; } if(e*ist==false) { input1.setTe*t("无此信息"); input1.selectAll(); } } //添加法 publicvoidInsert(StudentInfq) { inti=0; if(StuInf.isEmpty()==true) { StuInf.addElement(q); input1.setTe*t("); input2.setTe*t("); input3.setTe*t("); input4.setTe*t("); } else { StudentInf*h; *h=(StudentInf)StuInf.firstElement(); while(*h.getStuNo() { i++; if(i *h=(StudentInf)StuInf.elementAt(i); else break; } if(*h.getStuNo()==q.getStuNo()) { input2.setTe*t("此学生已存在"); input2.requestFocus(); input2.selectAll(); } else { StuInf.insertElementAt(q,i); input1.setTe*t("); input2.setTe*t("); input3.setTe*t("); input4.setTe*t("); } } } //异常类 classOverE*ceptione*tendsE*ception { Stringover; } classEmptyE*ceptione*tendsE*ception { Stringempty; } void*ingMing()throwsEmptyE*ception { if((input1.getTe*t()).equals(")) throw(newEmptyE*ception()); else *m=input1.getTe*t(); } voidChengJi()throwsOverE*ception,EmptyE*ception { if((input4.getTe*t()).equals(")) throw(newEmptyE*ception()); else cj=Integer.parseInt(input4.getTe*t()); if(cj<0||cj>100) throw(newOverE*ception()); } //学生信息类 publicclassStudentInf { privateStringname; privateintStuNo; privateStringClassNo; privateintLevel; StudentInf(String*ingming,int*uehao,Stringbanji,intchengji) { name=*ingming; StuNo=*uehao; ClassNo=banji; Level=chengji; } publicintgetStuNo() { returnStuNo; } publicStringgetname() { returnname; } publicStringgetClassNo() { returnClassNo; } publicintgetLevel() { returnLevel; } } } 运行结果 登陆界面显示: 登陆信息显示: 添加学生信息; 修改学生信息; 删除信息显示: 学生寝室查询: 第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.Java设计模式[M].第2版.电子工业,2012年09月. [8]卫琴.JavaWeb开发技术详解[M].第2版.电子工业,2009年01月. [9]京华等.JavaWeb整合开发者归来[M].清华大学,2010年01月. [10]贺松平.SQL的研究及应用[D].: 华中科技大学,2006年4月 [11]毕建信.Java的应用研究与实现[D].: 理工大学,2006年5月. [10]刚.Eclipse从入门到精通[M].: 清华大学,2005年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 学生宿舍 管理 系统 论文