Функциональный дизайн и технология:
обычный пользователь: Войдите и зарегистрируйтесь, просматривайте информацию об обучении операционной системы на домашней странице, просматривайте классификацию обучения операционной системе, просматривайте сведения об обучении операционной системы, обменивайтесь комментариями пользователей, отвечайте на обсуждения, избранные модули, избранные модули, статистику просмотров страниц, следите за пользователями, мои личные центр, мои подписки, мои избранные и т. д.
администратор:Статистика входа и зарегистрированных пользователей, статистика классифицированных статей, управление классификацией обучения, управление классификацией информации о статьях, управление комментариями, управление ответами, управление пользователями, управление личной информацией, выход и т. д.
Основная техника:Java, springmvc, mybatis, mysql, tomcat, jquery, layui, bootstarp, JavaScript, html, css, jsp, log4j и другие распространенные базовые технологии.
Эффект демонстрации видео выглядит следующим образом:# Учебная информационная платформа операционной системы Springboot.mp4
Скриншоты основных функций:
Регистрация входа пользователя:
Домашняя страница системной платформы:
Просмотр информации по категориям:
Представление статьи данных:Пользователи могут делать закладки и просматривать информацию об авторе
Обмен ответами на комментарии:Комментируйте статьи, отвечайте на обмены и т. д.
Модуль избранного:
Модуль профиля:
Модуль управления фоном:
Управление типом выпуска:
Управление деталями релиза:
Управление ответами на комментарии:
Управление пользовательской информацией:
Управление персональным центром:
Реализация класса основного кода:
/**
* 用户控制器
* @author lyy
*
*/
@RestController
@RequestMapping("/admin/user")
public class UserAdminController {
@Resource
private UserService userService;
@Value("${MD5Salt}")
private String salt; // md5加密盐
/**
* 根据ID查找用户
* @param userId
* @return
*/
@RequestMapping("/findById")
public Map<String, Object> findById(Integer userId) {
Map<String, Object> resultMap = new HashMap<String, Object>();
User user = userService.findById(userId);
resultMap.put("errorNo", 0);
resultMap.put("data", user);
return resultMap;
}
/**
* 分页查询用户
* @param user
* @param page
* @return
*/
@RequestMapping("/list")
public Map<String, Object> list(User user,
@RequestParam(value = "latelyLoginTimes", required = false) String latelyLoginTimes,
@RequestParam(value = "page", required = false) Integer page,
@RequestParam(value = "pageSize", required = false) Integer pageSize) {
String s_bregistrationDate = null; // 开始时间
String s_eregistrationDate = null; // 结束时间
if (StringUtil.isNotEmpty(latelyLoginTimes)) {
String[] strs = latelyLoginTimes.split(" - "); // 拆分时间段
s_bregistrationDate = strs[0];
s_eregistrationDate = strs[1];
}
List<User> userList = userService.list(user, s_bregistrationDate, s_eregistrationDate, page - 1, pageSize);
Long total = userService.getCount(user, s_bregistrationDate, s_eregistrationDate);
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("errorNo", 0);
resultMap.put("data", userList);
resultMap.put("total", total);
return resultMap;
}
/**
* 取消关注
* @param request
* @param userId
* @return
*/
@RequestMapping("/removeFocusUser")
public ModelAndView removeFocusUser(HttpServletRequest request, String userId) {
ModelAndView mav = new ModelAndView();
User user = (User) request.getSession().getAttribute("user");// 当前登录用户
String userIds = user.getUserIds();
List<String> tempList = Arrays.asList(userIds.split(","));
List<String> lineIdList = new ArrayList<>(tempList);
lineIdList.remove(userId);
String ret = StringUtils.join(lineIdList, ",");
user.setUserIds(ret);
userService.save(user);
mav.setViewName("redirect:/viewFocusUser");
return mav;
}
/**
* 关注用户
* @param request
* @param userId
* @return
*/
@RequestMapping("/addFocusUser")
public ModelAndView addFocusUser(HttpServletRequest request, String userId) {
ModelAndView mav = new ModelAndView();
User user = (User) request.getSession().getAttribute("user");// 当前登录用户
String userIds = user.getUserIds();
List<String> tempList = Arrays.asList(userIds.split(","));
List<String> lineIdList = new ArrayList<>(tempList);
lineIdList.add(userId);
String ret = StringUtils.join(lineIdList, ",");
user.setUserIds(ret);
userService.save(user);
mav.setViewName("redirect:/viewFocusUser");
return mav;
}
@RequestMapping("/addFocusUser/{userId}")
public ModelAndView addFocusUser(@PathVariable(value = "userId", required = false) Integer userId,
HttpSession session) {
ModelAndView mav = new ModelAndView();
User user = (User) session.getAttribute("user");// 当前登录用户
String userIds = user.getUserIds();
List<String> tempList = new ArrayList<>();
if (userIds != null) {
tempList = Arrays.asList(userIds.split(","));
}
List<String> lineIdList = new ArrayList<>(tempList);
lineIdList.add(userId.toString());
String ret = StringUtils.join(lineIdList, ",");
user.setUserIds(ret);
userService.save(user);
mav.setViewName("redirect:/viewFocusUser");
return mav;
}
/**
* 取消收藏
* @param request
* @return
*/
@RequestMapping("/removeCollection")
public ModelAndView removeCollection(HttpServletRequest request, String artId) {
ModelAndView mav = new ModelAndView();
User user = (User) request.getSession().getAttribute("user");// 当前登录用户
String artIds = user.getArticleIds();
List<String> tempList = Arrays.asList(artIds.split(","));
List<String> lineIdList = new ArrayList<>(tempList);
lineIdList.remove(artId);
String ret = StringUtils.join(lineIdList, ",");
user.setArticleIds(ret);
userService.save(user);
mav.setViewName("redirect:/viewCollection");
return mav;
}
/**
* 收藏
* @param request
* @return
*/
@RequestMapping("/addCollection")
public ModelAndView addCollection(HttpServletRequest request, String artId) {
ModelAndView mav = new ModelAndView();
User user = (User) request.getSession().getAttribute("user");// 当前登录用户
// String artIds = user.getArticleIds();
// List<String> tempList= Arrays.asList(artIds.split(","));
// List<String> lineIdList = new ArrayList<>(tempList);
// lineIdList.add(artId);
// String ret = StringUtils.join(lineIdList, ",");
user.setArticleIds(artId);
userService.save(user);
mav.setViewName("redirect:/viewCollection");
return mav;
}
@RequestMapping("/delete")
public Map<String, Object> delete(Integer userId) {
Map<String, Object> resultMap = new HashMap<String, Object>();
userService.delete(userId);
resultMap.put("errorNo", 0);
return resultMap;
}
Основная конструкция базы данных:
**Имя базы данных: **teachingwebsite
**Версия документации: **V1.0.0
**Описание документа:**Описание дизайна таблицы базы данных
таблица t_admin
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | admin_id | int | 10 | 0 | N | Y |
2 | head_portrait | varchar | 200 | 0 | Y | N |
3 | password | varchar | 200 | 0 | Y | N |
4 | phone | varchar | 200 | 0 | Y | N |
5 | sex | varchar | 50 | 0 | Y | N |
6 | signature | varchar | 500 | 0 | Y | N |
7 | true_name | varchar | 200 | 0 | Y | N |
8 | user_name | varchar | 200 | 0 | Y | N |
таблица t_article
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | article_id | int | 10 | 0 | N | Y |
2 | author | varchar | 200 | 0 | N | N |
3 | click | int | 10 | 0 | Y | N |
4 | comment_num | int | 10 | 0 | Y | N |
5 | content | text | 65535 | 0 | Y | N |
6 | image_name | varchar | 255 | 0 | Y | N |
7 | is_original | int | 10 | 0 | Y | N |
8 | is_top | int | 10 | 0 | Y | N |
9 | publish_date | datetime | 19 | 0 | Y | N |
10 | title | varchar | 200 | 0 | N | N |
11 | classify_id | int | 10 | 0 | Y | N |
12 | user_id | int | 10 | 0 | Y | N |
таблица t_blogger
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | blogger_id | int | 10 | 0 | N | Y |
2 | head_portrait | varchar | 200 | 0 | Y | N |
3 | motto | varchar | 500 | 0 | Y | N |
4 | nick_name | varchar | 200 | 0 | Y | N |
5 | site | varchar | 200 | 0 | Y | N |
6 | signature | varchar | 500 | 0 | Y | N |
таблица t_classify
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | classify_id | int | 10 | 0 | N | Y |
2 | classify_name | varchar | 200 | 0 | N | N |
таблица t_comment
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | comment_id | int | 10 | 0 | N | Y |
2 | comment_date | datetime | 19 | 0 | Y | N |
3 | content | varchar | 500 | 0 | Y | N |
4 | article_id | int | 10 | 0 | Y | N |
5 | user_id | int | 10 | 0 | Y | N |
таблица t_link
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | link_id | int | 10 | 0 | N | Y |
2 | link_email | varchar | 200 | 0 | Y | N |
3 | link_name | varchar | 200 | 0 | Y | N |
4 | link_url | varchar | 200 | 0 | Y | N |
5 | order_num | int | 10 | 0 | Y | N |
таблица t_notice
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | notice_id | int | 10 | 0 | N | Y |
2 | grade | int | 10 | 0 | Y | N |
3 | content | varchar | 500 | 0 | Y | N |
4 | publish_date | datetime | 19 | 0 | Y | N |
таблица t_reply
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | reply_id | int | 10 | 0 | N | Y |
2 | content | varchar | 500 | 0 | Y | N |
3 | reply_date | datetime | 19 | 0 | Y | N |
4 | comment_id | int | 10 | 0 | Y | N |
5 | user_id | int | 10 | 0 | Y | N |
таблица t_timeline
Нумерация | название | тип данных | длина | Десятичные разряды | разрешить нули | первичный ключ |
---|---|---|---|---|---|---|
1 | timeline_id | int | 10 | 0 | N | Y |
2 | content | varchar | 200 | 0 | Y | N |
3 | publish_date | datetime | 19 | 0 | Y | N |
4 | month | varchar | 200 | 0 | Y | N |
5 | year | varchar | 200 | 0 | Y | N |
Резюме дизайн-проекта:
После недавнего освоения и изучения объектно-ориентированного программирования Java, знаний о интерфейсе и среды Java, а также развития этой системы образования и обучения в этот период я стал лучше осознавать важность изучения Java. При разработке этой системы я не только много раз экспериментировал, но и тестировал функциональность системы. В процессе реализации дипломной работы я приложил немало усилий для реализации Java, и очень рад, что в дальнейшем смогу использовать родственные технологии. В процессе я обнаружил, что в Java на самом деле есть много функций для изучения. Java также имеет инкапсуляцию, абстракцию, полиморфизм и наследование. Код можно повторно использовать и расширять, что значительно повышает общую скорость и эффективность разработки программного обеспечения. Поскольку я изучаю образовательные технологии, хорошее изучение языка Java имеет большое значение для моей будущей работы и расширения моих текущих знаний. Основной целью моего обучения программированию является совершенствование ключевых навыков и приемов программного решения моих практических задач.Объектно-ориентированное программирование Java является относительно практичным языком, а шаблон трехуровневой архитектуры MVC фреймворка SpringMVC, и дизайн Шаблоны, встречающиеся в инфраструктуре, концентрируют доступ к данным и логические операции в компонентах, что повышает возможность повторного использования и расширяемость системы. Масштабируемость системы значительно повышается. А владение внешними стилями jQuery, js, jsp, css позволяет мне добиться более точного макета веб-страницы, настройки стилей, шрифтов и т. д.
ВсеНравится, Избранное, Следите, КомментируйтеЭй, проверьте обновление статьи112/ 365 дней