项目作业:学生管理系统
项目作业 4587
等267人参与

本题完成一个简单学生管理系统的案例,包括班级管理和学校管理两大部分。

包含一个主学生列表,存放学生的所有信息,这个主列表是一个包含所有学生的特殊班级,其他班级的学生需要从主学生列表添加。

1、班级管理  功能如下:

l  添加学生信息到主学生列表

l  添加学生信息到普通班级

l  通过学号查询学生信息

l  输入班级的语文成绩

l  输入班级的数学成绩

l  删除学生信息

l  显示所有学生信息

2、学校管理  功能如下:

l  创建班级

l  删除班级

l  通过班级名称查询班级信息

l  对各班语文成绩按平均分进行由大到小排序

l  对各班数学成绩按平均分进行由大到小排序

l  显示所有班级名称

运行效果参见演示视频~

演示视频
作业描述

一、 项目准备

开发工具:JDK、Eclipse

需求分析:见课程视频,并参考评分标准。

效果演示:见课程视频。

二、整体要求

1、 完成需求分析和详细设计中所涉及到的所有功能。

2、 代码结构要层次分明,代码编辑思路要清晰、整洁。

3、 要求Java代码书写、命名符合规范,并在代码中添加必要的注释

4、 程序运行效果与提供的页面效果图、结构保持一致

5、 将作业项目导出(Export)成压缩文件

三、详细设计

1、项目包括四个类的设计:

        学生类(Student)

        班级类(BanJi)

        学校类(School)

        主流程类(TestDemo)

 

   1)Student类:

         属性: 学号(stuNum)、姓名(stuName) 这两个属性为String类型

                    数学成绩(math)、语文成绩(chinese) 这两个属性为float类型

        方法:  构造方法

                    setter和getter方法

                    hashCode()和equals()方法

                    toString()方法

    2)Banji类:

          属性:班级编号(classId)、班级名称(className)  这两个属性均为String类型

                    存放学生的集合(stuList) 这个属性为List类型

          方法:构造方法

                    getter和setter方法

                    将学生添加到班级:public void addStudent(Student stu){}

                    通过学号查询学生在班级中是否存在: public Student searchStudentByNum(String stuNum){}

                    输入班级学生的语文成绩:public void insertChineseScore(String stuNum,float score){}

                    输入班级学生的数学成绩:public void insertMathScore(String stuNum,float score){}

                    删除学生信息:public void deleteStudent(String stuNum){}

                    显示所有学生的信息(包括学号和姓名):public void displayAllStudent(){}

    3)School类

            属性:存放班级的集合(schoolMap) ,类型为Map

            方法: 构造方法

                        getter和setter方法

                        添加班级:public void addBanji(Banji banji){}

                        删除班级 : public void deleteBanji(Banji banji){}

                        通过班级名称查询班级:public BanJi searchByName(String className) {}

                        对各班语文成绩按平均分进行由大到小排序:public void sortChineseByAverage() {}

                        对各班数学成绩按平均分进行由大到小排序:public void sortMathByAverage() {}

                        显示所有班级名称:public void displayBanJiName() {}

    4)TestDemo类

             方法:

                   班级的测试方法:public void testBanJi(){}

                   学校的测试方法:public void testSchool(){}

                   主菜单: public void mainMenu(){}

                   学校管理菜单:public void schoolMenu(){}

                   班级管理菜单:public void banJiMenu(){}

                   主流程:public void test(){}


评分标准是什么?

规范【10分】

  • 每个类都封装在自己独立的 ".java"文件中;

  • 文件、class、成员变量命名规范;               

  •  代码结构要层次分明;  

  • Java代码规范及添加适量注释。

 程序整体运行效果【10分】    

  • 程序正常运行效果,且满足效果图要求;

  • 信息间分隔符“*”号数量不做统一要求;

  • 学生的名称及班级名称不做统一要求。

学生类【8分】 

  • 能够完成属性定义;

  • 能够完成构造方法定义;

  • 能够完成getter和setter方法;

  • 能够完成hashCode()方法、equals()方法和toString()方法。


班级类【24分】 

  • 能够完成属性定义方法包括构造方法;

  • 能够完成getter和setter方法定义;

  • 能够完成将学生添加到班级的方法定义;

  • 能够完成通过学号查询学生在班级中是否存在的方法定义;

  • 能够完成输入班级学生的语文成绩的方法的定义;

  • 能够完成输入班级学生的数学成绩的方法定义;

  • 能够完成删除学习信息的方法定义;

  • 能够完成显示所有学生的信息的方法定义;


学校类【20分】 

  • 能够完成属性定义;

  • 能够完成构造方法、getter和setter方法的定义;

  • 能够完成添加班级的方法定义;

  • 能够完成删除班级的方法定义;

  • 能够完成通过班级名称查询班级的方法定义;

  • 能够完成对各班语文成绩按平均分进行由大到小排序的方法定义;

  • 能够完成对各班数学成绩按平均分进行由大到小排序的方法定义;

  • 能够完成显示所有班级名称的方法定义;


主流程类【28分】 

  • 能够完成主程序逻辑的编写;

  • 能够对学生类进行测试;

  • 能够对班级类进行测试;

  • 能够对学校类进行测试。

项目作业上传说明
第1步:上传你的作业压缩包
第2步:等待讲师一对一批复
第3步:查看讲师点评
上传作业

登录后查看更多作业,立即

批复案例

代码规范
注意类名命名规范,当类名由一个单词组成时,该单词首字母大写;当类名由多个单词组成时,则每个单词的首字母均大写。如:Testdemo应改为:TestDemo
菜单
问题:当选择菜单时,如果输入非数字,会出现 InputMismatchException异常,同学的代码运行效果如下:
图片描述
修改建议:这时需要对异常信息进行捕获。可以使用try{} 块对键盘输入的代码进行捕获,并在catch{}块中加上sc.next()方法以及错误提示语句。修改后代码如下所示:
图片描述
图片描述
图片描述
班级管理
问题1:添加学生信息到普通列表中,当输入的学生编号在主学生列表中存在时,应该直接添加到普通班级中,不需要重新输入学生姓名。修改后代码如下所示:
图片描述
问题2:按照作业需求对各班语文和数学成绩按平均分应该进行由大到小排序。修改后代码如下所示:
图片描述
其他优化建议
问题1:建议先定义一个包,然后将类放在包下便于管理。
问题2:建议同学把Scanner对象的创建放在循环外,避免重复创建,占用内存资源。
图片描述

意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师