package com.dao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner; import com.entity.Student; /**
* 只能用List来保存学生
* */
public class Sms {
List<Student> stus ; //构造函数用于初始化对象中非静态属性
public Sms(){
stus = new ArrayList<Student>();
} /**
保存
@param 学生对象
*/
public void save(Student stu){
stus.add(stu);
} /**
查询所有的学生 */
public List<Student> queryAll(){
return stus;
} /**
通过学生的id查找学生的信息
*/
public Student queryById(long id){
for(Student stu : stus){
if(stu.getId() == id){
return stu;
}
}
return null;
} /**
修改学生信息
*/
public void update(Student newStu){
for(Student stu : stus){
if(stu.getId() == newStu.getId()){
stu.setName(newStu.getName());
stu.setAge(newStu.getAge());
}
}
}
/**
删除学生信息
迭代器
*/
public void deleteById(long id){
Iterator<Student> iter = stus.iterator();
while(iter.hasNext()){
Student stu = iter.next();
if(stu.getId() == id){
iter.remove();
}
}
} public void menu(){
System.out.println("********学生管理系统********");
System.out.println("*1. 查询所有学生信息");
System.out.println("*2. 录入学生信息");
System.out.println("*3. 删除学生信息");
System.out.println("*4. 查询单个学生信息");
System.out.println("*5. 修改学生信息");
System.out.println("*exit. 退出");
System.out.println("*help. 帮助");
System.out.println("****************************");
}
/**
主方法
*/
public static void main(String[] args){
Sms sms = new Sms();
sms.menu();
Scanner sc = new Scanner(System.in);
while(true){
try {
System.out.print("请输入功能编号:");
String option = sc.nextLine();
//System.out.println("接收了:"+option);
switch(option){
case "1":
System.out.println("以下是学生的信息:");
List<Student> arr = sms.queryAll();
for(int i=0;i<arr.size();i++){
System.out.println(arr.get(i));
}
System.out.println("总计 "+arr.size()+" 个");
break;
case "2":
while(true){
System.out.println("请输入学生信息【id#name#age】或者输入【break】返回上一级目录");
String stuStr = sc.nextLine();
if(stuStr.equals("break")){
break;
}
//1001#terry#12
String[] stuArr = stuStr.split("#");
long id = Long.parseLong(stuArr[0]);
String name = stuArr[1];
int age = Integer.parseInt(stuArr[2]);
//Student stu = new Student(id,name,age);
//sms.save(stu);
System.out.println("保存成功!");
} break;
case "3":
while(true){
System.out.println("请输入要删除学生的学号或者输入【break】返回上一级目录");
String idStr = sc.nextLine();
if(idStr.equals("break")){
break;//跳出当前循环,返回主菜单
}
//1001#terry#12
long id = Long.parseLong(idStr);
Student oldStu = sms.queryById(id);
if(oldStu == null){
System.out.println("您要删除的学生不存在!");
continue;
}
sms.deleteById(id);
System.out.println("删除成功!");
}
break;
case "4":
while(true){
System.out.println("请输入学号或者输入【break】返回上一级目录");
String idStr = sc.nextLine();
if(idStr.equals("break")){
break;
}
//1001#terry#12
long id = Long.parseLong(idStr);
Student stu = sms.queryById(id);
System.out.println(stu==null?"sorry,not found!":stu);
}
break;
case "5"://修改
while(true){
System.out.println("请输入要修改学生的学号或者输入【break】返回上一级目录");
String idStr = sc.nextLine();
if(idStr.equals("break")){
break;//跳出当前循环,返回主菜单
}
//1001#terry#12
long id = Long.parseLong(idStr);
Student oldStu = sms.queryById(id);
if(oldStu == null){
System.out.println("您要修改的学生不存在!");
continue;
}
System.out.println("原有信息为:"+oldStu);
System.out.println("请输入信息【name#age】");
//获取用户的新信息,并且将其封装为对象
String newStr = sc.nextLine();
String[] newArr = newStr.split("#");
String name = newArr[0];
int age = Integer.parseInt(newArr[1]); //Student newStu = new Student(id,name,age);
//调用修改模块的方法,完成修改功能
//sms.update(newStu);
System.out.println("修改成功");
}
break;
case "exit":
System.out.println("bye bye,欢迎再次使用!");
System.exit(0);
case "help":
sms.menu();
break;
default:
System.out.println("不合法输入!"); }
} catch (Exception e) {
System.out.println("输入出错!");
//e.printStackTrace();
continue;
}
}
}
}
package com.dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import com.entity.Student;
import com.util.JDBC; public class StudentDAO {
static Connection conn=new JDBC().getConn();
static PreparedStatement pstml=null;
static ResultSet rs=null; public void menu(){
System.out.println("********学生管理系统********");
System.out.println("*1. 查询所有学生信息");
System.out.println("*2. 录入学生信息");
System.out.println("*3. 删除学生信息");
System.out.println("*4. 查询单个学生信息");
System.out.println("*5. 修改学生信息");
System.out.println("*exit. 退出");
System.out.println("*help. 帮助");
System.out.println("****************************");
} public int addStudent(Student s) throws SQLException{
String sql="insert into student(name,sex,age,tel)" +
"values(?,?,?,?)";
pstml= conn.prepareStatement(sql);
//pstml.setInt(1, s.getId());
pstml.setString(1, s.getName());
pstml.setString(2, s.getSex());
pstml.setInt(3, s.getAge());
pstml.setLong(4, s.getTel());
return pstml.executeUpdate();
} public int deleteStudent(int id) throws SQLException{
String sql="delete * from student where id=?";
pstml= conn.prepareStatement(sql);
pstml.setInt(1, id);
return pstml.executeUpdate();
} public int change(Student s) throws SQLException{
String sql="update student set name=?,sex=?,age=?,tel=? where id=?";
pstml= conn.prepareStatement(sql);
pstml.setString(1, s.getName());
pstml.setString(2, s.getSex());
pstml.setInt(3, s.getAge());
pstml.setLong(4, s.getTel());
pstml.setInt(5, s.getId());
return pstml.executeUpdate();
} public Student studentFindById(int id) throws SQLException{
String sql="select * from student where id=?";
pstml= conn.prepareStatement(sql);
pstml.setInt(1, id);
rs=pstml.executeQuery();
Student s = null;
while(rs.next()){
s=new Student();
s.setId(rs.getInt("id"));
s.setName(rs.getString("name"));
s.setSex(rs.getString("sex"));
s.setAge(rs.getInt("age"));
s.setTel(rs.getLong("tel"));
}
return s;
} public ArrayList<Student> studentFindAll() throws SQLException{
ArrayList<Student> studentList=new ArrayList<Student>();
String sql="select * from student";
pstml= conn.prepareStatement(sql);
rs=pstml.executeQuery();
while(rs.next()){
Student s=new Student();
s.setId(rs.getInt("id"));
s.setName(rs.getString("name"));
s.setSex(rs.getString("sex"));
s.setAge(rs.getInt("age"));
s.setTel(rs.getLong("tel"));
studentList.add(s);
}
return studentList;
} public static void close() throws SQLException{
if(conn!=null){
conn.close();
}else if(pstml!=null){
pstml.close();
}else if(rs!=null){
rs.close();
}
} }
package com.entity; public class Student {
private int id;
private String name;
private String sex;
private int age;
private long tel;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int id, String name, String sex, int age, long tel) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.tel = tel;
}
public Student( String name, String sex, int age, long tel) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.tel = tel;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public long getTel() {
return tel;
}
public void setTel(long tel) {
this.tel = tel;
} public String toString(){
return "Student [id="+getId()+", name="+getName()+", age="+getAge()+", sex="+getSex()+", tel="+getTel()+"]";
} }
package com.test; import java.util.List;
import java.util.Scanner; import com.dao.StudentDAO;
import com.entity.Student; public class StudentManager { public static void main(String[] args){
StudentDAO studentDao = new StudentDAO();
studentDao.menu();
Scanner sc = new Scanner(System.in);
while(true){
try {
System.out.print("请输入功能编号:");
String option = sc.nextLine();
switch(option){
case "1":
System.out.println("以下是学生的信息:");
List<Student> arr = studentDao.studentFindAll();
for(int i=0;i<arr.size();i++){
System.out.println(arr.get(i));
}
System.out.println("总计 "+arr.size()+" 个");
break;
case "2":
while(true){
//假设学生年龄在0~80之间
System.out.println("请输入学生信息【name#sex#age#tel】或者输入【break】返回上一级目录");
String stuStr = sc.nextLine();
if(stuStr.equals("break")){
break;
}
String[] stuArr = stuStr.split("#");
String name = stuArr[0];
String sex = stuArr[1];
int age = Integer.parseInt(stuArr[2]);
Long tel=Long.parseLong(stuArr[3]);
Student s=new Student(name,sex,age,tel);
if(
name==null||name.equals("")||
sex==null||sex.equals("")||
(((sex.equals("男")||sex.equals("女"))==false)||
age<=0||age>=80||
((tel>=10000000&&tel<100000000)||( tel>=10000000000l && tel<100000000000l))==false)
)
{
System.out.println("信息格式错误!注意:\n" +
"1、学生姓名,性别,年龄,电话号码不能为空\n" +
"2、性别只能为男和女\n" +
"3、年龄在0~80之间\n" +
"4、" +
"5、tel为电话号码或者手机号码,必须是8位或者11位数字");
continue;
}else{
int i=studentDao.addStudent(s);
if(i>0){
System.out.println("添加成功!");
}else{
System.out.println("系统异常,信息添加失败!");
}
} } break;
case "3":
while(true){
System.out.println("请输入要删除学生的学号或者输入【break】返回上一级目录");
String idStr = sc.nextLine();
if(idStr.equals("break")){
break;//跳出当前循环,返回主菜单
}
int id = Integer.parseInt(idStr);
Student oldStu = studentDao.studentFindById(id);
if(oldStu == null){
System.out.println("您要删除的学生不存在!");
continue;
}
int i=studentDao.deleteStudent(id);
if(i>0){
System.out.println("添加成功!");
}else{
System.out.println("系统异常,信息添加失败!");
}
}
break;
case "4":
while(true){
System.out.println("请输入学号或者输入【break】返回上一级目录");
String idStr = sc.nextLine();
if(idStr.equals("break")){
break;
}
//1001#terry#12
int id = Integer.parseInt(idStr);
Student stu = studentDao.studentFindById(id);
System.out.println(stu==null?"sorry,not found!":stu);
}
break;
case "5"://修改
while(true){
System.out.println("请输入要修改学生的学号或者输入【break】返回上一级目录");
String idStr = sc.nextLine();
if(idStr.equals("break")){
break;//跳出当前循环,返回主菜单
}
int id = Integer.parseInt(idStr);
Student oldStu = studentDao.studentFindById(id);
if(oldStu == null){
System.out.println("您要修改的学生不存在!");
continue;
}
System.out.println("原有信息为:"+oldStu);
System.out.println("请输入学生信息【name#sex#age#tel】");
String stuStr = sc.nextLine();
if(stuStr.equals("break")){
break;
}
String[] stuArr = stuStr.split("#");
int stuId=id;
String name = stuArr[0];
String sex = stuArr[1];
int age = Integer.parseInt(stuArr[2]);
Long tel=Long.parseLong(stuArr[3]);
Student s=new Student(stuId,name,sex,age,tel); if(
name==null||name.equals("")||
sex==null||sex.equals("")||
(((sex.equals("男")||sex.equals("女"))==false)||
age<=0||age>=80||
((tel>=10000000&&tel<100000000)||( tel>=10000000000l && tel<100000000000l))==false)
)
{
System.out.println("信息格式错误!注意:\n" +
"1、学生姓名,性别,年龄,电话号码不能为空\n" +
"2、性别只能为男和女\n" +
"3、年龄在0~80之间\n" +
"4、" +
"5、tel为电话号码或者手机号码,必须是8位或者11位数字");
continue;
}else{
int i=studentDao.change(s);
if(i>0){
System.out.println("修改成功!");
}else{
System.out.println("系统异常,信息添加失败!");
}
}
}
break;
case "exit":
System.out.println("bye bye,欢迎再次使用!");
System.exit(0);
case "help":
studentDao.menu();
break;
default:
System.out.println("不合法输入!"); }
} catch (Exception e) {
System.out.println("输入出错!");
e.printStackTrace();
continue;
}
}
} }
package com.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class JDBC {
private final String DRIVER="com.mysql.jdbc.Driver";
private final String URL="jdbc:mysql://localhost:3306/test";
String username = "root" ;
String password = "root" ;
Connection conn=null; public Connection getConn(){
try{
Class.forName(DRIVER);
conn =DriverManager.getConnection(URL,username,password) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} }

01_StudentManager的更多相关文章

随机推荐

  1. 解决NodeJS+Express模块的跨域访问控制问题:Access-Control-Allow-Origin

    在一个项目上想用NodeJS,在前端的js(http://localhost/xxx)中ajax访问后端RestAPI(http://localhost:3000/….)时(Chrome)报错: XM ...

  2. javascript 设置元素滚动大小

    3. 滚动大小 最后要介绍的是滚动大小(scroll dimension),指的是包含滚动内容的元素的大小. 有些元素(例如 元素),即使没有执行任何代码也能自动地添加滚动条:但另外一些元素,则需要通 ...

  3. 深入探讨JS中的数组排序函数sort()和reverse()

    最近在研究Javascript发现了其中一些比较灵异的事情.有点让人感到无语比如: alert(typeof( NaN == NaN));//结果为假. alert(typeof( NaN != Na ...

  4. [pixhawk笔记]5-uORB消息传递

    本文主要内容翻译自官方文档:https://dev.px4.io/en/middleware/uorb.html 在前一篇笔记中使用uORB完成消息传递,实现了一个简单示例程序,本文将对uORB进行系 ...

  5. SVN 命令符号详解

    L abc.c # svn已经在.svn目录锁定了abc.c M bar.c # bar.c的内容已经在本地修改过了 M baz.c # baz.c属性有修改,但没有内容修改 X 3rd_party ...

  6. 如何退出minicom【学习笔记】

    一.先按ctr+a进入设置模式 二.在按x退出

  7. contos LINUX搭建LAMP笔记

    LINUX搭建LAMP笔记 .YUM:Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于R ...

  8. 【Semantic segmentation】Fully Convolutional Networks for Semantic Segmentation 论文解析

    目录 0. 论文链接 1. 概述 2. Adapting classifiers for dense prediction 3. upsampling 3.1 Shift-and-stitch 3.2 ...

  9. Rancher在Catalog中 使用Helm Chart安装应用

    1. 首先在github上创建一个项目: 这里以我的项目为例:https://github.com/hankuikuide/cis-rancher-cattle 可以看出里出其实除了chart文件什么 ...

  10. maven 本地仓库的配置

    <?xml version="1.0" encoding="UTF-8"?> <!--Licensed to the Apache Softw ...