学生成绩管理系统----初学者练习

博主通过一个Java实现的学生成绩管理系统,展示了面向对象编程、数据管理与排序等技术的应用。系统包括学生类、成绩类、管理类以及异常处理,支持添加、查找、更新和删除学生信息,以及成绩录入和按科目排序等功能。博主分享了代码实现过程中的学习心得,如自定义异常处理和数组元素删除等技巧,并邀请读者指导和交流。
摘要由CSDN通过智能技术生成


学生成绩管理系统

新手练手小项目,主要练习面向对象、循环、数组、排序等等。
本人也是自学练手,代码有不正确的或不完善的也请多多包涵,留言指导。
感谢!


一、创建学生类

储存学生的基本信息

public class Student {
	private int no;
	private String name;
	Result result;
	
	public Student() {
		super();
	}

	public Student(int no, String name,Result result) {
		super();
		this.result = result;
		this.name = name;
		this.no = no;
	}

	public Result getResult() {
		return result;
	}

	public void setResult(Result result) {
		this.result = result;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getNo() {
		return no;
	}

	public void setNo(int no) {
		this.no = no;
	}
	
	public String toString(){
		return "\t" + no + "\t" + name + "\t" + result;
	}
}

二、创建成绩类

便于成绩的增加,易于管理

public class Result {//成绩类
	private int java;
	private int python;
	private int c_shar;
	private int sql;
	private int sum;
	private int avg;
	
	public Result() {
		
	}

	public Result(int java, int python, int c_shar, int sql) {
		super();
		this.java = java;
		this.python = python;
		this.c_shar = c_shar;
		this.sql = sql;
	}

	public int getJava() {
		return java;
	}

	public void setJava(int java) {
		this.java = java;
	}

	public int getPython() {
		return python;
	}

	public void setPython(int python) {
		this.python = python;
	}

	public int getC_shar() {
		return c_shar;
	}

	public void setC_shar(int c_shar) {
		this.c_shar = c_shar;
	}

	public int getSql() {
		return sql;
	}

	public void setSql(int sql) {
		this.sql = sql;
	}
	
	public int getSum(){
		return this.java + this.python + this.c_shar + this.sql;
	}
	
	public int getAvg(){
		return this.getSum() / 4;
	}
	
	public String toString(){
		return java + "\t" + python + "\t" + c_shar + "\t" + sql + "\t" + this.getSum() + "\t" + this.getAvg();
	}
}

三、创建学生管理类

主要功能在此类中,例如添加学生信息、查找学生等等

import java.util.Scanner;

public class StudentAdmin {//管理学生类
	Scanner in = new Scanner(System.in);
	
