比较有意思的就是做系统吧,有点难度,综合性比较强,很有挑战性,做的是一个学生日志管理系统:
完成学生日志内容管理系统-学生端,日志信息主要包含:日志编号,今日学习内容,掌握程度,疑问,日志填写人,项目包含主要实体类:
-
学生类(学号,姓名,密码)
-
日志类(编号,今日学习内容,掌握程度(了解,熟练,精通),疑问,学生)
-
其余操作类自行设计
要求实现功能如下:
-
学生添加
-
学生登录
-
日志提交
-
日志编号要求自动生成(可从1开始自动递增)
-
查看当前登录人提交的所有日志
-
修改当前等路人提交的日志内容
-
退出登录
-
package com.softeem.ds;
-
import java.util.ArrayList;
-
public interface BaseManager {
public boolean add(Object obj);
public boolean del(Object obj);
public boolean update(Object obj);
public ArrayList findAll(Object obj);
public Object findOne(Object obj);
} -
package com.softeem.ds;
public class Daily {
private int dno; //编号
private String content; //内容
private int starts; //掌握程度 1:了解 2:熟练 3:精通
private String ques; //疑问
private Student stu; //日志提交人
public Daily() {
// TODO Auto-generated constructor stub
}public Daily(int dno, String content, int starts, String ques, Student stu) {
super();
this.dno = dno;
this.content = content;
this.starts = starts;
this.ques = ques;
this.stu = stu;
}public int getDno() {
return dno;
}public void setDno(int dno) {
this.dno = dno;
}public String getContent() {
return content;
}public void setContent(String content) {
this.content = content;
}public int getStarts() {
return starts;
}public void setStarts(int starts) {
this.starts = starts;
}public String getQues() {
return ques;
}public void setQues(String ques) {
this.ques = ques;
}public Student getStu() {
return stu;
}public void setStu(Student stu) {
this.stu = stu;
}@Override
public String toString() {
return "Daily [dno=" + dno + ", content=" + content + ", starts=" + starts + ", ques=" + ques + ", stu=" + stu.getSname()
+ "]";
}
}
-
package com.softeem.ds;
import java.util.ArrayList;
import java.util.Objects;public class DailyManager implements BaseManager {
static ArrayList<Daily> dailys = new ArrayList<>();
static int dno;
/**
* 日志添加
*/
@Override
public boolean add(Object obj) {
Daily d = (Daily)obj;
d.setDno(++dno);
return dailys.add(d);
}@Override
public boolean del(Object obj) {
// TODO Auto-generated method stub
return false;
}@Override
public boolean update(Object obj) {
//新日志内容,学号
Daily d = (Daily)obj;
for(Daily daily:dailys){
if(Objects.equals(d.getStu().getSno(), daily.getStu().getSno())){
daily.setContent(d.getContent());
daily.setStarts(d.getStarts());
daily.setQues(d.getQues());
return true;
}
}
return false;
}/**
* 查看当前登录学生提交的所有日志
*/
@Override
public ArrayList findAll(Object obj) {
ArrayList list = new ArrayList();
String sno = obj.toString();
for (Daily daily : dailys) {
if(Objects.equals(sno, daily.getStu().getSno())){
list.add(daily);
}
}
return list;
}@Override
public Object findOne(Object obj) {
// TODO Auto-generated method stub
return null;
}}
-
package com.softeem.ds;
import java.util.ArrayList;
import java.util.Scanner;public class Main {
static BaseManager sm = new StudentManager();
static BaseManager dm = new DailyManager();
static Student login;//记录当前登录学生
public void enter(){
menu1();
}
private void menu1() {
p("**********SOFTEEM学员日志管理系统*********");
p("*************【1】学员登录***************");
p("*************【2】学员添加***************");
p("*************【0】退出系统***************");
p("*************************************");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
switch(i){
case 1:
login();
break;
case 2:
register();
break;
case 0:
p("谢谢使用,再见!!!");
System.exit(0);
default:
System.err.println("指令错误,请重新输入");
menu1();
break;
}
}
public void menu2(){
p("**********SOFTEEM学员日志管理系统*********");
p("*************【1】日志提交***************");
p("*************【2】日志查看***************");
p("*************【3】修改日志***************");
p("*************【0】退出登录***************");
p("*************************************");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
switch(i){
case 1:
dailyAdd();
break;
case 2:
dailyShow();
break;
case 3:
dailyUpdate();
break;
case 0:
//将当前登录者置为空
login = null;
//返回上一级菜单
menu1();
break;
default:
}
}
private void dailyUpdate() {
// TODO Auto-generated method stub
}
private void dailyShow() {
for (Object obj : dm.findAll(login.getSno())) {
p(obj);
}
menu2();
}
private void dailyAdd() {
p("请输入日志信息(例如:日志内容(String)/掌握程度(int)/疑问(String)):");
Scanner sc = new Scanner(System.in);
String[] info = sc.nextLine().split("/");
Daily d = new Daily(0, info[0], Integer.parseInt(info[1]), info[2], login);
if(dm.add(d)){
p("提交成功!");
}else{
p("提交失败!");
}
menu2();
}
/**
* 学生登录
*/
private void login() {
p("请输入学号和密码(例如:001/123456)");
Scanner sc = new Scanner(System.in);
String[] info = sc.nextLine().split("/");
//由于登录不需要姓名(根据学号密码)
Student s = new Student(info[0],null,info[1]);
Object obj = sm.findOne(s);
if(obj != null){
p("登录成功");
login = (Student)obj;
menu2();
}else{
p("账号或密码不正确,请重新输入");
login();
}
}
/**
* 学员注册
*/
private void register() {
p("请输入学员信息(例如:001/张三风/123456)");
Scanner sc = new Scanner(System.in);
//读取一行输入文本同时截取
String[] info = sc.nextLine().split("/");
//根据截取的学生信息创建学生对象
Student s = new Student(info[0],info[1],info[2]);
if(sm.add(s)){
p("添加成功!");
}else{
p("添加失败!");
}
menu1();
}
public void p(Object msg){
System.out.println(msg);
}
public static void main(String[] args) {
new Main().enter();
}}
-
package com.softeem.ds;
public class Student {
String sno; //学号
String sname; //姓名
String pwd; //密码
public Student() {
// TODO Auto-generated constructor stub
}
public Student(String sno, String sname, String pwd) {
super();
this.sno = sno;
this.sname = sname;
this.pwd = pwd;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}@Override
public String toString() {
return "Student [sno=" + sno + ", sname=" + sname + ", pwd=" + pwd + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
result = prime * result + ((sno == null) ? 0 : sno.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (pwd == null) {
if (other.pwd != null)
return false;
} else if (!pwd.equals(other.pwd))
return false;
if (sno == null) {
if (other.sno != null)
return false;
} else if (!sno.equals(other.sno))
return false;
return true;
}
}
-
package com.softeem.ds;
import java.util.ArrayList;
import java.util.Objects;public class StudentManager implements BaseManager{
static ArrayList<Student> stus = new ArrayList<>();
@Override
public boolean add(Object obj) {
//判断当前添加的学生是否已经存在
Student stu = (Student)obj;
for(Student s:stus){
if(Objects.equals(stu.getSno(), s.getSno())){
//已存在
return false;
}
}
//加入集合
return stus.add(stu);
}@Override
public boolean del(Object obj) {
// TODO Auto-generated method stub
return false;
}@Override
public boolean update(Object obj) {
// TODO Auto-generated method stub
return false;
}@Override
public ArrayList findAll(Object obj) {
// TODO Auto-generated method stub
return null;
}//登录
@Override
public Object findOne(Object obj) {
Student stu = (Student)obj;
for(Student s:stus){
//比较两个学生对象是否一致(学号和密码)
if(Objects.equals(s, stu)){
return s;
}
}
return null;
}}
-
package com.softeem.ds;
public class Test {
public static void main(String[] args) {
StudentManager sm = new StudentManager();
Student s1 = new Student("001", "狗蛋", "123");
Student s2 = new Student("003", "旺财", "1234");
Student s3 = new Student("004", "来福", "123456");
boolean b1 = sm.add(s1);
boolean b2 = sm.add(s2);
boolean b3 = sm.add(s3);
System.out.println("b1添加结果:"+b1);
System.out.println("b2添加结果:"+b2);
System.out.println("b3添加结果:"+b3);
Student s = new Student("003", "旺财", "1234");
System.out.println(sm.findOne(s));
}}