博主主页:猫头鹰源码
博主简介:Java领域优质创作者、博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战
主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询
文末联系获取
项目介绍:
本系统2022年4月创作完成,该系统包含小程序端和管理端,适合选题:小程序、学生成绩、学生选课、成绩管理。系统小程序端采用uniapp+uview实现,小程序接口和管理端采用springboot+mybatis开发,使用mysql数据库,下面是大概的功能。
项目功能:
小程序端:
学生登录注册、查看个人信息、修改个人信息、
选课退课
学生可以查看学期课表
老师登录注册、查看个人信息、修改个人信息、查看学期课表
老师可以对选课学生进行打分
管理端:
用户管理:用户信息的维护
课程管理:添加课程信息(学期,学分,地点,课程名,任课教师)
咨询列表:可查看学生的提问,并给出回复
管理员管理:维护管理员信息
数据库表结构文档:
系统包含技术:
管理端:springboot、mybatis、layui
小程序端:uniapp、uview、js、css等
开发工具:idea/hbuilder
数据库:mysql 5.7
JDK版本:jdk1.8
部分截图说明:
下面是登录
教师首页
教师个人中心
教师查看课程详情
学生选课
学生个人中心
学生选课信息
修改信息
后台-登录
后台-首页
后台-教师管理
后台-课程管理
部分代码:
拦截器
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if(session.getAttribute("ad") != null){
return true;
}
// 不符合条件的给出提示信息,并转发到主页面
request.setAttribute("msg", "您还没有登录,请先登录!");
request.getRequestDispatcher("/gologin.jsp").forward(request, response);
//返回true通过,返回false拦截
return false;
}
登录部分
/**
* 登录
* 将提交数据(username,password)写入Admin对象
*/
@RequestMapping(value = "/login")
public String login(Admin admin, Model model, HttpSession session, HttpServletRequest request) {
if(admin.getUsername()==null || admin.getUsername().length()<=0 ){
model.addAttribute("msg", "请输入手机号!");
return "login";
}
if(admin.getPassword()==null || admin.getPassword().length()<1){
model.addAttribute("msg", "请输入密码!");
return "login";
}
Map mp = new HashMap();
mp.put("username",admin.getUsername());
mp.put("password",admin.getPassword());
List<Admin> ad = adminService.queryFilter(mp);
if(ad!=null && ad.size()==1){
session.setAttribute("ad", ad.get(0));
session.setAttribute("type", "01");
return "homepage";
}else{
model.addAttribute("msg", "请确定账户信息是否正确!");
return "login";
}
}
/**
* 退出登录
*/
@RequestMapping(value = "/loginOut")
public String loginOut(HttpSession session) {
session.invalidate();
return "login";
}
/**
* 查询个人信息
*/
@RequestMapping(value = "/info")
public String info(HttpServletRequest request) {
return "queryInfo";
}
/**
* 进入修改
*/
@RequestMapping(value = "/updateInfo")
public String updateInfo(HttpServletRequest request) {
return "updateInfo";
}
/**
* 修改信息
*/
@RequestMapping( value = "/updateInfoAdmin", method = RequestMethod.POST)
@ResponseBody
public String updateInfoAdmin(Admin admin, Model model, HttpServletRequest request, HttpSession session1) {
HttpSession session = request.getSession();
if(session.getAttribute("ad") == null){
session.setAttribute("msg", "对不起,请登录!");
return "202";
}
if(admin.getPassword().length()<1){
return "204";
}
Admin admin1 = (Admin) session.getAttribute("ad");
if(!admin1.getPassword().equals(admin.getPassword())){
return "201";
}
if(!"".equals(admin.getPasswords())){
admin.setPassword(admin.getPasswords());
}
adminService.updateAdmin(admin);
return "200";
}
课程组件
<template>
<view class="list" v-if="list.length > 0">
<view @click="goDetail(item.id)" class="item" v-for="(item, index) in list" :key="index" hover-class="none">
<view class="info">
<view class="text">
<view class="title">课程名称:{{item.name}}</view>
<view class="other">
<view class="left">
<view class="time">学期:{{item.term}}</view>
</view>
<view class="right">
<view class="time">任课老师:{{item.tname}}</view>
</view>
</view>
</view>
</view>
<view class="line"></view>
</view>
</view>
</template>
<script>
export default {
name: 'courseList',
props: {
list: {
type: Array,
default: function(e) {
return [];
}
}
},
data() {
return {
}
},
methods:{
goDetail(id){
uni.navigateTo({
url: '/pages/index/detail?id='+id
})
}
}
}
</script>
<style scoped lang="scss">
/*列表*/
.list {
margin-top: 2rpx;
.item {
padding: 40rpx 24rpx 0 24rpx;
.info {
display: flex;
flex-direction: row;
justify-content: space-between;
padding-bottom: 4rpx;
.text {
flex-grow: 1;
flex-shrink: 1;
display: flex;
flex-direction: column;
margin-right: 40rpx;
.title {
flex-grow: 1;
flex-shrink: 1;
font-size: 34rpx;
line-height: 1.5;
display: -webkit-box;
text-overflow: ellipsis;
word-break: break-all;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
height: 72rpx;
margin-bottom: 8rpx;
}
.other {
flex-grow: 1;
flex-shrink: 1;
display: flex;
align-items: center;
font-size: 28rpx;
color: #999;
line-height: normal;
.left {
display: flex;
flex-grow: 1;
flex-shrink: 1;
.source {
display: -webkit-box;
text-overflow: ellipsis;
word-break: break-all;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
width: 140rpx;
margin-right: 16rpx;
}
}
.right {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex-grow: 0;
flex-shrink: 0;
margin-right: 5rpx;
image {
flex-grow: 1;
flex-shrink: 1;
width: 28rpx;
height: 28rpx;
margin-right: 12rpx;
}
text {
flex-grow: 1;
flex-shrink: 1;
margin-top: -6rpx;
}
}
}
}
.photo {
image {
height: 170rpx;
width: 222rpx;
border-radius: 10rpx;
}
}
}
.line {
display: bock;
width: 100%;
height: 1rpx;
margin-top: 22rpx;
background: #e8e8e8;
}
&:last-child {
.line {
//display: none;
}
//padding-bottom: 30rpx;
}
}
}
</style>
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。
好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~