	/**
	 * 
	 * @param name 传一个name添加学生姓名
	 * @param Arr传一个学生数组,将学生对象保存
	 * @throws AddStudentException
	 */
	public void addStudent(String name,Student[] Arr) throws AddStudentException{//添加学生方法
		AddStudentException ase = new AddStudentException("学生已达上限,添加失败!");
		Student stu = new Student();
		Result r = new Result();
		stu.setNo(setIndex(Arr) + 1);
		stu.setName(name);
		stu.setResult(r);
		if(setIndex(Arr) == -1){
			throw ase;
		}else{
			Arr[this.setIndex(Arr)] = stu;
		}
	}
	/**
	 * 
	 * @param Arr传一个数组
	 * @return返回空数组元素的下标
	 */
	public int setIndex(Student[] Arr){
		for(int i = 0; i < Arr.length; i++){
			if(null == Arr[i]){
				return i;
			}
		}
		return -1;
	}
	public void print(Student[] arr){//打印学生对象
		for(int i = 0; i < arr.length; i++){
			if(judge(i+1,arr[i])){
				System.out.println(arr[i]);
			}
		}
	}
	public boolean judge(int no,Student stu){//判断数组元素编号和传的编号是否一致
		if(stu != null){
			if(stu.getNo() == no){
				return true;
			}else{
				return false;
			}
		}
		return false;
	}
	public void search(String name,Student[] arr){//查找学生方法
		for(int i = 0; i < arr.length; i++){
			if(judge(i + 1,arr[i])){
				if(arr[i].getName().equals(name)){
					System.out.println(arr[i]);
					return;
				}
			}
		}
		System.out.println("没有找到此学生,请确认输入的姓名是否正确!");
	}
	public void update(int no,String name,Student[] arr){//更新学生姓名
		for(int i = 0; i < arr.length; i++){
			if(judge(i + 1,arr[i])){
				arr[i].setName(name);
				System.out.println(arr[i]);
				return;
			}
		}
		System.out.println("没有此编号,请确认输入的编号是否正确!");
	}
	public void del(int no,Student[] arr){//删除学生信息
		for(int i = 0; i < arr.length; i++){
			if(judge(no,arr[i])){
				arr[i] = null;
				return;
			}
		}
		System.out.println("没有此编号,请确认输入的编号是否正确!");
	}
	public void stuResult(int no,Student[] arr){//根据编号输入学生各科成绩
		for(int i = 0; i < arr.length; i++){
			if(judge(i + 1,arr[i])){
				if(arr[i].getNo() == no){
					System.out.println("请输入" + arr[i].getName() + "的java成绩:");
					arr[i].result.setJava(in.nextInt());
					System.out.println("请输入" + arr[i].getName() + "的python成绩:");
					arr[i].result.setPython(in.nextInt());
					System.out.println("请输入" + arr[i].getName() + "的c_char成绩:");
					arr[i].result.setC_shar(in.nextInt());
					System.out.println("请输入" + arr[i].getName() + "的sql成绩:");
					arr[i].result.setSql(in.nextInt());
					break;
				}
			}
		}
	}
	public void paiXu(int no,Student[] arr){//根据某科成绩排序
		switch(no){
			case 1:
				for(int i = 0; i < arr.length-1; i++){
					for(int j = i + 1; j < arr.length; j++){
						if(arr[j].result.getJava() > arr[i].result.getJava()){
							Student max = arr[i];
							arr[i] = arr[j];
							arr[j] = max;
						}
					}
				}
				for(int i = 0; i < arr.length; i++){
					System.out.println(arr[i]);
				}
				break;
			case 2:
				for(int i = 0; i < arr.length-1; i++){
					for(int j = i + 1; j < arr.length; j++){
						if(arr[j].result.getPython() > arr[i].result.getPython()){
							Student max = arr[i];
							arr[i] = arr[j];
							arr[j] = max;
						}
					}
				}
				for(int i = 0; i < arr.length; i++){
					System.out.println(arr[i]);
				}
				break;
			case 3:
				for(int i = 0; i < arr.length-1; i++){
					for(int j = i + 1; j < arr.length; j++){
						if(arr[j].result.getC_shar() > arr[i].result.getC_shar()){
							Student max = arr[i];
							arr[i] = arr[j];
							arr[j] = max;
						}
					}
				}
				for(int i = 0; i < arr.length; i++){
					System.out.println(arr[i]);
				}
				break;
			case 4:
				for(int i = 0; i < arr.length-1; i++){
					for(int j = i + 1; j < arr.length; j++){
						if(arr[j].result.getSql() > arr[i].result.getSql()){
							Student max = arr[i];
							arr[i] = arr[j];
							arr[j] = max;
						}
					}
				}
				for(int i = 0; i < arr.length; i++){
					System.out.println(arr[i]);
				}
				break;
			default:
				System.out.println("你输入的编号错误!");
		}
	}
	public void sumPaiXu(Student[] arr){//根据总分进行排序
		for(int i = 0; i < arr.length-1; i++){
			for(int j = i + 1; j < arr.length; j++){
				if(arr[j].result.getSum() > arr[i].result.getSum()){
					Student max = arr[i];
					arr[i] = arr[j];
					arr[j] = max;
				}
			}
		}
		for(int i = 0; i < arr.length; i++){
			System.out.println(arr[i]);
		}
		return;
	}
}

四、异常类

练习自定义异常类的创建及使用

public class AddStudentException extends Exception{
	public AddStudentException(){}
	public AddStudentException(String s){
		super(s);
	}
}

五、测试类(主程序)

import java.util.Scanner;

public class Test {
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		
		StudentAdmin admin = new StudentAdmin();
		
		System.out.println("请定义学生的人数:");
		Student[] stuArr = new Student[in.nextInt()];
		
