大作业总结

大作业总结

1.封装数据结构

gitee链接:https://gitee.com/etherxxx/packStack.git

1.1代码解析:

目的是将栈这种数据结构进行封装

1.1.1入栈操作

public void push(int value) throws Exception {
    if (top == data.length) {
      throw new Exception("栈满");
    }
    top++;
    data[top] = value;
  }

首先是入栈操作,如果指向栈顶的top等于栈的总长,则判断栈满
否则top就向上增长,为接下来要入栈的元素留出位置,在top位置插入元素value

1.1.2出栈操作

public int pop() throws Exception {
    if (top == -1) {
      throw new Exception("栈空");
    }
    return data[top--];
  }

出栈操作中,同样的先进行栈是否为空的判断,如果栈空则没有进行下一步的需要
栈顶的top直接向下指向,将原来在栈顶的元素弹出

1.1.3查看栈顶元素操作

public int peek() throws Exception {
    if (top == -1) {
      throw new Exception("栈空");
    }
    return data[top];
  }

同样先进性栈空的检测,之后直接返回栈顶元素即可

1.1.4栈空栈满的单独判读

public boolean isEmpty() {
    return top == -1;
  }

  public boolean isFull() {
    return top == data.length - 1;
  }

1.1.5代码展示

package pack;

public class Stack {
  private int[] data;
  private int top;

  public Stack() {
    data = new int[10];
    // -1表示当前栈中没有数据,0则代表当前栈中有一个元素
    top = -1;
  }

  public Stack(int maxsize) {
    data = new int[maxsize];
    top = -1;
  }

  public void push(int value) throws Exception {
    if (top == data.length) {
      throw new Exception("栈满");
    }
    top++;
    data[top] = value;
  }

  public int pop() throws Exception {
    if (top == -1) {
      throw new Exception("栈空");
    }
    return data[top--];
  }

  public int peek() throws Exception {
    if (top == -1) {
      throw new Exception("栈空");
    }
    return data[top];
  }

  public boolean isEmpty() {
    return top == -1;
  }

  public boolean isFull() {
    return top == data.length - 1;
  }
}

1.2测试代码

package pack;

public class StackTest {
  public static void main(String[] args) throws Exception {
    Stack stack = new Stack(6);

    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);
    stack.push(5);
    stack.push(6);

    System.out.println(stack.isFull());
    System.out.println(stack.isEmpty());

    int m = stack.pop();
    int n = stack.pop();
    System.out.println("出栈的元素为m= " + m + " n=" + n);

    //查看当前栈顶元素
    System.out.println(stack.peek());
    System.out.println(stack.isFull());
  }
}

1.2.1运行结果

大作业总结_第1张图片

2.网页制作

gitee链接:https://gitee.com/etherxxx/jixunzuoye_halfdone.git

前言:就和标题一样,这个我认为是一个半成品,因为离校后在忙实践的事,所以没有多少精力去写,还有很多的东西需要学,之后会进行完善

2.1代码展示

因为有多个模块,所以就不放代码在这里了,有兴趣的可以点击上方链接,这里只进行运行图片的展示

2.1.1登陆界面

用户名,密码以及用户身份等元素(其实背景应该是实验室或者是我们学校的图片,但实在是找不到。。。。)
可以身份的不同进入不同的页面

2.1.2注册界面

2.1.3管理员界面

大作业总结_第2张图片

额。。。管理员界面“较为”简陋,原因之后会讲到
管理员界面暂时拥有查看所有用户,以及删除、添加用户功能

大作业总结_第3张图片

2.1.4普通用户界面

(空气)因为要求是需要实现学习小组的创建,查看评论,怎么说呢。。。。本人太菜了,暂时实现不了。

上述即为以实现的功能(除2.1.4是我写完又删掉了)

2.2缺点分析

  1. 前端的一些界面可以实现的更好,但是ddl间夹杂了暑期实践,时间方面着实有点着急
    1. 登录以及注册界面的UI其实存在着不对齐或者说不对称问题,因为是用的table,看起来就挺怪的;
    2. 按钮在我看来是一个很大的问题,前面的一些按钮是用来写的,但是用来实现一些其他的操作,比如将按钮的样式应用于管理菜单上还是较为困难;
    3. 还有就是用户信息的显示问题,其实是在UserFindServlet中循环遍历出来的,感官不是很好,不是十分美观
    4. 管理员界面的分隔其实我是考虑过插图片的,但是在添加用户的界面,我是直接修改的注册页面,就会导致页面之间有较大的割裂感,不是很好处理,感觉是要重写添加用户页面
  2. 后端的登录注册因为前期在校时期还是练习过的,所以问题没有很大
    1. 有一个记得很深刻的问题就是,在写用户身份的jsp的时候value中直接写了管理员和普通用户,但是在建立数据库的时候,是想用1,0来区分,于是在一开始测试的时候对象老是建立不成功
    2. 还有就是如何来判断用户身份的问题,上文中直接给了选项,如果不是管理员选择管理员身份登陆时会提示错误,但其实这种做法不太合适,更好的应该是用户在登录的时候后台自动判断用户身份,在注册的时候,管理员应该输入管理员身份码或者是密钥来确认管理员身份
    3. 还有就是这个留言版的问题,一开始看问题以为直接可以采用textarea,但是需要显示所有的留言以及进行留言的管理,这是我觉得最难的部分,这个部分没有做好很大一部分功能都无法实现,后期回去深究
    4. 一些前期的准备工作在之前的博客以及写过,可自行查看

你可能感兴趣的:(java)