目录
本篇博客以提供代码和讲解为主。
首先先帮助大家弄明白这个数据录入管理系统是用来干什么的、有什么具体的功能,并且尝试阅读熟悉代码,提出一些困惑。
我们的数据录入管理系统可以理解为一个简易版的数据库,可以实现对数据的存储、录入、删除、更新、等等操作。
再说简单点就是存储数据到一个“库”中(在这里我们存到数组里),然后可以进行查询。
一、什么是数据库
简单介绍一下数据库,因为我们的数据录入管理系统就是用来模拟数据库的一些基本操作。
数据库(Database)是一个有组织的、集中存储和管理数据的系统。
在计算机科学中,数据库被用来存储数据并提供对数据的高效访问、管理和更新。
数据库系统可以看作是一个大型的电子文件柜,用于存储和组织大量相关数据,以便用户可以方便地访问、查询和操作这些数据。
数据库通常包括以下几个重要组成部分:
数据 | 被存储、组织和管理的信息 |
数据库管理系统(Database Management System,DBMS) | 用于管理数据库的软件系统,提供数据的存储、检索、更新、删除等功能,并确保数据的安全性、完整性和一致性。 |
数据库模型 | 用来描述数据的结构、关系和约束条件的模型,常见的包括关系型数据库模型(如SQL数据库)、文档型数据库模型、图形数据库模型等 |
查询语言(Query Language) | 用于与数据库进行交互、查询和操作数据的语言,如SQL(Structured Query Language)是一种常用的数据库查询语言 |
数据库的一些作用如下:
- 提供数据存储:将数据存储在数据库中,便于组织、管理和访问。
- 数据共享:多个用户可以同时访问数据库中的数据,实现数据共享和协作。
- 数据一致性和完整性:数据库系统可以确保数据的一致性和完整性,避免数据冗余和不一致。
- 数据安全:通过权限控制和加密等手段保护数据库中的数据安全。
- 数据备份和恢复:数据库系统提供备份和恢复机制,以防止数据丢失或损坏。
二、数据库的镜像:数据录入管理系统
1.数据录入管理系统可以实现的一些操作
1)新增(录入)——add
这里的功能类似于用户的注册:新建账号用户名、密码,系统根据注册前后自动分配ID
2)查询——consult
可以根据指令要求输出出来部分或全部已经录入的信息,包括ID、用户名、密码
查询之前我们可以多add几次,这样数据库数据更多更加完善
3)移除——remove
可以根据输入的ID删除该ID所在的所有相关信息最后输出删除后的全部信息
4)更新——update
根据输入的ID,对相对应的用户名、或者密码进行修改操作,最后输出修改后的信息
5)退出(系统)——exit
不执行对数据的操作,直接退出
2.待完善的功能与逻辑
1)扩容机制
2)remove功能中当出现重名或重密码时该如何改进代码
3)update仍然缺少进一步的逻辑,比如更新用户名可以直接输入,但更新密码其实按照人的行为习惯应该先输入用户名再输入密码,但这样代码就比较冗杂,可以思考如何提高代码的效率
这是一个简易版的数据库,有一些功能还不算特别完善,可能逻辑不是特别严谨,如有意见可在评论区提出。
三、数据录入管理系统的代码实现
1.用户类
public class User {
int ID;
String userName;
String password;
public String toString(){
String userInfo = "{ID:"+ID+" 用户名:"+userName+" 密码:"+password+"}";
return userInfo;
}
}
2.用户数据管理类
public class ManageUserData {
//最大数据量maxSize、用来存储的数组length、实时数据量dynamicSize
final int maxSize = 50;//final修饰后其值不可变
User[] userList = new User[maxSize];//和上一步是否可以融合
int size;
public void welcome(){
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println("--------------------");
System.out.println("---欢迎使用数据录入管理系统,WELCOME!---");
System.out.println("--------------------");
System.out.println("请按照要求选择指令:\n新增-add \n查询-consult \n删除-remove \n更新-update \n退出-exit ");
//一些其他功能:如退出系统、输入错误等等
String enter1 = sc.nextLine();
if (enter1.equals("add")) {
add(sc);
} else if (enter1.equals("consult")) {
consult(sc);
} else if (enter1.equals("remove")) {
remove(sc);
} else if (enter1.equals("update")) {
update(sc);
} else if (enter1.equals("exit")) {
System.exit(0);//退出程序
} else {
System.err.println("非法输入!");
}
}
}
public void add(Scanner sc){
//是否还有空闲[],若无则需考虑扩容(扩容机制)
//用户输入用户名(检测是否重复)——有难度
//输入密码
//将账号密码存入一个新的用户对象?思考与理解!!
//再将该用户对象赋值一个ID后存入userList中
//size++;
if(size>maxSize){
System.out.println("系统火爆,无法新建账号,请联系管理员!");
return;
}
System.out.println("请输入姓名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();//到这一步name和pwd都是灰色的,如何使他们变色呢
User user = new User();
user.userName=name;
user.password=pwd;
user.ID=size;
userList[size]=user;//不太理解
size++;
System.out.println("成功录入系统!");
}
public void consult(Scanner sc){
System.out.println("请选择需要查询的信息类型:ID ———— name ———— all");
String action = sc.nextLine();
if(action.equals("ID")){
System.out.println("请输入需要查询的ID");
int ID = sc.nextInt();//回顾此方法
sc.nextLine();//吸收多余字符,防止报错!!!!!!!!!
for (int i = 0; i<size;i++){
User user1 = userList[i];
if (user1.ID==ID){
System.out.println(user1.toString());
System.out.println("查找完成");
return;//感觉貌似没有这个return也可以???
}
}
System.err.println("找不到相应数据");
}
else if(action.equals("name")){
System.out.println("请输入需要查询的name");
String name = sc.nextLine();//与上面的注意区分开来
for (int i = 0; i<size;i++){
User user2 = userList[i];
if (user2.userName.equals(name)){
System.out.println(user2.toString());
System.out.println("查找完成");
return;//感觉貌似没有这个return也可以???
}
}
System.err.println("找不到相应数据");
}
else if(action.equals("all")){
//不需要查找,直接拼接所有信息,思考数组的存与放,为什么此处还需要循环
String all ="";
for (int i = 0; i<size;i++ ){
User user2 = userList[i];
all += user2.toString()+"\n";
}
System.out.println(all);
}
else {
System.err.println("非法输入!!!");
}
}
public void remove(Scanner sc){
System.out.println("请选择需要删除的数据的ID");
int ID = sc.nextInt();
if (ID<=size){
for (int i=0;i<size;i++){
User user3 = userList[i];
if(user3.ID==ID){
for (int j = ID;j<size;j++){ //小于size-1
userList[j]=userList[j+1];
}
size--;
System.out.println("删除成功!");
System.out.println("删除后的全部信息:");
for (int k = 0; k < size; k++) {
System.out.println(userList[k].toString());
}
return;
}
}
}else {
System.err.println("提供的ID有误,请重新输入!");
}
}
public void update(Scanner sc){
System.out.println("请输入需要更新的用户数据:姓名or密码");
String update = sc.nextLine();
if(update.equals("姓名")){
System.out.println("请输入需要修改的原姓名:");
String oriName = sc.nextLine();
for (int i=0; i<size;i++){
User user4 = userList[i];
if(user4.userName.equals(oriName)){
System.out.println("请输入新的姓名:");
String updateName = sc.nextLine();
user4.userName=updateName;
System.out.println("姓名已更改成功!");
System.out.println("更改后如下:"+user4);
return;
}
}
}else if(update.equals("密码")){
System.out.println("请输入需要修改的原密码:");//考虑一些内在的逻辑,更改密码是否需要先输入姓名
String oriPwd = sc.nextLine();
for (int i=0; i<size;i++){
User user4 = userList[i];
if(user4.password.equals(oriPwd)){
System.out.println("请输入新的密码:");
String updatePwd = sc.nextLine();
user4.password=updatePwd;
System.out.println("密码已更改成功!");
System.out.println("更改后如下:"+user4);
return;
}
}
}else {
System.err.println("需要更改的1信息有误,请重新输入!!");
}
}
public static void main(String[] args){
new ManageUserData().welcome();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/86433.html