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. selenium+python—HTML生成报告代码

    Python自动化测试生成HTML测试报告 HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,他生成易于使用的HTML测试报告. Ubuntu放置位置:输入Pyt ...

  2. Let Her Go

    转自:https://www.zhihu.com/question/29255072/answer/43962611 [MV]Passenger-Let Her Go-高清MV在线播放 版本一 Let ...

  3. Linux安全基线检查脚本

    基线检查内容: 一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在配置要求:1.系统需按照实际用户分配账号; 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享.操作指南 ...

  4. 简单的Java网络爬虫(获取一个网页中的邮箱)

    import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; impo ...

  5. 前端初级技能No.1 [切图]

    “切图”是指通过测量设计稿,从设计稿中提取图片等方式为页面开发提供支持的过程. 整个“切图”过程主要分为以下五个主要步骤: 分析设计图: 测量元素: 提取图片: 保存图片: 图片优化与合并: 1.分析 ...

  6. 对linux内核创建flash上的各分区源码进行分析

    1.注意:内核源码版本为4.9 2.首先注意关键字符串"partitions found on MTD device 这句话在drivers/mtd/mtdpart.c的parse_mtd_ ...

  7. hadoop的安装配置

    资源下载路径:https://archive.cloudera.com/cdh5/cdh/5/:https://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0 ...

  8. hdu5616 暴力枚举

    2017-08-25 20:08:54 writer:pprp 题目简述: • HDU 5616• n个砝码,可以放在天平左右两侧或不放• m次询问,每次询问是否可以测出给定重量• 1 ≤ n ≤ 2 ...

  9. RabbitMQ入门(3)——发布/订阅(Publish/Subscribe)

    在上一篇RabbitMQ入门(2)--工作队列中,有一个默认的前提:每个任务都只发送到一个工作人员.这一篇将介绍发送一个消息到多个消费者.这种模式称为发布/订阅(Publish/Subscribe). ...

  10. 转 : JBoss Web和 Tomcat的区别

    JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全 球领导者,JBoss在 ...