ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学生信息管理系统

2019-04-05 08:52:25  阅读:185  来源: 互联网

标签:case int System 学生 stu println 信息管理系统 out


一、题目分析

对学生信息管理系统,要求完成以下基本任务:
1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。
2.将功能补充完全(基于文件处理,完成刷新和保存功能)。
3.将学生信息改为更好的数据组织,而非离散形式(结构体)。
提高要求:
可将程序中的不足(如数据验证)等根据自己的能力与理解完成。

二、算法构造

设计思路:
1.将学生信息所需要执行的函数写出来,在switch-case语句中调用即可。这样程序结构清晰,框架明了。
2.对学生信息输入时难免会输入错误格式,所以,在代码完成后,凡是需要进行输入的地方,都必须加入try{…}catch(){…}对输入的异常进行处理。

三、流程图

- 程序总框架
在这里插入图片描述

  • 刷新学生信息盒图
    在这里插入图片描述
  • 对学生信息查询(根据姓名查找同理)
    在这里插入图片描述
  • 修改学生信息
    在这里插入图片描述

四、调试

  • 出现问题一:
    程序执行查找时虽然没有报错,但是查找失败
    此时出现了问题,明明学号1存在,并且bob也存在,调试分析原因。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    之后直接break,中间一段没有执行。
    在这里插入图片描述
    对循环结束条件判断错误,改为num,程序可正常运行。

  • 出现问题二:
    删除时空指针报错
    在这里插入图片描述
    对其进行调试错误分析,
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

由于是空指针报错,所以考虑数组长度的问题或者循环判断条件错误
在这里插入图片描述
将判断条件改为num-1,程序可正常运行
在这里插入图片描述

  • 出现问题三:
    在选择执行功能时,可能会出现输入异常。
    在这里插入图片描述
    对这段程序进行调试:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    调试后发现,如果开始时输入异常,之后不管输入是否异常,catch()语句都会执行;若第一次输入正确,switch-case语句只执行case 0。
    最后,将catch()语句放在所有case之后,程序可正常运行。

五、测试

  • 对测试说明测试
    在这里插入图片描述
  • 对文件更新
    在这里插入图片描述
    在这里插入图片描述
  • 查询学生信息
    在这里插入图片描述
  • 修改学生信息
    在这里插入图片描述
  • 增加学生信息
    在这里插入图片描述
  • 按学号删除信息
    在这里插入图片描述
  • 显示当前信息
    在这里插入图片描述
  • 保存到文件
    在这里插入图片描述
    在这里插入图片描述

六、运行结果

  • 增加学生信息
    在这里插入图片描述
  • 对学生信息进行修改
    在这里插入图片描述
  • 将学生信息保存
    在这里插入图片描述
  • 对学生信息查找
    在这里插入图片描述
  • 按学号删除信息
    在这里插入图片描述
  • 将保存的学生信息清空
    在这里插入图片描述
    在这里插入图片描述
  • 将所输入的学生信息保存在文件中
    在这里插入图片描述
  • 当学生信息输入格式错误时
    在这里插入图片描述

七、经验归纳

1.学生信息管理系统,需要不断对学生的信息进行输入与修改,所以,在输入时很容易出现问题。这次作业,用了大量的try{…}catch(){…}来对异常错误进行捕捉,保证输入的正确性。
2.练习了对象数组的知识,动态的将数据进行存储。体会到数组是一种线性数据结构。
3.对文件的写入操作进行练习。

八、源代码

//Student类
package qwe;

public class Student {
	private String stuNo = " ";
	private String stuName = " ";
	private String gender = " ";
	private int age;
	private int cscore;
	private int mathscore;
	private int englishscore;

	public String getStuNo() {
		return stuNo;
	}

	public void setStuNo(String stuNo) {
		this.stuNo = stuNo;
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getCscore() {
		return cscore;
	}

	public void setCscore(int cscore) {
		this.cscore = cscore;
	}

	public int getMathscore() {
		return mathscore;
	}

	public void setMathscore(int mathscore) {
		this.mathscore = mathscore;
	}

	public int getEnglishscore() {
		return englishscore;
	}

	public void setEnglishscore(int englishscore) {
		this.englishscore = englishscore;
	}
	
	@Override
	public String toString() {
		return "Student [stuNo=" + stuNo + ", stuName=" + stuName + ", gender=" + gender + ", age=" + age + ", cscore="
				+ cscore + ", mathscore=" + mathscore + ", englishscore=" + englishscore + "]";
	}
}

package qwe;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
	private static final int scannum = 0;
	static int num = 0;
	static boolean tag = true;
	static boolean tag_1 = true;
	static Student[] stu = new Student[100];
	static Scanner scan = new Scanner(System.in);