		while(true){
			System.out.println("请选择你要执行的功能:");
			System.out.println("1:添加一个学生");
			System.out.println("2:查找一个学生");
			System.out.println("3:根据学生编号更新 学生基本信息");
			System.out.println("4:根据学生编号删除学生");
			System.out.println("5:根据编号输入学生各科成绩");
			System.out.println("6:根据某科成绩进行排序");
			System.out.println("7:根据总分进行排序");
			System.out.println("0:退出系统");
			int num = in.nextInt();
			switch(num){
				case 0 :
					System.exit(0);
				case 1 :
					System.out.println("请输入学生姓名:");
					try {
						admin.addStudent(in.next(), stuArr);
					} catch (AddStudentException e) {
						e.printStackTrace();
					}
					admin.print(stuArr);
					break;
				case 2 :
					System.out.println("请输入要查找的学生姓名:");
					String name = in.next();
					admin.search(name, stuArr);
					break;
				case 3 :
					System.out.println("请输入要修改的编号:");
					int no = in.nextInt();
					System.out.println("请重新输入学生姓名:");
					String name1 = in.next();
					admin.update(no, name1, stuArr);
					break;
				case 4 :
					System.out.println("请输入学生编号:");
					int no1 = in.nextInt();
					admin.del(no1, stuArr);
					System.out.println("删除学生信息成功!");
					break;
				case 5 :
					System.out.println("请输入学生编号:");
					int no2 = in.nextInt();
					admin.stuResult(no2, stuArr);
					admin.print(stuArr);
					break;
				case 6 :
					System.out.println("请输入编号对应成绩进行排序【1:java 2:python 3:c_char 4:sql】");
					int no3 = in.nextInt();
					admin.paiXu(no3, stuArr);
					break;
				case 7 :
					admin.sumPaiXu(stuArr);
					break;
				default :
					System.out.println("您输入的编号有误,请重新输入!");
					break;
			}
		}
	}
}

总结

本人也是刚学习java不久,一直在看视频自学。目前学习到了集合(刚开始),线程、IO还没学。这个小的项目也是我自己在练手,巩固学习的基础知识,只用到了最基本的知识。
在做这个项目的时候有很多不懂的地方。
例如:
1、Student类中的Result result这个实例变量的传参,我发现如果把Result result这个属性私有化无法赋值,最后便把访问权限改成了缺省
2、“根据编号删除学生信息”不知道怎么删除数组中的学生对象,现在知道原来把数组赋值为“null”就行了
等等
通过这个小练习,也学习到了很多很多。代码还有很多不完善的地方,分享给大家,请大家指导!

酒店管理系统使用说明书 主要功能 本系统中包含如下6大功能模块: q 前台服务:该模块主要包括开台点菜、维护菜品、签单、结账等功能,其中维护菜品功能包括添加和取消菜品,能够取消菜品的前提条件是尚未签单,即处于开单状态,结账则要求所有商品都要签单,否则不允许结账。 q 后台管理:该模块主要包括台号管理、菜系管理和菜品管理功能,其中菜系用来对菜品进行分类。 q 销售统计:该模块用来分段统计营业额,可以按日、月和年进行统计,其中日统计是按消费单和销售的商品统计销售额,月统计是按日期和每日的销售额统计销售额,年统计是按日期和月份统计销售额。 q 系统安全:该模块主要包括交接班、锁定系统和修改密码功能,其中交接班功能在操作员换岗使用,锁定系统在操作员临离开使用。 q 人员管理:该模块主要包括档案管理、管理员管理和操作权限管理功能,其中管理员管理功能用来管理系统的操作员,权限管理功能用来管理系统操作员具有的操作权限。 q 初始化系统:该功能用来对系统进行初始化,初始化后系统数据将全部被删除。 操作注意事项 用户在使用《酒店管理系统》之前,应注意以下事项: (1)管理员用户名和密码为:mr、mrsoft。 (2)当鼠标经过主界面右下角,会弹出菜单,在这里可以对本系统的信息进行管理。 业务流程 要想运行本系统,请按照以下流程操作: (1)在“人员管理”中添加操作员及其档案信息。 (2)在“系统维护”中添加台号、菜系及菜品信息。 (3)在“台号”下拉列表中选择台号、在商品文本框中输入商品助记码或编号及商品数量,然后单击“开台”按钮。可添加多个商品。 (4)顾完单完菜后,单击“签单”按钮,表示确认该订单,此可以执行结账操作,否则不可进行结账。 如果操作离开,可单击“锁定系统”按钮,输入登录密码可解锁。 (5)在“销售统计”中可对日销售、月销售及年销售额进行统计。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐雨晨风zzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值