java语言学生信息管理系统.docx
《java语言学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《java语言学生信息管理系统.docx(11页珍藏版)》请在冰豆网上搜索。
java语言学生信息管理系统
学生信息管理系统开发与设计
java课程设计报告
目 录
一、概要设计……………………………………………………………3
二、程序整体设计说明…………………………………………….….3
三、程序部分源代码及注释…………………………………………….4
四、测试结果………………………………………………………….14
五、设计心得…………………………………………………………15
六、致 谢…………………………………………………………15
七、参考文献…………………………………………………………15
一、概要设计
由于学生信息的冗长与繁琐,所以它的管理问题带来的麻烦和不方便也随之而来,所以开发一个合适学校的、便于管理学生信息的管理系统是十分必要的。
学生信息管理系统是对学生的基本信息进行管理,主要包括显示、查询、添加和删除学生的基本信息,方便管理人员对学生基本信息进行查询,排序等操作,从而实现学生信息管理的自动化与计算机化。
本课题将实现一个简化的学生信息管理系统。
二、程序的整体设计
(1)学生基本信息的录入和保存:
在链表中的适当位置插入一个学生信息节点,一次添加一条学生信息(添加内容包含学号、姓名、年龄),如果添加的学号已经在文件中存在,则不能添加到文件中去,应显示错误提示语;如果添加成功,则显示成功提示语。
添加操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(2)显示学生信息:
此功能是显示一个学生信息节点中的信息,并在屏幕上显示出来。
(3)按学号查找学生信息:
按学号查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。
查询操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(4)按姓名查找学生信息:
按姓名查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。
查询操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(5)添加学生信息
添加学生信息中的某一项信息,一次更新一条学生信息(更新内容包含学号、姓名、年龄等字段值),如果更新的学号在文件中不存在,则不能更新,应该显示错误提示语;如果更新成功,则显示成功提示语。
更新操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(6)删除学生信息:
进入该项功能界面后,删除学生信息,一次删除一条学生信息。
(7)退出系统,结束任务。
三、程序部分源代码及注释
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.List;
importjava.util.Scanner;
publicclassStudentManageSystem{
//StudentManager中提供的操作菜单
publicstaticvoidshowMenus(){
Stringformat="%s\n";
System.out.println("----------------功能菜单------------------");
System.out.printf(format,"0.退出管理");
System.out.printf(format,"1.显示学生");
System.out.printf(format,"2.查询学生");
System.out.printf(format,"3.添加学生");
System.out.printf(format,"4.删除学生");
System.out.printf(format,"5.功能菜单");
System.out.println("-------------------结束------------------");
System.out.println();
}
//管理学生
publicvoidmanageStudents()throwsIOException{
Scannerscanner=newScanner(System.in);
StudentDaosd=newStudentDao();
StudentServicess=newStudentService(sd,scanner);
showMenus();
intop=-1;
while(op!
=0){
System.in.skip(System.in.available());
System.out.print("输入菜单编号:
");
op=scanner.nextInt();
scanner.nextLine();//吃掉输入菜单编号后无效的回车字符
try{
switch(op){
case0:
break;
case1:
ss.showStudents();
break;
case2:
ss.findStudent();
break;
case3:
ss.addStudent();
break;
case4:
ss.removeStudent();
break;
case5:
showMenus();
break;
default:
System.out.println("没有提供此项操作\n");
}
}catch(Exceptione){
System.out.println("\t"+e.getMessage()+"\n");
}
}
}
publicstaticvoidmain(String[]args)throwsIOException{
StudentManageSystemsm=newStudentManageSystem();
sm.manageStudents();
}
}
classStudentService{
privateStudentDaostudentDao;
privateScannerscanner;
publicStudentService(StudentDaostudentDao,Scannerscanner){
this.studentDao=studentDao;
this.scanner=scanner;
}
//添加学生
publicvoidaddStudent(){
System.out.print("输入学生资料进行添加:
");//name|age
Stringinfo=scanner.nextLine();
Students=Student.buildStudent(info);
if(studentDao.findStudent(s.getName())!
=null){thrownewRuntimeException("此学生信息已经存在");}
studentDao.addStudent(s);
System.out.println("\t添加成功\n");
}
publicvoidremoveStudent(){
System.out.print("输入学生姓名进行删除:
");
Stringname=scanner.nextLine();
Students=studentDao.findStudent(name);
if(s==null){
System.out.println("\t查无此学生");
}else{
studentDao.removeStudent(s);
System.out.println("\t已经删除学生:
"+s);
}
System.out.println();
}
//查找学生
publicvoidfindStudent(){
System.out.print("输入学生姓名进行查询:
");
Stringname=scanner.nextLine();
Students=studentDao.findStudent(name);
if(s==null){
System.out.println("查无此学生");
}else{
System.out.println("\t搜索查找到的学生:
"+s);
}
System.out.println();
}
//显示已经有的学生信息
publicvoidshowStudents(){
Liststudents=studentDao.getStudents();
if(students.size()==0){
System.out.println("列表中还没有任何学生");
}else{
System.out.println("========所有学生信息========");
}
for(Students:
students){
System.out.println("\t"+s);
}
System.out.println();
}
}
//对学生数据进行执久化操作
classStudentDao{
privateListstudents;
publicStudentDao(){
students=newArrayList();
}
//添加学生
publicvoidaddStudent(Studentstudent){
students.add(student);
}
//删除学生
publicvoidremoveStudent(Studentstudent){
students.remove(student);
}
//使用学生的名字查找进行查找
publicStudentfindStudent(Stringname){
for(Students:
students){
if(s.getName().equals(name)){returns;}
}
returnnull;
}
//返回学生列表的视图,不可修改
publicListgetStudents(){
returnCollections.unmodifiableList(students);
}
}
classStudent{
privateStringname;
privateintage;
publicStudent(){
}
publicStudent(Stringname,intage){
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
//Infoformat:
name|age
publicstaticStudentbuildStudent(StringstudentInfo){
if(!
studentInfo.matches("\\w+\\|\\d+")){thrownewRuntimeException(
"Thestudentinformation'sformatshouldbe\"name|age\"withoutquote");}
String[]infos=studentInfo.split("\\|");
Stringname=infos[0].trim();
intage=Integer.parseInt(infos[1]);
returnnewStudent(name,age);
}
@Override
publicStringtoString(){
returnString.format("Name:
%s,Age:
%d",name,age);
}
}
四、测试结果
在调试的过程中,出现了许多错误,现将几类有代表性的错误列举如下:
(1)
原因:
在引用用户变量与定义时的不一致,第二个字母大写了。
如何解决:
将studentService(sd,scanner)改为
StudentService(sd,scanner)
(2)
原因:
Override需要<标识符>
如何解决:
在其后加上@
(3)
原因:
在判断时的比较符写成了赋值号
如何解决:
将“=”改成“==”
(4)
原因:
“”是在汉语状态写入的
如何解决:
改为英语状态输入""
(5)
原因:
少写了一个大花括号
如何解决:
补上一个后半大花括号
五、设计心得
通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。
这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。
它还让我学会了在网上查阅那些无限的资料。
六、致 谢
在本次Java课程设计中,首先要感谢我的指导老师***老师教给了我很多的Java的编程知识,编程思想,还有要感谢我的同学,是他们在我遇到困难时给了我指导