	public static void main(String[] args) throws InputMismatchException {

		menu();
		while (tag) { // 主菜单
			try {
				int scannum = scan.nextInt();
				switch (scannum) { // 主菜单选择
				case 0:
					help();// 系统帮助及说明
					break;
				case 1:
					renew();// 刷新学生信息
					System.out.println("Clear successfully! ");
					break;
				case 2:
					seek();// 查询学生信息
					break;
				case 3:
					modify();// 修改学生信息
					break;
				case 4:
					add();// 增加学生信息
					break;
				case 5:
					del();// 按学号删除信息
					break;
				case 6:
					display();// 显示当前信息
					break;
				case 7:
					save(stu);// 保存当前学生信息
					System.out.println("Save successfully! All in log.txt view.");
					break;
				case 8:// 退出系统
					tag = false;
					break;
				default:
					System.out.println("please choose 0--8 ");
					break;
				}
			} catch (Exception e) {
				System.out.println("输入错误,请输入数字");
				tag = false;
			}
		}
	}

	// 系统帮助及说明
	static void help() {
		System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
		System.out.println("<<    Welcome to Student Information Management System    >>");
		System.out.println("<<              you have eight points to choose           >>");
		System.out.println("<< remember please inout your student information firstly >>");
		System.out.println("<<                   thank you!                           >>");
		System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
	}

