学籍管理系统JAVA.docx
《学籍管理系统JAVA.docx》由会员分享,可在线阅读,更多相关《学籍管理系统JAVA.docx(49页珍藏版)》请在冰点文库上搜索。
学籍管理系统JAVA
课程设计(论文)任务书
软件学院学院 软件工程专业10—3 班
一、课程设计(论文)题目 学籍管理系统
二、课程设计(论文)工作自2011年12月12日起至2011年12月16日止。
三、课程设计(论文)地点:
软件学院实训中心
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)掌握Java语言的程序设计方法;
(2)理论联系实际,进一步提高学生的软件开发技术;
(3)培养学生分析、解决问题的能力;
(4)提高学生实践论文撰写能力。
2.课程设计的任务及要求
1)课程设计任务:
基于学籍管理系统的程序设计:
1.录入学生基本信息的功能;
2.修改学生基本信息的功能;
3.查找学生基本信息的功能;
4.删除学生基本信息的功能;
2)创新要求:
基于文件流的插入与读取;
3)课程设计论文编写要求
(1)课程设计任务及要求
(2)设计思路--工作原理、功能规划
(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代
码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,
巩固了哪些知识,有哪些提高。
(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)
(7)报告按规定排版打印,要求装订平整,否则要求返工;
(8)课设报告的装订顺序如下:
封面---任务书---中文摘要---目录----正文---附录
(代码及相关图片)
(9)严禁抄袭,如有发现,按不及格处理。
4)课程设计评分标准:
(1)学习态度:
20分;
(2)程序检查:
20分;
(3)课设答辩:
20分;
(4)课设报告:
40分。
5)参考文献:
(1)丁振凡.Java语言实用教程(第2版)[M].清华大学出版社.2008.1
6)课程设计进度安排
1.准备阶段(4学时):
选择设计题目、了解设计目的要求、查阅相关资料
2.程序模块设计分析阶段(4学时):
程序总体设计、详细设计
3.代码编写调试阶段(8学时):
程序模块代码编写、调试、测试
4.撰写论文阶段(4学时):
总结课程设计任务和设计内容,撰写课程设计论文
学生签名:
2011年12月12日
课程设计(论文)评审意见
(1)学习态度(20分):
优( )、良( )、中( )、一般( )、差( );
(2)程序检查(20分):
优( )、良( )、中( )、一般( )、差( );
(3)课设答辩(20分):
优( )、良( )、中( )、一般( )、差( );
(5)论文撰写(40分):
优( )、良( )、中( )、一般( )、差( );
评阅人:
职称:
讲师
2011年12月16日
中文摘要
学生学籍管理可以说是一项琐碎、繁杂而又必须十分细致的工作,是不能允许发生差错的。
数十年前的那种手工操作已远远跟不上近代教育普及、学生数量大增的情况了,时代的进步决定了学校管理的智能化,而学校要管理到位必然要有完善的管理体系,所以说学生学籍管理的自动化完全是时代进步和教育普及所推动的必然结果。
合理的利用有助于教育管理的管理系统是校园管理得当的一种优越性的体现。
计算机具有运算速度快、准确、能按照设计逻辑处理问题等特性,在学生信息的录入,采用一个计算机化的信息系统进行处理,就不会发生信息遗漏或者数据输入不正确的情形。
作为计算机应用的一部分,使用计算机对学生学籍进行管理,具有手工管理所无法比拟的优点.例如查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高的效率,也是学校科学化、正规化管理的重要条件。
利用计算机对学生管理不仅保证了资料准确度,还成倍的提高了工作效率,而且便于管理、查询、增添等操作。
本软件界面整洁、使用方便。
该系统使用java作为开发语言,该软件是一个面向对象的开发程序,其主有更大的灵活性和可扩展性。
数据库通过ADO技术来与应用程序进行连接要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。
本系统的开发和应用,可以极大的提高学校的学生学籍管理水平,学校的办公效率也可以有很大的提高,化简了繁琐的工作模式,从而使学校的管理更加合理化和科学化。
良好的信息系统节省了大量的人力和物力,也避免了大量重复性的工作。
本系统是一个复杂的信息系统,包含了信息录入、信息查询、信息修改等功能,能满足学校学生管理工作的基本要求。
目 录
一、设计任务及要求
使用JAVA语言编写一个学生学籍管理系统,使其具有以下功能:
1.录入学生基本信息的功能
2.修改学生基本信息的功能
3.查询学生基本信息的功能
4.删除学生基本信息的功能
二、需求分析
信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。
计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。
为了适应现代社会人们高度强烈的时间观念,学籍管理系统软件为教学办公室带来了极大的方便。
该软件是以汉语编程语言为实现语言,其功能在系统内部有源代码直接完成。
通过操作手册,使用者可以了解本软件的基本工作原理。
操作人员只需输入一些简单的汉字、数字,即可达到自己的目标。
本系统的开发和应用,可以极大的提高学校的学生学籍管理水平,学校的办公效率也可以有很大的提高,化简了繁琐的工作模式,从而使学校的管理更加合理化和科学化。
良好的信息系统节省了大量的人力和物力,也避免了大量重复性的工作。
三、设计思路
本学生学籍管理系统最主要的的是在于对于输入,修改,查找,删除功能的编写。
关于输入功能主要是学生学籍信息的存入,以及存储文档的建立。
本系统建立了一个TXT文档来存储学生的学籍信息。
需要实现的是如何把信息存入文档里。
使用FileInputStream进行文件输入,使用FileOutputStream进行文件输出数据写入,使用ObjectInputStream对学生对象信息输入,使用ObjectOutputStream进行信息输出,并与存储学生信息的文档关联。
修改功能需要实现的是用现有数据覆盖文档存储的学生学籍信息。
首先应该考虑是否原本文档里含有输入的学号的信息,如果有,则输入其修改信息替换掉原来的学籍信息给予保存文档。
查找功能其实就是修改功能的一部分,不过当读取到对应的学生学籍信息之后,要进行对象输出,显示在界面里。
删除功能中是查找功能的延续,读取到学籍信息,给予制空,对应的文档里的学生学籍信息全部为null。
所有的功能中都需要考虑到异常情况。
比如,当进行输入功能时,填写人员没有填写学号而直接经行数据输入,应当给予警告。
对于界面布局方面,应当多次调试,已获得更好的显示效果。
界面也应该做到简洁明了,虽然使用者不明白此系统构造,但是仍然能够很轻松的使用本系统。
主界面中菜单栏的建立和录入内容用来连接学籍管理系统的功能而进行操作。
四、详细设计
主界面
this.input=newJMenuItem("输入学生的信息");
this.change=newJMenuItem("修改学生的信息");
this.search=newJMenuItem("查找学生的信息");
this.delete=newJMenuItem("删除学生的信息");
Jbar=newJMenuBar();
menuj=newJMenu("功能");
menuj.add(input);
menuj.add(change);
menuj.add(search);
menuj.add(delete);
Jbar.add(menuj);
setJMenuBar(Jbar);
主界面主要就是建立一个窗口,在窗口中插入一个JBar菜单条,并将其设置为建立窗口的菜单条,用来储存功能。
添加完菜单条后在其添加菜单menuj。
接下来在菜单中添加内容,本系统只添加了input,change,search,delete四项内容用来建立功能。
建立一个TXT文档用来存放string的学生各项数据,使其能实现功能。
另外对其布局进行了修改,采用隶书彩色字体,使用lab1=newJLabel("欢迎进入学生学籍管理系统",JLabel.CENTER)使文字居中。
Student类
publicclassStudentimplementsjava.io.Serializable{
Stringname;
Stringnumber;
Stringdepartment;
Stringsex;
Stringbirth;
Stringgrade;
建立一个Student类用于存放学生的name,number,sex等数据,方便的被其他功能调用,被其他功能读取或者修改。
输入功能
JTextFieldname,number,birth,grade,department;//学生的信息项。
JRadioButtonmale,female;//单选按钮
StudentStu;
ButtonGroupgroup;//形成单选效果
JButtonconfirm,reset;
Filefi1;
FileInputStreamfin;//文件输入流
FileOutputStreamfou;//文件输出流写入数据
ObjectInputStreamoin;//对象输入流
ObjectOutputStreamoou;//对象输出流
Hashtableha1;//哈希图数据结构来储存数据
使用FileInputStream进行文件输入,使用FileOutputStream进行文件输出数据写入,使用ObjectInputStream对学生对象信息输入,使用ObjectOutputStream进行信息输出,并与存储学生信息的文档关联。
建立ha1来储存数据。
考虑到学生性别信息的选择,使用单选按钮,使用JRadioButton形成单选按钮,使用ButtonGroup展示单选效果。
分别建立comfire,reset按钮对所录入信息的确定和重置。
当录入学生信息时,还需考虑到异常情况,当输入已经存在的学生学号时,给予警告“该生信息已存在”。
当没有输入学生的学号信息就选择comfire按钮录入学生信息时,给予警告“请输入学生学号”,提醒输入。
修改功能
if(ha1.containsKey(nu)){
confirm.setEnabled(true);
Stu=(Student)ha1.get(nu);
name.setText(Stu.getname());
birth.setText(Stu.getbirth());
department.setText(Stu.getdepartment());
grade.setText(Stu.getgrade());
if(Stu.getsex().equals("男")){
male.setSelected(true);
}else{
female.setSelected(true);
}
}else{
Stringwarning="没有该学生的信息";
JOptionPane.showMessageDialog(this,warning,"出错了",JOptionPane.WARNING_MESSAGE);
number.setText(null);
name.setText(null);
birth.setText(null);
department.setText(null);
grade.setText(null);
}
}
else{
Stringwarning="必须输入学号";
JOptionPane.showMessageDialog(this,warning,"出错了",
视图和输入界面类似,建立盒子模型用于存放新的学生学籍信息覆盖原来的学生学籍信息。
对于没有输入学生学号而进行修改信息的情况,给予“必须输入学号”的警告,如果输入的学号查找成功,文件读取数据输出,是新的信息覆盖。
如果没有此学生信息也必须给出警告。
查找功能
catch(Exceptione1){
}
if(ha1.containsKey(nu)){
Stu=(Student)ha1.get(nu);
name.setText(Stu.getname());
birth.setText(Stu.getbirth());
department.setText(Stu.getgrade());
grade.setText(Stu.getgrade());
if(Stu.getsex().equals("男")){
male.setSelected(true);
}else{
female.setSelected(true);
}
}//if(ha1)
else{
Stringwarning="该学生不存在!
";
JOptionPane.showMessageDialog(this,warning,"结果",JOptionPane.WARNING_MESSAGE);
}
}
else{
Stringwarning="请输入学号";
JOptionPane.showMessageDialog(this,warning,"出错了",
JOptionPane.WARNING_MESSAGE);
}
}
elseif(e.getSource()==reset){
number.setText(null);
name.setText(null);
birth.setText(null);
department.setText(null);
grade.setText(null);
}
}
}
关于查找功能,主要就是文件数据输入和输出,读取File中的学生学籍的信息,对于异常情况的警告,则和其它情况类似。
删除功能
intok=JOptionPane.showConfirmDialog(this,m,"确认",
JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){
ha1.remove(nu);
try{
fou=newFileOutputStream(fi1);
oou=newObjectOutputStream(fou);
oou.writeObject(ha1);
oou.close();
fou.close();
number.setText(null);
name.setText(null);
birth.setText(null);
department.setText(null);
grade.setText(null);
}catch(Exceptione1){
}
confirm.setEnabled(false);
}elseif(ok==JOptionPane.NO_OPTION){
number.setText(null);
name.setText(null);
birth.setText(null);
department.setText(null);
birth.setText(null);
}
}
elseif(e.getSource()==reset){
number.setText(null);
name.setText(null);
birth.setText(null);
department.setText(null);
grade.setText(null);
}
}
}
对于删除功能使用FileInputStreamfin:
文件输入流;FileOutputStreamfou:
文件输出流写入数据;ObjectInputStreamoin:
对象输入流;ObjectOutputStreamoou:
对象输出流。
使得对应学号的File中的的学生学籍信息制空。
如果查找不到对应学号或没有输入学号则输出警告。
五、运行调试与分析讨论
主界面
主界面主要就是菜单及菜单选项的建立,以及文字布局方面。
输入界面
输入的学生学籍信息的都将被存放在fin1里,以便修改查找功能的使用
对于学号没有输入时要给予警告,当点击重置按钮时,所有已经填写的内容都将被清除掉。
修改界面
没有该学号学生信息时,给予警告,当不输入学号就进行修改功能时,也会弹出警告。
查询界面
查询功能主要是对文件的读取和数据的输出
删除界面
删除功能是删除Fil1里的所对应学号的学生信息
六、设计体会与小结
通过这次课程设计我觉得收获了很多。
在本次课设中,我遇到了好多自己不能解决的问题,同学和网络的帮助无疑对自己帮助很大。
像窗口中菜单的建立和使用,学习了别人的代码之后才明白如何使用操作。
对于那些书本里没有的知识,我们也需要掌握,这有利于我们拓展自己的知识面,是自己在以后的学习中更加轻松自如。
要注意细节。
可能只是中文字符的错误,也使是自己的程序出现错误。
在以后的学习过程中,要更加的仔细认真。
在当时看来仔仔细细的斟酌肯能会使自己的速度降低,但是这样可以大量减少自己的错误,其实节省了大量的时间用来修改。
对自己要有信心。
虽然在课设中,自己的错误很多,有的东西也完全不理解,但是我仍然对自己有信心。
有信心自己能完成课设,我可以求助于网络,请教同学。
自信心十分重要。
七、参考文献
[1]丁振凡,薛清华.Java语言程序设计[M].出版地:
北京出版社名称:
清华大学出版社出版年限:
2010.10
[2]丁振凡,李宪伟.Java语言与习题解答[M].出版地:
北京出版社名称:
清华大学出版社出版年限:
2010.10
八、附录
主界面
packagestudent;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.Hashtable;
publicclassStuaccessextendsJFrameimplementsActionListener{
Containercon;
JMenuBarJbar;
JMenumenuj;
JMenuIteminput,change,search,delete;//四项功能输入,修改,查找,删除
JLabellab1;
JPanelJCenter;
Filefi1;
Hashtableha1;
inputintinfo;
changechginfo;
searchschinfo;
deletedelinfo;
publicStuaccess(){
super("华东交通大学学籍管理系统");
con=getContentPane();
con.setLayout(newBorderLayout());
ha1=newHashtable();
fi1=newFile("学生的学籍信息.txt");
if(!
fi1.exists()){
try{
FileOutputStreamout=newFileOutputStream(fi1);
ObjectOutputStreamobjectOut=newObjectOutputStream(out);
objectOut.writeObject(ha1);
objectOut.close();
out.close();
}//try
catch(IOExceptione){
}
}//if
this.input=newJMenuItem("输入学生的信息");
this.change=newJMenuItem("修改学生的信息");
this.search=newJMenuItem("查找学生的信息");
this.delete=newJMenuItem("删除学生的信息");
Jbar=newJMenuBar();
menuj=newJMenu("功能");
menuj.add(input);
menuj.add(change);
menuj.add(search);
menuj.add(delete);
Jbar.add(menuj);
setJMenuBar(Jbar);
lab1=newJLabel("欢迎进入学生学籍管理系统",JLabel.CENTER);
lab1.setFont(newFont("隶书",Font.BOLD,30));
lab1.setForeground(Color.green);
add(lab1,BorderLayout.CENTER);
setBounds(100,100,500,400);
input.addActionListener(this);
change.addActionListener(this);
search.addActionListener(this);
delete.addActionListener(this);
intinfo=newinputStuinfo(fi1);
chginfo=newchangeStuinfo(fi1);
delinfo=newdeleteStuinfo(fi1);
schinfo=newsearchStuinfo(fi1);
//con.setVisible(true);
con.validate();