当前位置:   article > 正文

Java实现学生信息管理系统(用Java实现数据库的增删改查等功能的操作)_java学生信息管理系统筛选信息

java学生信息管理系统筛选信息

  1. public class Student {
  2. private int sid;
  3. private String name;
  4. private String age;
  5. private String address;
  6. public Student(){
  7. }
  8. public Student(int sid, String name, String age, String address) {
  9. this.sid = sid;
  10. this.name = name;
  11. this.age = age;
  12. this.address = address;
  13. }
  14. public int getSid() {
  15. return sid;
  16. }
  17. public void setSid(int sid) {
  18. this.sid = sid;
  19. }
  20. public String getName() {
  21. return name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. public String getAge() {
  27. return age;
  28. }
  29. public void setAge(String age) {
  30. this.age = age;
  31. }
  32. public String getAddress() {
  33. return address;
  34. }
  35. public void setAddress(String address) {
  36. this.address = address;
  37. }
  38. @Override
  39. public String toString() {
  40. return "Student{" +
  41. "sid=" + sid +
  42. ", name='" + name + '\'' +
  43. ", age='" + age + '\'' +
  44. ", address='" + address + '\'' +
  45. '}';
  46. }
  47. }

 

  1. import java.io.*;
  2. import java.util.ArrayList;
  3. import java.util.Comparator;
  4. import java.util.Scanner;
  5. public class StudentManager {
  6. /*
  7. 1.用输出语句完成主界面的编写
  8. 2.用Scanner实现键盘录入数据
  9. 3.用switch语句完成操作的选择
  10. 4.用循环完成再次回到主界面
  11. */
  12. //创建集合对象,用于保存学生数据信息
  13. public static ArrayList<Student> array = new ArrayList<>();
  14. public static void main(String[] args) {
  15. //用循环完成再次回到主界面 1==1
  16. while (true){
  17. //用输出语句完成主界面的编写
  18. System.out.println("--------欢迎来到学生管理系统---------");
  19. System.out.println("1.添加学生");
  20. System.out.println("2.删除学生");
  21. System.out.println("3.修改学生");
  22. System.out.println("4.查看所有学生");
  23. System.out.println("5.按照学号排序");
  24. System.out.println("6.保存学生信息");
  25. System.out.println("7.载入学生信息");
  26. System.out.println("8,提出系统");
  27. System.out.println("9.请输入你的选择:");
  28. //用Scanner实现键盘录入数据
  29. Scanner sc = new Scanner(System.in);
  30. String line = sc.nextLine();
  31. //用switch语句完成操作的选择
  32. switch (line){
  33. case "1":
  34. addStudent(array);
  35. break;
  36. case "2":
  37. deleteStudent(array);
  38. break;
  39. case "3":
  40. updateStudent(array);
  41. break;
  42. case "4":
  43. findAllStudent(array);
  44. break;
  45. case "5":
  46. System.out.println("升序按1,降序按2:");
  47. String line1 = sc.nextLine();
  48. if (line1.equals("1")){
  49. MyComparator01 myComparator01 = new MyComparator01();
  50. //归并排序
  51. array.sort(myComparator01);
  52. findAllStudent(array);
  53. break;
  54. }else if (line1.equals("2")){
  55. MyComparator02 myComparator02 = new MyComparator02();
  56. array.sort(myComparator02);
  57. findAllStudent(array);
  58. break;
  59. }
  60. break;
  61. case "6":
  62. saveStudent(array);
  63. break;
  64. case "7":
  65. loadStudent(array);
  66. break;
  67. case "8":
  68. System.out.println("谢谢使用");
  69. System.exit(0);//java虚拟机退出
  70. break;
  71. }
  72. }
  73. }
  74. //******************************
  75. // 定义一个内部类实现升序排序
  76. static class MyComparator01 implements Comparator<Student> {
  77. public int compare(Student s1, Student s2) {
  78. return s1.getSid() - s2.getSid();
  79. }
  80. }
  81. // 定义一个内部类实现降序排序
  82. static class MyComparator02 implements Comparator<Student> {
  83. public int compare(Student s1, Student s2) {
  84. return s2.getSid() - s1.getSid();
  85. }
  86. }
  87. //****************************
  88. //实现加载学生信息
  89. private static void loadStudent(ArrayList<Student> array){
  90. try {
  91. BufferedReader isr = new BufferedReader(new InputStreamReader(new FileInputStream(new File("src" +
  92. "/期末复习/实现数据库/xinxi"))));
  93. String str;
  94. while ((str= isr.readLine())!=null){
  95. Student stu = new Student();
  96. String[] split = str.split("\t");
  97. stu.setSid(Integer.parseInt(split[0]));
  98. stu.setName(split[1]);
  99. stu.setAge(split[2]);
  100. stu.setAddress(split[3]);
  101. array.add(stu);
  102. }
  103. System.out.println("载入学生数据成功!");
  104. } catch (FileNotFoundException e) {
  105. System.out.println("学生数据文件不存在,先输入学生数据保存!");
  106. e.printStackTrace();
  107. }catch (IOException e){
  108. e.printStackTrace();
  109. }
  110. }
  111. //实现保存学生信息
  112. private static void saveStudent(ArrayList<Student> array){
  113. try {
  114. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(
  115. "src" + "/期末复习/实现数据库/xinxi"))));
  116. for (int i = 0; i < array.size(); i++) {
  117. String stu_s;
  118. stu_s=array.get(i).getSid()+"\t"+ array.get(i).getName()+"\t"+ array.get(i).getAge()+"\t"+ array.get(i).getAddress();
  119. bw.write(stu_s);
  120. bw.write('\n');
  121. }
  122. bw.flush();
  123. bw.close();
  124. System.out.println("保存学生的数据成功!");
  125. } catch (Exception e) {
  126. e.printStackTrace();
  127. }
  128. }
  129. //定义一个方法,判断学号是否正确
  130. public static boolean isUsed(ArrayList<Student> array,int sid){
  131. //如果与集合中的某一个学生学号相同,返回true;如果都不相同,返回false
  132. boolean flag= false;
  133. for (int i = 0; i < array.size(); i++) {
  134. Student s = array.get(i);
  135. if (s.getSid()==sid){
  136. flag=true;
  137. break;
  138. }
  139. }
  140. return flag;
  141. }
  142. //实现添加学生信息
  143. public static void addStudent(ArrayList<Student> array){
  144. //键盘录入学生所需要的数据,显示提示信息,提示要输入的何种信息
  145. Scanner sc = new Scanner(System.in);
  146. int sid;
  147. while (true){
  148. System.out.println("请输入学生学号:");
  149. sid=sc.nextInt();
  150. //判断是否输入相同学号
  151. boolean flag = isUsed(array, sid);
  152. if (flag){
  153. System.out.println("你输入的学号已经被占用,请重新输入");
  154. }else {
  155. break;
  156. }
  157. }
  158. System.out.println("请输入学生姓名:");
  159. String name = sc.next();
  160. System.out.println("请输入学生年龄:");
  161. String age = sc.next();
  162. System.out.println("请输入学生居住地:");
  163. String address = sc.next();
  164. //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
  165. Student s = new Student();
  166. s.setSid(sid);
  167. s.setName(name);
  168. s.setAge(age);
  169. s.setAddress(address);
  170. //将学生对象添加到集合中
  171. array.add(s);
  172. //给出添加成功提示
  173. System.out.println("添加学生成功");
  174. }
  175. //实现查看学生信息
  176. public static void findAllStudent(ArrayList<Student> array){
  177. //判断集合是否有数据,如果没有显示提示信息
  178. if (array.size()==0) {
  179. System.out.println("无信息,请先添加信息再查询");
  180. //为了让程序不再往下执行,我们在这里写上return
  181. return;
  182. }
  183. //显示表头信息
  184. //\t其实是一个tab键的位置
  185. System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
  186. // 将集合中数据取出按照对应格式提示学生信息,年龄显示补充"岁"
  187. for (int i = 0; i < array.size(); i++) {
  188. Student s = array.get(i);
  189. System.out.println(s.getSid()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getAddress());
  190. }
  191. }
  192. //实现删除学生信息
  193. public static void deleteStudent(ArrayList<Student> array){
  194. //键盘录入要删除的学号,显示提示信息
  195. Scanner sc = new Scanner(System.in);
  196. System.out.println("请输入你要删除的学生的学号:");
  197. int sid= sc.nextInt();
  198. //在删除/修改学生操作时,对学号是否存在进行判断
  199. //如果不存在,显示提示信息
  200. //如果存在,执行删除/修改操作
  201. int index=-1;
  202. for (int i = 0; i < array.size(); i++) {
  203. Student s = array.get(i);
  204. if (s.getSid() == sid){
  205. index = i;
  206. break;
  207. }
  208. }
  209. if (index == -1){
  210. System.out.println("该信息不存在,请重新输入");
  211. }else {
  212. array.remove(index);
  213. //给出删除成功提示
  214. System.out.println("删除学生成功");
  215. }
  216. }
  217. //实现修改学生信息
  218. public static void updateStudent(ArrayList<Student> array){
  219. Scanner sc = new Scanner(System.in);
  220. System.out.println("请输入你要修改的学生的学号:");
  221. int sid = sc.nextInt();
  222. //键盘录入要修改的学生信息
  223. System.out.println("请输入学生的新姓名:");
  224. String name = sc.next();
  225. System.out.println("请输入学生的新年龄:");
  226. String age = sc.next();
  227. System.out.println("请输入学生的新居住地:");
  228. String address = sc.next();
  229. //创建学生对象
  230. Student s = new Student();
  231. s.setSid(sid);
  232. s.setName(name);
  233. s.setAge(age);
  234. s.setAddress(address);
  235. //遍历集合修改对应的学生信息
  236. for (int i = 0; i < array.size(); i++) {
  237. Student student = array.get(i);
  238. if (student.getSid()==sid){
  239. array.set(i,s);
  240. }
  241. }
  242. //输出修改成功提示
  243. System.out.println("修改学生成功!");
  244. }
  245. }

 代码中,文件路径"src/期末复习/实现数据库/xinxi"要注意自己改动,自己创建一个文本进行信息编辑。

下面来演示本文代码一些运行时的注意点:

我们对代码运行后会出现一个选项界面,根据界面进行操作。

接着进行添加学生操作,同时进行查询:可以看到添加成功并查询成功。

 

 但接下来我们退出后再运行代码并进行查询,会发现查询不到上面所添加的信息:

 这个就是要提醒的一个点,在查询,删除,修改,查看信息之前都要先载入学生信息,这是很重要的点。但是还有需要一个注意的地方,如下图:

 就算我载入学生信息后依然无法查询之前张三的信息,这是因为我们在添加张三的信息之后没有保存学生信息就退出了,添加的信息没有保存到文件中,导致载入学生信息中没有张三的信息。

下面重新操作一次:

 这次对学生信息进行保存了,接着载入并查询信息,就可以查询到之前添加的信息:

 至于排序操作比较简单,就不进行解释了。

对你有帮助的话,give me a 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/788918

推荐阅读
相关标签