	// 刷新学生信息
	static void renew() { // 清空已有的文件内容,以便下次重新写入新的内容
		File file = new File("./log.txt");
		try {
			if ( !file.exists() ) {
				file.createNewFile();
			}
			FileWriter fileWriter = new FileWriter(file);
			fileWriter.write("");
			fileWriter.flush();
			fileWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	// 查询学生信息
	static void seek() {
		int flag = 0;
		try {
			System.out.println("-----1.search by student Stuno  -----");
			System.out.println("-----2.search by student StuName-----");
			System.out.println("-----3.leave                    -----");
			Scanner sc = new Scanner(System.in);
			Scanner s1 = new Scanner(System.in);
			Scanner s2 = new Scanner(System.in);
			while (true) {
				int item = sc.nextInt();
				switch (item) {

				case 1:
					System.out.print("please input your Stuno:  ");
					String idnumber = s1.next();
					for (int i = 0; i < num; i++) {
						if (stu[i].getStuNo().equals(idnumber)) {
							flag = 1;
							System.out.println("successful! the result is:");
							System.out.println(stu[i]);
						} else {
							if (flag == 0) {
								System.out.println("query failed!");
								break;
							}
						}
					}
					break;

				case 2:
					System.out.print("please input your Stuname:  ");
					String namestring = s2.next();
					for (int i = 0; i < num; i++) {
						if (stu[i].getStuName().equals(namestring)) {
							flag = 1;
							System.out.println("successful! the result is:");
							System.out.println(stu[i]);
						} else {
							if (flag == 0) {
								System.out.println("query failed!");
								break;
							}
						}
					}
					break;

				case 3:
					return;

				default:
					System.out.println("please choose from 1 - 3 ");

				}
			}
		} catch (Exception e) {
			System.out.println("输入错误,请输入数字");
		}

	}

	// 修改学生信息
	static void modify() {
		try {
			System.out.print("please enter the StuNo you need to modify: ");
			Scanner sc = new Scanner(System.in);
			Scanner s1 = new Scanner(System.in);
			Scanner x1 = new Scanner(System.in);
			int number = s1.nextInt();
			System.out.println("-----1.modify Stuname        ----");
			System.out.println("-----2.modify age            ----");
			System.out.println("-----3.modify gender         ----");
			System.out.println("-----4.modify cscore         ----");
			System.out.println("-----5.modify mathscore      ----");
			System.out.println("-----6.modify englishscore   ----");
			System.out.println("-----7.leave                 ----");
			while (true) {
				System.out.print("please input modified item: ");
				int item = sc.nextInt();
				switch (item) {
				case 1:
					System.out.print("input new name:");
					stu[number - 1].setStuName(scan.next());
					break;

				case 2:
					System.out.print("input new age:");
					stu[number - 1].setAge(scan.nextInt());
					break;

				case 3:
					System.out.print("input new sex:");
					stu[number - 1].setGender(scan.next());
					break;

				case 4:
					System.out.print("input new cscore:");
					stu[number - 1].setCscore(scan.nextInt());
					break;

				case 5:
					System.out.print("input new mathscore:");
					stu[number - 1].setMathscore(scan.nextInt());
					break;

				case 6:
					System.out.print("input new englishscore:");
					stu[number - 1].setEnglishscore(scan.nextInt());
					break;

				case 7:
					return;

				default:
					System.out.println("please choose from 1 - 7 ");
				}
			}
		} catch (Exception e) {
			System.out.println("输入错误,请输入数字");
		}
	}

	// 保存当前学生信息
	static void save(Student[] stu) {
		try {
			File file = new File("./log.txt");
			// 文件不存在时,主动创建文件
			if (!file.exists()) {
				file.createNewFile();
			}
			FileWriter fw = new FileWriter(file, false);
			BufferedWriter bw = new BufferedWriter(fw);
			bw.write("[学号	|姓名 	|性别 	|年龄	  |c语言成绩  	|高数成绩	     |英语成绩]\n");
			for (int i = 0; i < num; i++) {
				bw.write(stu[i].toString());
				bw.write("\n");
			}
			bw.close();
			fw.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 显示当前信息
	static Student display() {
		System.out.println("[学号\t|姓名 \t|性别 \t|年龄\t|c语言成绩\t|高数成绩\t|英语成绩]");
		for (int i = 0; i < num; i++) {
			System.out.println(stu[i]);
			return stu[i];
		}
		return null;
	}

	// 增加学生信息
	static void add() { // 增加学生信息
		try {
			while (tag_1) {
				stu[num] = new Student();
				System.out.println("请依次输入学号,姓名,性别,年龄,c语言成绩,高数成绩,英语成绩");
				stu[num].setStuNo(scan.next());
				stu[num].setStuName(scan.next());
				stu[num].setGender(scan.next());
				stu[num].setAge(scan.nextInt());
				stu[num].setCscore(scan.nextInt());
				stu[num].setMathscore(scan.nextInt());
				stu[num].setEnglishscore(scan.nextInt());
				num++;
				System.out.println("继续输入请输入true,否则输入false");
				tag_1 = scan.nextBoolean();
			}
		} catch (InputMismatchException e) {
			System.out.println("输入有误");
		} catch (Exception e) {
			System.out.println("您输入的数值有误 !");
		}
	}

	static boolean kai = false;

	// 删除学生信息
	static void del() {
		System.out.println("请输入你要删除的学号");
		String xuehao = scan.next();
		int i;
		for (i = 0; i < num; i++) {
			if (xuehao.equals(stu[i].getStuNo())) {
				kai = true;
				break;
			}
		}
		if (kai) {
			for (i = 0; i < num - 1; i++) {
				stu[i].setStuNo(stu[i + 1].getStuNo());
				stu[i].setStuName(stu[i + 1].getStuName());
				stu[i].setGender(stu[i + 1].getGender());
				stu[i].setAge(stu[i + 1].getAge());
				stu[i].setCscore(stu[i + 1].getCscore());
				stu[i].setCscore(stu[i + 1].getMathscore());
				stu[i].setCscore(stu[i + 1].getEnglishscore());
			}
		} else {
			System.out.println("查无此人");
		}
		num--;
	}

	//菜单
	static void menu() {
		System.out.println("  ******************************************************");
		System.out.println("  *                  学生信息管理系统                                         *");
		System.out.println("  ******************************************************");
		System.out.println("  ********************系统功能菜单************************");
		System.out.println("     ----------------------   ----------------------   ");
		System.out.println("     *********************************************     ");
		System.out.println("     * 0.系统帮助及说明  * *  1.刷新学生信息   *   ");
		System.out.println("     *********************************************     ");
		System.out.println("     * 2.查询学生信息    * *  3.修改学生信息   *     ");
		System.out.println("     *********************************************     ");
		System.out.println("     * 4.增加学生信息    * *  5.按学号删除信息 *     ");
		System.out.println("     *********************************************     ");
		System.out.println("     * 6.显示当前信息    * *  7.保存当前学生信息*     ");
		System.out.println("     ********************** **********************     ");
		System.out.println("     * 8.退出系统        *                            ");
		System.out.println("     **********************                            ");
		System.out.println("     ----------------------   ----------------------   ");
	}
}

标签:case,int,System,学生,stu,println,信息管理系统,out
来源: https://blog.csdn.net/Adore_/article/details/89039697

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有