1、项目名称:学生管理系统
1.1、所用的主要知识点总结
类、数组(存取对象)、循环、静态代码块、get/set方法
1.2、实现的功能
学生数据的增删查改。
1.3具体分析
创建三个类:学生类、存储学生类、存存类
功能分析:
显示所有学生信息:
删除学生信息:
修改学生信息
添加学生信息
退出学生管理系统
1.4、源码
1、studTest类代码
package com.qianfeng.homeword.day09;
import com.shangguigu.day13.array01.Array;
import java.sql.SQLOutput;
import java.util.Scanner;
public class StuTest {
//定义成为全局静态属性,优先加载进内存
public static Scanner sc = new Scanner(System.in);
//将学生数组对象进行调用.共用对象地址,已达到共享目的
public static Student[] stuArray = StudentDB.student;
public static void main(String[] args) {
do{
printMenu();
int option = sc.nextInt();
//根据选项做对应的事情
switch (option){
case 1:
selectAll();
break;
case 2:
deleteStudent();
break;
case 3:
updateStudent();
break;
case 4:
addStudent();
break;
case 5:
System.out.println("-----感谢使用,欢迎下次再进入-----");
return;
default:
System.out.println("输入有误");
break;
}
System.out.println("\n\n\n");
}while (true);
}
/**
* 添加学生信息
*/
public static void addStudent(){
if(stuArray[stuArray.length-1]==null){
System.out.println("学生已经存贮满了,请删除一些在重新添加");
}
System.out.println("请输入学生姓名:");
String name = sc.next();
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
for (int i = 0; i < stuArray.length; i++) {
//判断如果是空的话说明是在数组对象底部
if(stuArray[i]==null){
stuArray[i] = new Student(name,age);
System.out.println("添加成功");
break;
}
}
}
/**
* 修改学生的信息
*/
public static void updateStudent(){
System.out.println("请输入学生的学号:");
int stuNum = sc.nextInt();
Student student = getStudentById(stuNum);
if(student==null) {
System.out.println("系统内没有该学生或者输入的id有误");
return;
}else{
System.out.println("请输入学生姓名:");
String stuName = sc.next();
System.out.println("请输入学生年龄:");
int stuAge = sc.nextInt();
student.setName(stuName);
student.setAge(stuAge);
System.out.println("修改成功");
}
}
/**
* 按照给定索引删除学生的信息
*/
public static void deleteStudent() {
System.out.println("请输入stuNum:");
int index = sc.nextInt();
boolean of =false;
//搜索存在索引对应数组中的索引,并返回对应索引的对象
Student student = getStudentById(index);
if(student==null){
System.out.println("系统内没有该学生或者输入的id有误");
return;
}else {
for (int i = 0; i < stuArray.length; i++) {
//将每一个对象赋值给新的对象
Student stu = stuArray[i];
if(stu==null){
System.out.println("删除成功");
break;
}
//查到和搜索的index在数组中的位置,定义好替换开关
if(stu.getStuNum()==index){
of = true;
}
//替换对应索引元素,索引对应的对象的分别向前覆盖
if(of&&(i!=stuArray.length-1)){
stuArray[i] = stuArray[i+1];
}
//判断对象是否为最后一个
if(i==stuArray.length-1){
stuArray[i] = null;
System.out.println("删除成功");
}
}
}
}
/**
* 根据索引查找到对象
* @param index
* @return
*/
public static Student getStudentById(int index) {
Student student;
for (int i = 0; i < stuArray.length; i++) {
//先判断数组对象内是否有对象
if(stuArray[i]==null){
return null;
}else if(stuArray[i].getStuNum()==index) {
//有对象的话,就返该索引该学生对应的对象
return stuArray[i];
}
}
return null;
}
/**
* 查询所有的学生信息
*/
private static void selectAll() {
//遍历循环,输出所有的在数组内学生的信息
for (int i = 0; i < stuArray.length; i++) {
//判断对象是否为空,如果为空的,说明已经遍历所有的对象了
if (stuArray[i]!=null){
System.out.println(stuArray[i]);
}else {
break;
}
}
}
/**
* 打印界面
*/
private static void printMenu() {
System.out.println("-----欢迎来到您的备学生管理系统----");
System.out.println("-----1.展示所有学生管理的信息----");
System.out.println("-----2.删除学生管理信息----");
System.out.println("-----3.修改学生管理信息----");
System.out.println("-----4.添加学生管理信息----");
System.out.println("-----5.退出系统----");
}
}
2、StudentDB类代码
package com.qianfeng.homeword.day09;
public class StudentDB {
//定义100个存储StudentDB[] 对象的数组
public static Student[] student = new Student[100];
//静态代码块初始化部分
static {
student[0] = new Student("张三",11);
student[1] = new Student("李四",22);
student[2] = new Student("王五",31);
student[3] = new Student("赵六",44);
student[4] = new Student("李狗",11);
student[5] = new Student("刘蛋",14);
}
}
3、Student类代码
package com.qianfeng.homeword.day09;
public class Student {
private String name;
private int age;
private int stuNum = 1;
//自增用,设为静态变量这样每一个stuNum都是唯一的
private static int addcount = 0;
public Student() {
this.stuNum = ++addcount;
}
public int getStuNum() {
return stuNum;
}
public void setStuNum(int stuNum) {
this.stuNum = stuNum;
}
public Student(String name, int age) {
//调用无参的构造方法,使stuNum自增
this();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", stuNum=" + stuNum +
'}';
}
}
2.项目信息:用户管理系统
2.1、所用知识点
ArrayList集合的set、get、remove方法,遍历用for增强型遍历
2.2、感悟
用集合果然比数组方便以及块,因为ArrayList底层是动态数组,容量不需要我们去操心,操作起来级更加快捷,不过集合中的数据保存在内存中,结束操作后数据就会没有。
2.3、源码
package com.shangguigu.day17.project.manager;
import com.shangguigu.day17.project.bean.Customer;
import java.util.*;
/**
* 客户管理系统系统
*/
public class CustomerManager {
//定义集合,泛型为Customer,不能添加该对象之外的其他元素
private List<Customer> customeList = new ArrayList<>();
//设置输出为全局
private Scanner scanner = new Scanner(System.in);
//集合数据的初始化
private void init(){
customeList.add(new Customer(1,"zs"));
customeList.add(new Customer(2,"ls"));
}
public void menu(){
init();//初始化到集合
while (true){
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("请输入编号");
int numNo = scanner.nextInt();
switch (numNo){
case 1:
addCustom();
break;
case 2:
//删除客户心得
delCustom();
break;
case 3:
//查找用户数据
list();
break;
case 4:
//修改用信息
updateCust();
break;
case 5:
//查找指定用户信息的
findid();
break;
case 6:
System.out.println();
System.exit(0);
break;
default:
System.out.println("输入有误");
}
}
}
/**
* 根据特定id,查找特定id用户的信息
*
*/
private void findid() {
System.out.println("请输入要查找客户信息的id");
int id = scanner.nextInt();
int index=-1;//记录遍历到相等的索引
for (int i = 0; i < customeList.size(); i++) {
int idx = customeList.get(i).getId();
index++;
if(idx==id){
break;
}
}
if (id==-1){
System.out.println("系统中无此用户");
}else {
System.out.println(customeList.get(index));
System.out.println("查找用户信息完毕!!!");
}
}
/**
* 修改客户信息
* 1、根据id进行修改
* 2、遍历对比对象属性id,然后再重新输入姓名。
*/
private void updateCust() {
System.out.println("请输入要修改的客户id");
int id = scanner.nextInt();
int index = -1;
for (int i = 0; i < customeList.size(); i++) {
int idx = customeList.get(i).getId();
index++;
if(idx==id){
break;
}
}
if(index==-1){
System.out.println("没有找到客户");
return;
}else {
System.out.println("修改名字为");
String name = scanner.next();
customeList.set(index,new Customer(id,name));
}
}
/**
* 删除客户信息
* 思路:1、判断集合是否为空
* 2、遍历是否有相等的id
*/
private void delCustom() {
System.out.println("请输入要删除的客户id");
int id = scanner.nextInt();
int index=-1;//定义保存索引
for (int i = 0; i < customeList.size(); i++) {
int idx = customeList.get(i).getId();
index++;
if(idx==id){
break;
}
}
if(index==-1){
System.out.println("没有找到客户");
return;
}else {
customeList.remove(index);
}
System.out.println("删除用户成功!!!");
}
/**
* 查找用户数据
*/
private void list() {
//如果数据为空
if (customeList.isEmpty()){
System.out.println("集合中不存在数据");
return;//结束方法
}
//否则遍历
for(Customer cust:customeList){
System.out.println(cust);
}
System.out.println("遍历完成");
}
private void addCustom() {
System.out.println("选择的是添加客户数据");
System.out.println("请输入客户id:");
int id = Integer.parseInt(scanner.next());
//不能添加重复编号的员工
for (int i = 0; i < customeList.size(); i++) {
if (customeList.get(i).getId()==id){
System.out.println("系统中已经存在相同的用户id,请在重新添加");
return;//直接结束方法
}
}
System.out.println("请输入客户的名字");
String name = scanner.next();
customeList.add(new Customer(id,name));//添加新的用户
System.out.println("数据添加成功");
}
}
package com.shangguigu.day17.project.manager;
public class Test {
public static void main(String[] args) {
new CustomerManager().menu();
}
}
package com.shangguigu.day17.project.bean;
public class Customer {
private int id;
private String name;
public Customer() {
}
public Customer(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}