学生管理系统(JAVA后台简约版)
文章目錄
- 前言
- 一、學(xué)生管理系統(tǒng)
- 二、代碼編寫步驟
- 1.代碼填寫提示。
- 2.讀入數(shù)據(jù)
- 總結(jié)
前言
最近在學(xué)習(xí)JAVA,學(xué)習(xí)能力較弱,所以現(xiàn)在在這里做一個(gè)學(xué)習(xí)記錄,供自己日后出現(xiàn)相同問(wèn)題可以方便解決,同時(shí)也希望可以給到大家一些幫助,畢竟這個(gè)行業(yè)太卷了
一、學(xué)生管理系統(tǒng)
學(xué)生管理系統(tǒng)應(yīng)該是一個(gè)最為簡(jiǎn)單的小系統(tǒng),而且學(xué)習(xí)JAVA的過(guò)程中,學(xué)生管理系統(tǒng)應(yīng)該是最為先接觸的一個(gè)小項(xiàng)目,我也只是分享一下我自己個(gè)人的項(xiàng)目。
二、代碼編寫步驟
一,寫代碼前最好是先分析這個(gè)項(xiàng)目,首先可以做一個(gè)數(shù)據(jù)流圖,分析一下整個(gè)項(xiàng)目的一個(gè)流程是怎么樣的。
就好比學(xué)生管理系統(tǒng)來(lái)說(shuō):
第一步:我們知道現(xiàn)在是要編寫一個(gè)學(xué)生管理系統(tǒng),那對(duì)于這個(gè)系統(tǒng)而言,就會(huì)有使用對(duì)象,那么這個(gè)就是我們這個(gè)管理系統(tǒng)的用戶
這個(gè)火柴人就是我們管理系統(tǒng)的用戶了
第二步,那這個(gè)用戶就需要對(duì)這個(gè)管理系統(tǒng)做一個(gè)登錄打開,或者說(shuō)注冊(cè)再登錄的東西(前端還沒(méi)有學(xué),不會(huì)寫前端頁(yè)面,Java的登錄注冊(cè)也還不會(huì),就也沒(méi)有寫,抱歉)
第三步,1.這個(gè)用戶對(duì)自己的個(gè)人信息進(jìn)行一個(gè)信息的錄入,其中包括學(xué)號(hào),姓名,年齡,生日…(我就寫了這些,其他的大家有需求可以自己添加補(bǔ)入);2.學(xué)生管理系統(tǒng)的一個(gè)查詢所有學(xué)生信息;3.學(xué)生管理系統(tǒng)對(duì)學(xué)生的修改信息功能;4.學(xué)生管理系統(tǒng)對(duì)學(xué)生信息的刪除功能;這里就是一個(gè)Controller層
第四步,那這個(gè)學(xué)生新增信息時(shí),將學(xué)號(hào)輸入之后,要判斷這個(gè)學(xué)生的學(xué)號(hào)是否正確或者說(shuō)是否重復(fù)了,那么就要驗(yàn)證一個(gè)學(xué)生信息的合法性,合法就進(jìn)入下一個(gè)狀態(tài),否則就返回上一步,重新輸入學(xué)號(hào);以及在刪除學(xué)生的時(shí)候也要對(duì)輸入的學(xué)生學(xué)號(hào)進(jìn)行判斷,看這個(gè)學(xué)生是不是在這個(gè)數(shù)據(jù)庫(kù)中,如果不合法就返回,重新輸入學(xué)號(hào),合法就進(jìn)入下一步,刪除學(xué)生信息
第五步,對(duì)這個(gè)學(xué)生管理系統(tǒng)還要有查詢功能,對(duì)學(xué)生信息的查看,產(chǎn)生一個(gè)列表出來(lái)
第六步,修改學(xué)生信息(我沒(méi)寫這個(gè)功能)
(這里就是一個(gè)Service層)
第七步,就是對(duì)上面幾步的請(qǐng)求做一個(gè)數(shù)據(jù)的處理,新增就添加數(shù)據(jù),刪除就刪除數(shù)據(jù),修改就修改數(shù)據(jù),查看就讀取數(shù)據(jù)。
(這個(gè)是數(shù)據(jù)的Dao層
1.代碼填寫提示。
我們寫代碼的過(guò)程中,最好要從后往前寫,從Dao層開始編寫,然后到Service層,再到最后的Controller層,當(dāng)然主菜單頁(yè)面可以在前期先寫一個(gè)樣式,最后所有寫完了,再對(duì)主菜單頁(yè)面做一個(gè)修改,如果是有前端那接入前端頁(yè)面就好了,這樣子在寫的過(guò)程中不會(huì)出現(xiàn)大量的報(bào)錯(cuò);而且寫的過(guò)程中,寫完一個(gè)模塊,可以用git存儲(chǔ)一下,寫完一個(gè),存儲(chǔ)一個(gè),不會(huì)因?yàn)槟承┩话l(fā)狀況導(dǎo)致數(shù)據(jù)丟失代碼丟失等等情況,而且用git也可以方便修改。
2.讀入數(shù)據(jù)
代碼如下(示例):
主菜單頁(yè)面
然后對(duì)學(xué)生屬性的添加
public class Student {private String id;private String name;private String age;private String birthday;public Student() {}public Student(String id, String name, String age, String birthday) {this.id = id;this.name = name;this.age = age;this.birthday = birthday;}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 String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}@Overridepublic String toString() {return id +"\t\t\t" + name +"\t\t" + age +"\t" + birthday ;} }```這個(gè)是Dao層```java public class StudentDao {/*** 添加學(xué)生信息類* @param student 輸入學(xué)生信息* @return true -- 成功;false -- 失敗*/public boolean addStudent(Student student){boolean write = FileUtil.write(student);return write;}/*** 查詢所有學(xué)生類* @return 輸出學(xué)生列表*/public ArrayList<Student> findAllStudent(){return FileUtil.read();}/*** 刪除學(xué)生信息類* @param index 刪除學(xué)生索引*/public void deleteStudent(int index){FileUtil.remove(index);} }這里是Service層
public class StudentService {private StudentDao studentDao = new StudentDao();/*** 添加學(xué)生類* @param student 添加學(xué)生信息* @return true--成功,false--失敗*/public boolean addStudent(Student student){ArrayList<Student> allStudent = studentDao.findAllStudent();for (int i = 0; i < allStudent.size(); i++) {if (student.getId().equals(allStudent.get(i).getId())){return false;}return true;}return studentDao.addStudent(student);}/*** 查詢所有學(xué)生信息列表類* @return 學(xué)生信息*/public ArrayList<Student> findAllStudent(){return studentDao.findAllStudent();}/*** 刪除學(xué)生信息類* @param id 通過(guò)id轉(zhuǎn)換為索引刪除學(xué)生*/public void deleteStudent(String id){int index = findIndexByid(id);studentDao.deleteStudent(index);}/*** 刪除學(xué)生信息索引* @param id 通過(guò)id找到學(xué)生* @return 返回學(xué)生索引*/public int findIndexByid(String id){ArrayList<Student> list = studentDao.findAllStudent();for (int i = 0; i < list.size(); i++) {Student student = list.get(i);if (student.getId().equals(id)){return i;}}return -1;}}這里是Controller層
public class StudentController {//定義一個(gè)新的StudentService的私有類在StudentController中使用private StudentService studentService = new StudentService();//鍵盤錄入private Scanner scanner = new Scanner(System.in);/*** 添加學(xué)生信息類* @param student 添加學(xué)生信息*/public void addStudent(){System.out.println("請(qǐng)輸入學(xué)生學(xué)號(hào)");String id = scanner.next();System.out.println("請(qǐng)輸入學(xué)生姓名");String name = scanner.next();System.out.println("請(qǐng)輸入學(xué)生年齡");String age = scanner.next();System.out.println("請(qǐng)輸入學(xué)生生日");String birthday = scanner.next();Student stu = new Student(id,name,age,birthday);if (studentService.addStudent(stu)){System.out.println("添加成功");}else {System.out.println("學(xué)號(hào)重復(fù),無(wú)法添加");}}/*** 查詢所有學(xué)生信息*/public void findAllStudent(){ArrayList<Student> student = studentService.findAllStudent();if (student.size() == 0){System.out.println("暫無(wú)數(shù)據(jù)");return;}System.out.println("學(xué)號(hào)"+"\t\t\t"+"姓名"+"\t\t"+"年齡"+"\t"+"生日");for (int i = 0; i < student.size(); i++) {System.out.println(student.get(i));}}/*** 刪除學(xué)生信息類*/public void deleteStudent(){System.out.println("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)");String id = scanner.next();studentService.deleteStudent(id);System.out.println("刪除成功");} }其中還使用到了一個(gè)工具包
public class FileUtil {/*** 讀取數(shù)據(jù)文件** @return 學(xué)生信息列表*/public static ArrayList<Student> read() {ArrayList<Student> list = new ArrayList<>();BufferedReader reader = null;try {reader = new BufferedReader(new FileReader("./db.txt"));String line;while ((line = reader.readLine()) != null) {String[] split = line.split(",");list.add(new Student(split[0], split[1], split[2], split[3]));}} catch (Exception e) {e.printStackTrace();} finally {try {if (reader != null) {reader.close();}} catch (IOException e) {e.printStackTrace();}}return list;}/*** 寫入數(shù)據(jù)文件-一次寫入多個(gè)學(xué)生信息** @param list 學(xué)生信息列表*/public static boolean write(ArrayList<Student> list, boolean flag) {FileOutputStream fos = null;try {fos = new FileOutputStream("./db.txt", flag);for (Student student : list) {String str = student.getId() + "," + student.getName() + "," + student.getAge() + "," + student.getBirthday() + "\n";fos.write(str.getBytes(StandardCharsets.UTF_8));}return true;} catch (IOException e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}return false;}public static boolean write(ArrayList<Student> list) {return write(list, true);}/*** 寫入數(shù)據(jù)文件 - 一次只寫入一個(gè)學(xué)生信息** @param stu 單個(gè)學(xué)生對(duì)象*/public static boolean write(Student stu, boolean flag) {ArrayList<Student> list = new ArrayList<>();list.add(stu);return write(list, flag);}public static boolean write(Student stu) {return write(stu, true);}public static void remove(int index) {ArrayList<Student> list = read();list.remove(index);write(list, false);} }總結(jié)
以上全部就是我的整個(gè)學(xué)生管理系統(tǒng)的代碼編寫以及個(gè)人對(duì)項(xiàng)目分析和代碼編寫路線的全部概述,新人入門,Java牛仔子,希望有大佬看到,有什么不足的可以對(duì)小弟進(jìn)行一個(gè)提點(diǎn),點(diǎn)撥一些小牛仔子,萬(wàn)分感謝,感激不盡。謝謝
總結(jié)
以上是生活随笔為你收集整理的学生管理系统(JAVA后台简约版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vba调用excel内置函数
- 下一篇: 用Java实现一个学生管理系统(附源码)