新手求助,小程序不知道怎样写下去了

Michxy_Wong 2013-08-06 11:33:57
看了JAVA视频后,有感而发,所以就
设计一个学生查询系统
学生信息只有 姓名 ,编号,分数
此3个数据在一个类中
通过姓名和编号查询到该学生的分数
程序的效果:

神秘代码 新手勿喷
import java.util.Scanner;


public class Student {
private static final String String = null;

public static void main(String [] args){
System.out.println("The school inquiry system");
System.out.println("Please choose student name or id to inquiry");
System.out.println("Choose 1 is student name ; 2 is student id ");
Student s = new Student();
Student.Choose(); //调用Choose 来进行选择和调用方法
}
public static void Choose (){
Scanner s = new Scanner(System.in);
int num = s.nextInt();
if(num==1){
System.out.println("Please key student name ");
String namer = s.next(); //定义namer 为查询学生名字
System.out.println(namer);
Student.Name(namer);
}else if(num==2){
System.out.println("Please key student id ");
int ider = s.nextInt(); //定义ider 为查询学生编号
System.out.println(ider);
Student.Id(ider);
}else{
System.out.println("You key num is erro ");
}
}
public static void Name(String namer){
System.out.println(namer);
int b=0;
Student.Database(namer, b);
}
public static void Id(int ider){
System.out.println(ider);
int a=0;
Student.Database(String, ider);
}
public static void Database(String a,int b){ //学生数据库 以数组的形式存储,如[Name,Id,Score]
String [][]str={{"张三","001","90"},{"李四","002","65"},{"王五","003","85"}};
for(int i=0;i<=2;i++){
for(int j=0;j<=2;j++ ){
//if(b == str[i][j]){
System.out.println("姓名:"+str[i][j-1]+",编号:"+str[i][j]+",分数:"+str[i][j+1]);
}
}
}
}
//}
...全文
295 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
S117 2013-08-07
  • 打赏
  • 举报
回复

import java.util.Scanner;

public class Student {
	private static final String String = null;

	public static void main(String[] args) {
		System.out.println("The school inquiry system");
		System.out.println("Please choose student name or id to inquiry");
		System.out.println("Choose 1 is student name ; 2 is student id ");
		Student.Choose(); // 调用Choose 来进行选择和调用方法
	}

	public static void Choose() {
		Scanner s = new Scanner(System.in);
		int num = s.nextInt();
		if (num == 1) {
			System.out.println("Please key student name ");
			String namer = s.next(); // 定义namer 为查询学生名字
			System.out.println(namer);
			Student.Name(namer);
		} else if (num == 2) {
			System.out.println("Please key student id ");
			String ider = s.next(); // 定义ider 为查询学生编号
			System.out.println(ider);
			Student.Id(ider);
		} else {
			System.out.println("You key num is erro ");
		}
	}

	public static void Name(String namer) {
		System.out.println(namer);
		String b = null;
		Student.Database(namer, b);
	}

	public static void Id(String ider) {
		System.out.println(ider);
		Student.Database(String, ider);
	}

	public static void Database(String a, String b) { // 学生数据库
		// 以数组的形式存储,如[Name,Id,Score]
		String[][] str = { { "张三", "001", "90" }, { "李四", "002", "65" },
				{ "王五", "003", "85" } };
		boolean find = false;
		for (int i = 0; i <= 2; i++) {
			if(a != null){
				if(str[i][0].equals(a)){
					System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
							+ str[i][2]);	
					find = true;
				}
			}else{
				if(str[i][1].equals(b)){
					System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
							+ str[i][2]);	
					find = true;
				}
			}
		}
		if(!find){
			System.out.println("查无此人");
		}
	}
}
// }
失落夏天 2013-08-07
  • 打赏
  • 举报
回复
如果你不说想实现什么样的效果的话,估计没人能帮的了你。。
Michxy_Wong 2013-08-07
  • 打赏
  • 举报
