学生信息管理系统实习报告(java版数据结构)

一、 问题分析

1.1 什么是学生信息管理系统以及研究意义
学生信息管理系统是校园网络中一个重要的应用系统,它大大改善了学校教学、科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。信息管理系统提供了强大的学生档案管理功能,方便管理员对学生信息的添加、修改、删除、查询等操作。本系统开发的总体任务就是实现学生信息管理的系统化、规范化、自动化、达到提高学生信息管理效率的目的。
随着我国教育产业化的飞速发展,社会对教育水平和教学管理软硬件的要求日益提高,尤其是对一个学校能够具有一整套完善的教学管理软件提出了更高的要求。为了适应这种形式,教育系统尤其是大学,不仅要有坚实的硬件基础,还要有一整套完善的教学管理软件管理系统。
1.2 需求分析
学生信息管理系统功能:
(1) 学生信息的导入
从txt文件中导入内存,学生信息至少包含班级、学号、姓名、性别
(2) 学生信息增加
根据要求依次输入学号、班级、姓名、性别、年龄
(3) 学生信息删除
输入学生姓名,执行对该学生信息删除操作
(4) 学生信息修改
输入学生学号,执行对该学生信息修改操作
(5) 学生信息查找
根据要求按姓名、学号折半查找
(6) 筛选
根据要求按班级、性别筛选
(7) 学生信息存盘
保存在txt文件中,写入txt文件操作
具体要求如下:
(1) 利用线性表实现学生信息管理系统,物理结构选用顺序结构
(2) 学生信息至少包含班级、学号、姓名、性别,其他信息自己确定
(3) 分别实现按班级、学号、姓名、性别排序
(4) 分别实现按班级、性别筛选(列出筛选结果和对应人数)
(5) 分别实现按姓名、学号折半查找(利用3)先排序再查找)
(6) 采用人机交互方式,设计操作菜单
(7) 考虑出错处理

二、 数据结构

  1. 逻辑结构
    读取readFile() txt文件中学生信息,运用线性顺序结构对学生信息进行排序,并将对学生信息进行的增删改查操作装入定义好的集合Set tbls中,再写入writeFile(stus) txt文件。
  2. 物理结构(物理结构要给出所有自定义类的定义,如结点类型、线性表类型等,主要内容要自己写,不要直接使用java类库中的类)
    private static Set tbls;
    Set set = new LinkedHashSet();
    List list = new ArrayList();
    for(Student students : stus) {
    list.add(students);
    }

三、 算法

(各个类中主要的成员方法。不是程序,里面的局部变量就不要定义了,算法内部第一行写算法说明,不用写主方法)
3.1添加学生信息
从键盘输入学生信息,学号、班级、姓名、性别、年龄等,将信息依次存入定义好的集合Set stus中,执行写入操作。
3.2删除学生信息
匹配学生姓名,执行删除操作和写入txt文件操作;并获取集合长度,根据集合长度是否变化,判断集合中是否有该学生,也就是判断是否成功删除该学生。
3.3修改学生信息
从键盘输入需要修改学生信息的学号、班级、姓名、性别、年龄,遍历集合,匹配学号,匹配成功之后,用键盘输入的新信息覆盖该学生旧信息。执行写入操作,及时打印学生信息。
3.4 排序
先判断学生信息是否导入,即判断集合是否为空。将集合中学生信息一次遍历进一个新数组列表。采用冒泡排序对学生班级、学号、姓名、性别进行排序,最后输出排好序的学生列表。
//冒泡排序
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 0; j < list.size() - 1; j++) {
Student student1 = list.get(j);
Student student2 = list.get(j+1);
if (student1.getSex().compareTo(student2.getSex()) > 0) {
Student temp = student1;
list.set(j, student2);
list.set(j+1, temp);
}
}
}
3.5 筛选
定义两个新数组列表,存放对应筛选条件的学生信息,遍历学生信息,按照条件,依次将其存入新数组列表,最后输出。
3.6 查找
根据要求采用折半查找方式。
//折半查找
int mid = (left + right) /2;
Student student = list.get(mid);
if(sno.compareTo(student.getSno()) > 0) {
return searchSno(s,mid+1,right,sno);
}else if(sno.compareTo(student.getSno()) < 0) {
return searchSno(s,left,mid-1,sno);
}else {
return student;
}

四、 函数调用关系(所有函数间的调用关系,包括main方法)

在这里插入图片描述

五、 上机调试

5.1运行结果
在这里插入图片描述
5.2错误
错误1:变量重复定义
解决方案:更换变量名
错误2:txt文件格式不符(提示java异常和数组下标溢出,其实就是txt文件格式的问题)
在这里插入图片描述
在这里插入图片描述
解决方案:删除多余空格和空行

六、 总结

    此次实习,我们划分模块,分工合作,我们每个人虽然都遇到了许多困难,但是通过老师指导、小组讨论和请教他人,最终都得以顺利的化解了,这次实习不仅巩固加深了我们对数据结构和java语言的理解,提高了运用本课程知识的能力;而且培养了我们独立思考和深入研究分析问题和解决问题以及协作的能力;同时,我们对eclipse的运用也更加熟练,以后面对类似项目,定会更加得心应手。
    时间虽短,但每一天都非常充实,我们受益匪浅,对理论知识的理解得以加深,并且提高了我们的实践能力,真正的做到了学以致用。在这一周的实习中我们也深刻认识到了要成为一名优秀的软件开发人员,不是一件容易的事,不仅要有足够的热情和干劲,还要有扎实的编写代码基础。任重而道远,加油!!!!!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值