学生管理系统
针对于学生的增加,修改,删除,查询(增删改查)
界面:
欢迎使用学生管理系统
请选择(1~5)
1、添加学生
2、修改学生
3、删除学生
4、查询学生
5、退出
1
请输入学生的学号(ID):
5
请输入学生的姓名:
maoyun
请输入学生的性别:
m
请输入学生的分数:
100
确认要添加吗(y/n)?
y
添加成功
是否要继续添加(y/n)?
y--》请输入学生的学号(ID):
n-->主界面
x-->确认要添加吗(y/n)?
主菜单中:
4-->进行查询子菜单
请输入(1~x)
1、根据学号查询
2、根据姓名查询(模糊查询)
3、查询所有学生
4、成绩排行榜
5、返回上一级
查询所有学生
企业中进行项目开发的规则
增加的功能:
修改学生
首先把所有学生显示出来
请输入要修改学生的学号:
1001
将该学生信息显示出来
请输入学生的新姓名(原有的姓名为:(damao))
请输入学生的新性别(。。。。。。。。。。。)
请输入学生的新分数(。。。。。。。。。。。)
确认要修改吗?(Y/N)
是否继续要修改吗?(Y/N)
附加作业:
删除学生
首先把所有学生显示出来
请输入要删除学生的学号:
1001
将该学生信息显示出来
确认要删除吗?(Y/N)
是否继续要删除?(Y/N)
成绩排行榜(按照分数的高低来排序)
主要逻辑代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 |
package com.ml.Student; import java.util.*; //学生具体操作类 public class StudentOperation extends Student { Scanner in = new Scanner(System.in); static List<Student> al = new ArrayList<Student>(); /* ***************** 增加学生数据 ***************** */ public void add(Student stu) { // Student stu=Stu; boolean State = true;// // 用作退出最外层循环 while (State) { System.out.print("\t请输入学生的学号:"); boolean steIdState = true;// 学号添加状态是否成功 while (steIdState) { int setid = in.nextInt();// 输入 if (al.size() == 0) {// 如果里面没有任何数据的时候 stu.setId(setid);// 不用判断直接添加,不然for不执行 break; } boolean state = true;// 定义布尔检测是否有重复 for (int i = 0; i < al.size(); i++) { Student stu1 = (Student) al.get(i); if (stu1.getId() == setid) {// 检查是否有一样的ID System.out.println("\t错误!ID[" + setid + "]已存在!请重新输入");// 如果有,就提示添加失败 state = false; } // 判断已经是历遍到最后一次并且没有重复的ID时 if (i == al.size() - 1 && state == true) { stu.setId(setid); steIdState = false;// 则赋值本ID并给SteIdState赋值false结束循环 break; } } } // 输入姓名 System.out.print("\t请输入学生的姓名:"); while (true) { String Tname = in.next(); // 判断姓名是否符合要求 if (Tname.length() >= 2 && Tname.length() < 10) { stu.setName(Tname); break; } else { System.out.println("\t输入错误!名字长度应在2到10之间"); } } // 输入性别 System.out.print("\t请输入学生的性别:"); while (true) { // 判断性别是否符合规范 String Tsex = in.next(); if (Tsex.equals("男") || Tsex.equals("女")) { stu.setSex(Tsex); break; } else { System.out.println("\t输入错误!性别只能是'男'或'女'"); } } // 输入分数 System.out.print("\t请输入学生的分数:"); while (true) { // 判断分数是否符合规范 int Tfen = in.nextInt(); if (Tfen >= 0 && Tfen <= 100) { stu.setFen(Tfen); break; } else { System.out.println("\t输入错误!分数范围应在0-100之间"); } } // 二次确认是否添加 System.out.print("\t确认要添加吗?(y/n)"); while (true) { String px = in.next(); if (px.equals("y")) { al.add(stu);// 是的话存入本对象 System.out.println("\t添加成功!"); break; } else if (px.equals("n")) {// 否则直接跳出 System.out.println("\t你已取消!未保存信息"); break; } else { System.out.println("\t输入错误!请重新输入"); } } // 继续添加提示 System.out.print("\t是否要继续添加?(y/n)"); while (true) { String pxtj = in.next(); if (pxtj.equals("y")) { stu = new Student();// 是的话就创建新的学生对象给形参stu break; } else if (pxtj.equals("n")) {// 否则就给State赋值为false结束外层循环 State = false;// 一定要先执行语句在break;不然报错 // 由于这是最后一个功能块,如果不需要在添加信息则要退出最外层的循环体,因为是嵌套,不能直接退出最外层 break; } else { System.out.println("\t输入错误!请重新输入"); } } } } /* ***************** 修改学生数据 ***************** */ public void modify() { for (int i = 0; i < al.size(); i++) { Student stu = (Student) al.get(i); System.out.println(stu);// 输出所有学生信息 Ys.YS(80); } boolean state = true;// 用作退出最外层循环 while (state) { // 设置3个临时变量 String newName = null; String newSex = null; int newFen = 0; Student stu = null; System.out.print("\t输入你要修改的学生学号:"); int sid = in.nextInt(); // 循环历遍一次 for (int i = 0; i < al.size(); i++) { stu = (Student) al.get(i); if (stu.getId() == sid) {// 当历遍到指定ID时候,进行修改操作 System.out.println("\t请输入学生新的姓名:(原名:" + stu.getName() + ")"); while (true) { newName = in.next(); if (newName.length() >= 2 && newName.length() < 10) { break; } else { System.out.println("\t输入错误!名字长度应在2到10之间"); } } System.out.println("\t请输入学生新的性别:(原性:" + stu.getSex() + ")"); while (true) { newSex = in.next(); if (newSex.equals("男") || newSex.equals("女")) { break; } else { System.out.println("\t输入错误!性别只能是'男'或'女'"); } } System.out.println("\t请输入学生新的分数:(原分:" + stu.getFen() + ")"); while (true) { newFen = in.nextInt(); if (newFen >= 0 && newFen <= 100) { break; } else { System.out.println("\t输入错误!分数范围应在0-100之间"); } } break;// ID只允许存在一个,所以修改完了直接退出 } } System.out.print("\t确认要修改吗?(y/n)"); // boolean state = true; // 二次确认 while (true) { String px = in.next(); if (px.equals("y")) { // 确认修改,就把临时变量的值赋值进去 stu.setName(newName); stu.setSex(newSex); stu.setFen(newFen); System.out.println("\t修改成功!"); break;// 赋值后直接退出 } else if (px.equals("n")) { // 不保存直接退出 System.out.println("\t你已取消!未修改信息"); break; } else { System.out.println("\t输入错误!请重新输入"); } } // 是否继续添加 System.out.print("\t是否要继续修改?(y/n)"); while (true) { String pxtj = in.next(); // 是的话就跳出内循环,继续执行外层循环 if (pxtj.equals("y")) { break; } else if (pxtj.equals("n")) { // 否则就给外层循环state赋值为false退出 state = false;// 一定要先执行语句在break;不然报错 // 由于这是最后一个功能块,如果不需要在添加信息则要退出最外层的循环体,因为是嵌套,不能直接退出最外层 break; } else { System.out.println("\t输入错误!请重新输入"); } } } } /* ***************** 删除学生数据 ***************** */ public void delete() { // 输出所有学生信息 for (int i = 0; i < al.size(); i++) { Student stu = (Student) al.get(i); System.out.println(stu); Ys.YS(50); } boolean stateOutside = true; while (stateOutside) { int idFor = 0; boolean state = true; while (state) { System.out.print("\t请输入你要删除的学生号:"); int deleteId = in.nextInt(); // 检索到指定ID的对象 for (idFor = 0; idFor < al.size(); idFor++) { Student stu = (Student) al.get(idFor); if (stu.getId() == deleteId) { System.out.println(stu);// 显示该学生的信息 state = false;// 退出重复输入循环 break;// 显示后就跳出循环,没必要在继续遍历 } if (idFor == al.size() - 1 && state == true) { System.out.println("\t查无此人!请检查ID并重新输入"); break;// 退出遍历循环 } } } System.out.print("\t确认要删除吗?(y/n)"); // boolean state = true; while (true) { String px = in.next(); if (px.equals("y")) { System.out.println("\tID:[" + al.get(idFor).getId() + "]删除成功!"); al.remove(idFor);// 删除该坐标的数据 break; } else if (px.equals("n")) { System.out.println("\t你已取消!未删除信息"); break; } else { System.out.println("\t输入错误!请重新输入"); } } System.out.print("\t是否要继续删除?(y/n)"); while (true) { String pxtj = in.next(); // 是的话就跳出内循环,继续执行外层循环 if (pxtj.equals("y")) { break; } else if (pxtj.equals("n")) { // 否则就给外层循环state赋值为false退出 stateOutside = false;// 一定要先执行语句在break;不然报错 // 由于这是最后一个功能块,如果不需要在添加信息则要退出最外层的循环体,因为是嵌套,不能直接退出最外层 break; } else { System.out.println("\t输入错误!请重新输入"); } } } } /* ***************** 查询增加学生数据 ***************** */ public void query() { boolean state = true; do { Display.discplayQueryList();// 显示列表 String querypx = in.next(); switch (querypx) { case "1":// 根据学号查询信息 while (true) { System.out.println("\t请输入学生学号(0退出):"); int soid = in.nextInt(); boolean idState = false; if (soid == 0) { break; } for (int i = 0; i < al.size(); i++) { Student stu = (Student) al.get(i); if (stu.getId() == soid) { System.out.println(stu);// 调用toString打印信息 idState = true; break; } if (i == al.size() - 1 && idState == false) { System.out.println("\t查无此人!请检查ID并重新输入"); break; } } } break; case "2":// 根据姓名查询信息 while (true) { System.out.println("\t请输入学生姓名(0退出):"); String soname = in.next(); boolean idState = false; if (soname.equals("0")) { break; } int num = 0; for (int i = 0; i < al.size(); i++) { Student stu = (Student) al.get(i); if (stu.getName().equals(soname)) { System.out.println(stu);// 调用toString打印信息 idState = true; num++; } if (num > 1 && i == al.size() - 1) { System.out.println("\t查询到" + num + "个" + soname); } if (i == al.size() - 1 && idState == false) { System.out.println("\t查无此人!请检查姓名并重新输入"); break; } // System.out.println(i); // System.out.println(al.size()-1); } } break; case "3":// 遍历输出所有学生信息 System.out.println("\t所有学生信息:"); for (int i = 0; i < al.size(); i++) { Student stu = (Student) al.get(i); System.out.println(stu);// 调用toString打印信息 Ys.YS(80); } System.out.print("\t输入任意退出:"); in.next(); break; case "4":// 根据分数降序输出学生信息 System.out.println("\t成绩排行榜(成绩从高到低):"); List<Student> alSort = new ArrayList<Student>(); alSort.addAll((Collection<? extends Student>) al);// al集合复制到alSort集合,分开 Collections.sort(alSort); for (int i = 0; i < alSort.size(); i++) { Student stu = (Student) alSort.get(i); System.out.println(stu); Ys.YS(20); } System.out.print("\t输入任意退出:"); in.next(); case "5":// 退出switch并退出while外层 state = false; break; default: System.out.println("\t输入有误,请重新输入"); } } while (state);// 结束 } } |
Comments | NOTHING