回复
引用 10 楼 AA5279AA 的回复:
你这程序BUG和逻辑上的缺陷有点多, 尽量少改了些,写了如下的程序,希望能帮到你。

package com;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test4 {
	private static final String String = null;

	public static void main(String[] args) {
		
		Test4 t = new Test4();
		Student student=t.getStuScore();
		if(student==null){
			System.out.println("未查找到该学生");
		}else{
			System.out.println(student.toString());
		}
	}

	public Student getStuScore() {
		//创建学生对象来存储学生信息
		Student student=new Student();
		System.out.println("The school inquiry system");
		
		//输入学生信息来选择学生
		choose(student);
		//学生已经存好了信息
		if(student.getId()!=null)
			return selectById(student);
		if(student.getName()!=null)
			return selectByName(student);
		return null;
	}

	public static void choose(Student student) {
		System.out.println("Please choose student name or id to inquiry");
		System.out.println("Choose 1 is student name ; 2 is student id ");
		Scanner s = new Scanner(System.in);
		int num = s.nextInt();
		if (num == 1) {
			System.out.println("Please key student name ");
			String name = s.next(); // 定义namer 为查询学生名字
			System.out.println(name);//这里其实应该加一些正则格式验证,就先不写了。。
			student.setName(name);
		} else if (num == 2) {
			System.out.println("Please key student id ");
			String id = s.next(); // 定义ider 为查询学生编号
			System.out.println(id);
			student.setId(id);
		} else {
			System.out.println("You key num is erro ");
		}
	}

	public static Student selectByName(Student student) {
		System.out.println("根据姓名:"+student.getName()+"查询");
		List<Student> database = Database();
		for(Student stu:database){
			if(stu.getName().equals(student.getName())){
				return stu;
			}
		}
		return null;
	}

	public static Student selectById(Student student) {
		System.out.println("根据学号:"+student.getId()+"查询");
		List<Student> database = Database();
		for(Student stu:database){
			if(stu.getId().equals(student.getId())){
				return stu;
			}
		}
		return null;
	}

	/**
	 * 返回list型对象,等于把数据封装好了
	 */
	public static List<Student> Database() { // 学生数据库
													// 以数组的形式存储,如[Name,Id,Score]
		String[][] str = { { "张三", "001", "90" }, { "李四", "002", "65" },
				{ "王五", "003", "85" } };
		System.out.println("数据库如下:");
		for (int i = 0; i <= 2; i++) {
				System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1]+ ",分数:" + str[i][2]);
		}
		List<Student> list=new ArrayList<>();
		for(int i=0;i<str.length;i++){
			Student student=new Student();
			for(int j=0;j<str[i].length;j++){
				student.setName(str[i][0]);
				student.setId(str[i][1]);
				student.setScore(Integer.parseInt(str[i][2]));
			}
			list.add(student);
		}
		return list;
	}

}

class Student {
	private String id;
	private String name;
	private int score;

	public Student() {

	}

	

	public String getId() {
		return id;
	}



	public void setId(String id) {
		this.id = id;
	}



	public String getName() {
		return name;
	}

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

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", score=" + score
				+ "]";
	}
	
}
谢谢,我看看
失落夏天 2013-08-07
  • 打赏
  • 举报
回复
你这程序BUG和逻辑上的缺陷有点多, 尽量少改了些,写了如下的程序,希望能帮到你。

