diff --git a/src/main/java/me/lensfrex/manager/Main.java b/src/main/java/me/lensfrex/manager/Main.java index 2240080..4d20514 100644 --- a/src/main/java/me/lensfrex/manager/Main.java +++ b/src/main/java/me/lensfrex/manager/Main.java @@ -15,7 +15,11 @@ public class Main { } private void run() { - + while (true) { + if (parseCommand(getUserCommand()) == -1) { + break; + } + } } private String getUserCommand() { @@ -24,12 +28,15 @@ public class Main { return command.readLine(); } catch (Exception e) { e.printStackTrace(); - return null; + return "null"; } } - private void parseCommand(String command) { + private int parseCommand(String command) { switch (command) { + case "null": + case "0": + return -1; case "1": case "2": case "3": @@ -39,7 +46,13 @@ public class Main { case "7": case "8": case "9": - break; + case "10": + return 0; + case "11": + System.out.println(welcomeMessage); + return 0; + default: + return 0; } } } diff --git a/src/main/java/me/lensfrex/manager/data/ManagerTool.java b/src/main/java/me/lensfrex/manager/data/ManagerTool.java new file mode 100644 index 0000000..3ed951d --- /dev/null +++ b/src/main/java/me/lensfrex/manager/data/ManagerTool.java @@ -0,0 +1,17 @@ +package me.lensfrex.manager.data; + +import java.util.ArrayList; +import java.util.Map; + +public class ManagerTool { + private final ArrayList studentData; + + public ManagerTool(ArrayList studentData) { + this.studentData = studentData; + } + + public void addStudent(long id, String name, Map score) { + + } + +} diff --git a/src/main/java/me/lensfrex/manager/data/Student.java b/src/main/java/me/lensfrex/manager/data/Student.java new file mode 100644 index 0000000..2dcd987 --- /dev/null +++ b/src/main/java/me/lensfrex/manager/data/Student.java @@ -0,0 +1,40 @@ +package me.lensfrex.manager.data; + +import java.util.Map; + +public class Student { + private String name; + //private String id; + private long id; + private Map score; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public Map getScore() { + return score; + } + + public void setScore(Map score) { + this.score = score; + } + + public Student(String name, long id, Map score) { + this.name = name; + this.id = id; + this.score = score; + } +} diff --git a/src/main/java/me/lensfrex/manager/data/StudentManager.java b/src/main/java/me/lensfrex/manager/data/StudentManager.java new file mode 100644 index 0000000..834a1c9 --- /dev/null +++ b/src/main/java/me/lensfrex/manager/data/StudentManager.java @@ -0,0 +1,10 @@ +package me.lensfrex.manager.data; + +import java.util.ArrayList; + +public class StudentManager { + private ArrayList studentData = new ArrayList<>(); + + + +} diff --git a/src/main/java/me/lensfrex/manager/sqlite/DataTypes.java b/src/main/java/me/lensfrex/manager/sqlite/DataTypes.java new file mode 100644 index 0000000..e0730d6 --- /dev/null +++ b/src/main/java/me/lensfrex/manager/sqlite/DataTypes.java @@ -0,0 +1,8 @@ +package me.lensfrex.manager.sqlite; + +public class DataTypes { + public static final String SQL_DATA_TYPE_NUMBER = "int"; + public static final String SQL_DATA_TYPE_TEXT = "text"; + public static final String SQL_DATA_TYPE_REAL = "real"; + public static final String SQL_DATA_TYPE_NULL = "null"; +} diff --git a/src/main/java/me/lensfrex/manager/sqlite/SQLiteTool.java b/src/main/java/me/lensfrex/manager/sqlite/SQLiteTool.java new file mode 100644 index 0000000..c4e1df0 --- /dev/null +++ b/src/main/java/me/lensfrex/manager/sqlite/SQLiteTool.java @@ -0,0 +1,99 @@ +package me.lensfrex.manager.sqlite; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +/** + * SQL操作的简单封装... + * 试图手动封装SQL操作... + * 有BUG?这就对了 + * SQL语句仍在学习中... + * SQL语句拼接怎么这么麻烦... + */ +public class SQLiteTool { + private static final String DATABASE_LOCATION = "student.db"; + + private Connection dbConnection; + private Statement statement; + + /** + * 初始化数据库文件,若成功则返回true,若数据库初始化出现异常则返回false。 + * 不保证数据库中存在欲操作的表,需手动确认。 + * + * @return 初始化是否成功,若成功则返回true,若数据库初始化出现异常则返回false。 + */ + public boolean initDatabase() { + try { + Class.forName("org.sqlite.JDBC"); + this.dbConnection = DriverManager.getConnection("jdbc:sqlite:" + DATABASE_LOCATION); + this.statement = dbConnection.createStatement(); + + return true; + } catch (Exception e) { + System.out.println("Some errors happens when initialing database."); + e.printStackTrace(); + return false; + } + } + + /** + * 向数据库中创建一个表。 + * + * @param tableName 数据库表的名称 + * @param columns 数据库表列的参数,map中key为列的名称,value为其相应的数据类型。 + * @throws SQLException 如果创建表的过程中发生错误 + */ + public void createTable(String tableName, HashMap columns) throws SQLException { + StringBuilder stringBuilder = new StringBuilder("create table %s ("); + + for (Map.Entry column : columns.entrySet()) { + stringBuilder.append(String.format("%s %s, ", column.getKey(), column.getValue())); + } + + String createStatement = stringBuilder + .replace(stringBuilder.lastIndexOf(","), stringBuilder.lastIndexOf(",") + 2, ")") + .toString(); + + statement.executeUpdate(createStatement); + } + + /** + * 查询表格是否存在。 + * + * @param tableName 表格名 + * @return 存在,返回true,否则返回false; + */ + public boolean isTableExists(String tableName) { + String tryStatement = String.format("select * from %s", tableName); + try { + statement.executeQuery(tryStatement); + return true; + } catch (Exception e) { + return false; + } + } + + /** + * 向数据库里插入一条记录。 + * + * @param table 表格名 + * @param values 每一列的数据值,文本类型数据应使用单引号 ' 括住 + * @throws SQLException 如果执行的过程中发生错误 + */ + public void insert(String table, String... values) throws SQLException { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("insert into ").append(table).append(" values ( "); + for (String value : values) { + stringBuilder.append(value).append(' '); + } + stringBuilder.append(")"); + + statement.executeUpdate(stringBuilder.toString()); + } + +} diff --git a/src/main/java/me/lensfrex/manager/utils/IOUtil.java b/src/main/java/me/lensfrex/manager/utils/IOUtil.java index d71dfcf..5d7ce1f 100644 --- a/src/main/java/me/lensfrex/manager/utils/IOUtil.java +++ b/src/main/java/me/lensfrex/manager/utils/IOUtil.java @@ -12,7 +12,7 @@ import java.nio.charset.Charset; public class IOUtil { public static String inputStreamToString(InputStream inputStream, Charset charSet) { - byte[] bytes = readDataFromInputStream(inputStream); + byte[] bytes = readDataFromInputStream(inputStream, 5); if (bytes != null) { return new String(bytes, charSet); } else { @@ -20,10 +20,6 @@ public class IOUtil { } } - public static byte[] readDataFromInputStream(InputStream inputStream) { - return readDataFromInputStream(inputStream, 5);// read every 5kb in default - } - public static byte[] readDataFromInputStream(InputStream inputStream, int byteAllocation) { try { ByteArrayOutputStream byteArrayInputStream = new ByteArrayOutputStream(); diff --git a/src/main/resources/me.lensfrex.manager/studentInformationExample.txt b/src/main/resources/me.lensfrex.manager/studentInformationExample.txt new file mode 100644 index 0000000..d2fc038 --- /dev/null +++ b/src/main/resources/me.lensfrex.manager/studentInformationExample.txt @@ -0,0 +1,4 @@ +- Please enter the student information following this format: + [id] [name] ...[subjectName,score] +- Example: + 23333333 Stud English,100 Math,99 History,98 \ No newline at end of file diff --git a/src/main/resources/me.lensfrex.manager/welcomeMessage.txt b/src/main/resources/me.lensfrex.manager/welcomeMessage.txt index 7d08bb7..42f93bf 100644 --- a/src/main/resources/me.lensfrex.manager/welcomeMessage.txt +++ b/src/main/resources/me.lensfrex.manager/welcomeMessage.txt @@ -3,15 +3,16 @@ **************************************************************** Do you want to: 1. Input record - 2. Caculate total and average score of every course - 3. Caculate total and average score of every student - 4. Sort in decending order by total socre of every student + 2. Calculate total and average score of every course + 3. Calculate total and average score of every student + 4. Sort in descending order by total score of every student 5. Sort in ascending order by number 6. Sort in ascending order by name 7. Search by number 8. Search by name 9. Statistic analysis for every course - 10. List reocrd + 10. List record + 11. Show help again 0. Exit **************************************************************** Please enter your choice: \ No newline at end of file