大作业总结
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运行结果
2.网页制作
gitee链接:https://gitee.com/etherxxx/jixunzuoye_halfdone.git
前言:就和标题一样,这个我认为是一个半成品,因为离校后在忙实践的事,所以没有多少精力去写,还有很多的东西需要学,之后会进行完善
2.1代码展示
因为有多个模块,所以就不放代码在这里了,有兴趣的可以点击上方链接,这里只进行运行图片的展示
2.1.1登陆界面
用户名,密码以及用户身份等元素(其实背景应该是实验室或者是我们学校的图片,但实在是找不到。。。。)
可以身份的不同进入不同的页面
2.1.2注册界面
2.1.3管理员界面
额。。。管理员界面“较为”简陋,原因之后会讲到
管理员界面暂时拥有查看所有用户,以及删除、添加用户功能
2.1.4普通用户界面
(空气)因为要求是需要实现学习小组的创建,查看评论,怎么说呢。。。。本人太菜了,暂时实现不了。
上述即为以实现的功能(除2.1.4是我写完又删掉了)
2.2缺点分析
- 前端的一些界面可以实现的更好,但是ddl间夹杂了暑期实践,时间方面着实有点着急
- 登录以及注册界面的UI其实存在着不对齐或者说不对称问题,因为是用的table,看起来就挺怪的;
- 按钮在我看来是一个很大的问题,前面的一些按钮是用来写的,但是用来实现一些其他的操作,比如将按钮的样式应用于管理菜单上还是较为困难;
- 还有就是用户信息的显示问题,其实是在UserFindServlet中循环遍历出来的,感官不是很好,不是十分美观
- 管理员界面的分隔其实我是考虑过插图片的,但是在添加用户的界面,我是直接修改的注册页面,就会导致页面之间有较大的割裂感,不是很好处理,感觉是要重写添加用户页面
- 后端的登录注册因为前期在校时期还是练习过的,所以问题没有很大
- 有一个记得很深刻的问题就是,在写用户身份的jsp的时候value中直接写了管理员和普通用户,但是在建立数据库的时候,是想用1,0来区分,于是在一开始测试的时候对象老是建立不成功
- 还有就是如何来判断用户身份的问题,上文中直接给了选项,如果不是管理员选择管理员身份登陆时会提示错误,但其实这种做法不太合适,更好的应该是用户在登录的时候后台自动判断用户身份,在注册的时候,管理员应该输入管理员身份码或者是密钥来确认管理员身份
- 还有就是这个留言版的问题,一开始看问题以为直接可以采用textarea,但是需要显示所有的留言以及进行留言的管理,这是我觉得最难的部分,这个部分没有做好很大一部分功能都无法实现,后期回去深究
- 一些前期的准备工作在之前的博客以及写过,可自行查看