package com;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test4 {
	private static final String String = null;

	public static void main(String[] args) {
		
		Test4 t = new Test4();
		Student student=t.getStuScore();
		if(student==null){
			System.out.println("未查找到该学生");
		}else{
			System.out.println(student.toString());
		}
	}

	public Student getStuScore() {
		//创建学生对象来存储学生信息
		Student student=new Student();
		System.out.println("The school inquiry system");
		
		//输入学生信息来选择学生
		choose(student);
		//学生已经存好了信息
		if(student.getId()!=null)
			return selectById(student);
		if(student.getName()!=null)
			return selectByName(student);
		return null;
	}

	public static void choose(Student student) {
		System.out.println("Please choose student name or id to inquiry");
		System.out.println("Choose 1 is student name ; 2 is student id ");
		Scanner s = new Scanner(System.in);
		int num = s.nextInt();
		if (num == 1) {
			System.out.println("Please key student name ");
			String name = s.next(); // 定义namer 为查询学生名字
			System.out.println(name);//这里其实应该加一些正则格式验证,就先不写了。。
			student.setName(name);
		} else if (num == 2) {
			System.out.println("Please key student id ");
			String id = s.next(); // 定义ider 为查询学生编号
			System.out.println(id);
			student.setId(id);
		} else {
			System.out.println("You key num is erro ");
		}
	}

	public static Student selectByName(Student student) {
		System.out.println("根据姓名:"+student.getName()+"查询");
		List<Student> database = Database();
		for(Student stu:database){
			if(stu.getName().equals(student.getName())){
				return stu;
			}
		}
		return null;
	}

	public static Student selectById(Student student) {
		System.out.println("根据学号:"+student.getId()+"查询");
		List<Student> database = Database();
		for(Student stu:database){
			if(stu.getId().equals(student.getId())){
				return stu;
			}
		}
		return null;
	}

	/**
	 * 返回list型对象,等于把数据封装好了
	 */
	public static List<Student> Database() { // 学生数据库
													// 以数组的形式存储,如[Name,Id,Score]
		String[][] str = { { "张三", "001", "90" }, { "李四", "002", "65" },
				{ "王五", "003", "85" } };
		System.out.println("数据库如下:");
		for (int i = 0; i <= 2; i++) {
				System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1]+ ",分数:" + str[i][2]);
		}
		List<Student> list=new ArrayList<>();
		for(int i=0;i<str.length;i++){
			Student student=new Student();
			for(int j=0;j<str[i].length;j++){
				student.setName(str[i][0]);
				student.setId(str[i][1]);
				student.setScore(Integer.parseInt(str[i][2]));
			}
			list.add(student);
		}
		return list;
	}

}

class Student {
	private String id;
	private String name;
	private int score;

	public Student() {

	}

	

	public String getId() {
		return id;
	}



	public void setId(String id) {
		this.id = id;
	}



	public String getName() {
		return name;
	}

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

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", score=" + score
				+ "]";
	}
	
}
Michxy_Wong 2013-08-07
  • 打赏
  • 举报
回复
引用 8 楼 fudongrifdr 的回复:
没时间做题,给你点建议就是下次定义字段名,方法名的时候,首字母请小写。。那个String String亮瞎了我的双眼。。
新手 555
末日哥 2013-08-07
  • 打赏
  • 举报
回复
没时间做题,给你点建议就是下次定义字段名,方法名的时候,首字母请小写。。那个String String亮瞎了我的双眼。。
Michxy_Wong 2013-08-07
  • 打赏
  • 举报
回复
he school inquiry system Please choose student name or id to inquiry Choose 1 is student name ; 2 is student id 2 Please key student id 001 001 001 姓名:张三,编号:001,分数:90
绝对爱你 2013-08-07
  • 打赏
  • 举报
回复
S117 2013-08-07
  • 打赏
  • 举报
回复
引用 4 楼 u011494600 的回复:
[quote=引用 2 楼 longtian1213 的回复:]

import java.util.Scanner;

public class Student {
	private static final String String = null;

	public static void main(String[] args) {
		System.out.println("The school inquiry system");
		System.out.println("Please choose student name or id to inquiry");
		System.out.println("Choose 1 is student name ; 2 is student id ");
		Student.Choose(); // 调用Choose 来进行选择和调用方法
	}

	public static void Choose() {
		Scanner s = new Scanner(System.in);
		int num = s.nextInt();
		if (num == 1) {
			System.out.println("Please key student name ");
			String namer = s.next(); // 定义namer 为查询学生名字
			System.out.println(namer);
			Student.Name(namer);
		} else if (num == 2) {
			System.out.println("Please key student id ");
			String ider = s.next(); // 定义ider 为查询学生编号
			System.out.println(ider);
			Student.Id(ider);
		} else {
			System.out.println("You key num is erro ");
		}
	}

	public static void Name(String namer) {
		System.out.println(namer);
		String b = null;
		Student.Database(namer, b);
	}

	public static void Id(String ider) {
		System.out.println(ider);
		Student.Database(String, ider);
	}

	public static void Database(String a, String b) { // 学生数据库
		// 以数组的形式存储,如[Name,Id,Score]
		String[][] str = { { "张三", "001", "90" }, { "李四", "002", "65" },
				{ "王五", "003", "85" } };
		boolean find = false;
		for (int i = 0; i <= 2; i++) {
			if(a != null){
				if(str[i][0].equals(a)){
					System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
							+ str[i][2]);	
					find = true;
				}
			}else{
				if(str[i][1].equals(b)){
					System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
							+ str[i][2]);	
					find = true;
				}
			}
		}
		if(!find){
			System.out.println("查无此人");
		}
	}
}
// }
大神 为什么中间会输出多一次 我的输入内容呢? 如: he school inquiry system Please choose student name or id to inquiry Choose 1 is student name ; 2 is student id 2 Please key student id 001 001001 姓名:张三,编号:001,分数:90 [/quote] 你把不需要的System.out.println去掉就行了
Michxy_Wong 2013-08-07
  • 打赏
  • 举报
回复
引用 2 楼 longtian1213 的回复:

import java.util.Scanner;

public class Student {
	private static final String String = null;

	public static void main(String[] args) {
		System.out.println("The school inquiry system");
		System.out.println("Please choose student name or id to inquiry");
		System.out.println("Choose 1 is student name ; 2 is student id ");
		Student.Choose(); // 调用Choose 来进行选择和调用方法
	}

	public static void Choose() {
		Scanner s = new Scanner(System.in);
		int num = s.nextInt();
		if (num == 1) {
			System.out.println("Please key student name ");
			String namer = s.next(); // 定义namer 为查询学生名字
			System.out.println(namer);
			Student.Name(namer);
		} else if (num == 2) {
			System.out.println("Please key student id ");
			String ider = s.next(); // 定义ider 为查询学生编号
			System.out.println(ider);
			Student.Id(ider);
		} else {
			System.out.println("You key num is erro ");
		}
	}

	public static void Name(String namer) {
		System.out.println(namer);
		String b = null;
		Student.Database(namer, b);
	}

	public static void Id(String ider) {
		System.out.println(ider);
		Student.Database(String, ider);
	}

	public static void Database(String a, String b) { // 学生数据库
		// 以数组的形式存储,如[Name,Id,Score]
		String[][] str = { { "张三", "001", "90" }, { "李四", "002", "65" },
				{ "王五", "003", "85" } };
		boolean find = false;
		for (int i = 0; i <= 2; i++) {
			if(a != null){
				if(str[i][0].equals(a)){
					System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
							+ str[i][2]);	
					find = true;
				}
			}else{
				if(str[i][1].equals(b)){
					System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
							+ str[i][2]);	
					find = true;
				}
			}
		}
		if(!find){
			System.out.println("查无此人");
		}
	}
}
// }
大神 为什么中间会输出多一次 我的输入内容呢? 如: he school inquiry system Please choose student name or id to inquiry Choose 1 is student name ; 2 is student id 2 Please key student id 001 001001 姓名:张三,编号:001,分数:90
Michxy_Wong 2013-08-07
  • 打赏
  • 举报
回复
引用 1 楼 AA5279AA 的回复:
如果你不说想实现什么样的效果的话,估计没人能帮的了你。。
效果就是 我前面的那个运作流程

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