基于Android的班级管理系统(Android studio+mysql)

 博主介绍:本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮助到您;

🍅文章末尾获取源码下载方式🍅

源码下载以及详细的配置说明

Android毕业设计源码下载以及配置说明

一、项目介绍

学生选课,学生注册登录、老师按名字查询学生、老师查询全部学生信息、老师登录注册

1:学生登录注册需要可以修改密码这个功能然后跳转到学生的个人中心可以选课和查看自己成绩,

2:老师登录注册也需要可以修改密码这个功能然后跳转到老师的工作界面可以查看学生成绩

3:可以查看全部学生的信息可以按名字或者学号查找学生,还可以修改学生信息

二、运行环境

1:客户端使用Android stuido进行开发;
2:服务端后台使用Myeclipse2014进行开发;
3:mysql数据库进行数据存储;
4:需要jdk1.7以上
5:使用雷电模拟器或者Androidstuio自带的模拟器进行运行

三、使用技术

总体设计逻辑和思路:
1:先设计数据库表文件
2:写服务端jsp页面以及写api接口给客户端提供数据
3:完成后台服务端的数据交互,也就是jsp页面数据的存储和显示
4:进行客户端页面的开发;
5:进行客户端对api接口的调用,也就是获取数据库的数据以及在客户端进行显示

移动端:
1:使用android原生控件以及xml布局文件来完成界面的显示
2:使用java代码完成功能的数据和逻辑交互
3:使用http网络请求完成数据的请求;
4:使用json数据解析完成客户端数据的回调和显示

服务端后台:
1:使用mysql完成数据的存储
2:使用jdbc完成数据库和代码的逻辑交互
3:使用jsp完成网页数据的显示
4:使用java代码完成api接口的编写以及以及数据的回调

四、数据库设计

/*
Navicat MySQL Data Transfer

Source Server         : mydb
Source Server Version : 50537
Source Host           : localhost:3306
Source Database       : attendancedb

Target Server Type    : MYSQL
Target Server Version : 50537
File Encoding         : 65001

Date: 2018-11-07 19:23:44
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for coursemsg
-- ----------------------------
DROP TABLE IF EXISTS `coursemsg`;
CREATE TABLE `coursemsg` (
  `courseId` int(50) NOT NULL AUTO_INCREMENT,
  `courseName` varchar(255) DEFAULT NULL,
  `courseAddress` varchar(255) DEFAULT NULL,
  `courseTime` varchar(200) DEFAULT NULL,
  `courseMessage` varchar(1500) DEFAULT NULL,
  `courseTeaId` varchar(100) DEFAULT NULL,
  `courseTeaName` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`courseId`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of coursemsg
-- ----------------------------
INSERT INTO `coursemsg` VALUES ('10', '大学英语', '教学楼一号楼101室', '2018-11-07 16:30', '这次课程的重点是帮助大家刚好的学习好这门课程,希望大家踊跃报名参加学习和讨论;', '114', '王老师');
INSERT INTO `coursemsg` VALUES ('11', '计算机基础', '教学楼一号楼101室', '2018-11-07 17:02', '这次课程的重点是帮助大家刚好的学习好这门课程,希望大家踊跃报名参加学习和讨论;', '114', '王老师');
INSERT INTO `coursemsg` VALUES ('12', '编程基础', '教学楼一号楼101室', '2018-11-08 17:03', '这次课程的重点是帮助大家刚好的学习好这门课程,希望大家踊跃报名参加学习和讨论;', '114', '王老师');
INSERT INTO `coursemsg` VALUES ('13', '大学英语101', '教学楼一号楼101室', '2018-11-07 19:17', '这次课程的重点是帮助大家刚好的学习好这门课程,希望大家踊跃报名参加学习和讨论;', '117', '张老师');
INSERT INTO `coursemsg` VALUES ('14', '大学数学', '教学楼一号楼101室', '2018-11-07 21:17', '这次课程的重点是帮助大家刚好的学习好这门课程,希望大家踊跃报名参加学习和讨论;', '117', '张老师');

-- ----------------------------
-- Table structure for electivetb
-- ----------------------------
DROP TABLE IF EXISTS `electivetb`;
CREATE TABLE `electivetb` (
  `electiveId` int(50) NOT NULL AUTO_INCREMENT,
  `electiveCourseId` varchar(50) DEFAULT NULL,
  `electiveUserId` varchar(100) DEFAULT NULL,
  `electiveUserName` varchar(255) DEFAULT NULL,
  `electiveScore` varchar(255) DEFAULT NULL,
  `electiveTime` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`electiveId`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of electivetb
-- ----------------------------
INSERT INTO `electivetb` VALUES ('1', '11', '113', '杨同学', '99', '2018-11-07 17:29');
INSERT INTO `electivetb` VALUES ('2', '12', '113', '杨同学', '69', '2018-11-07 17:29');
INSERT INTO `electivetb` VALUES ('3', '11', '115', '张同学', '95', '2018-11-07 17:40');
INSERT INTO `electivetb` VALUES ('4', '12', '115', '张同学', '88', '2018-11-07 17:40');
INSERT INTO `electivetb` VALUES ('5', '10', '113', '杨同学', null, '2018-11-07 18:07');
INSERT INTO `electivetb` VALUES ('6', '13', '116', '小明同学', '99', '2018-11-07 19:18');
INSERT INTO `electivetb` VALUES ('7', '13', '113', '杨同学', '60', '2018-11-07 19:18');

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `userId` int(255) NOT NULL AUTO_INCREMENT,
  `userName` varchar(200) CHARACTER SET utf8 NOT NULL,
  `userPhone` varchar(100) CHARACTER SET utf8 NOT NULL,
  `userPswd` varchar(200) CHARACTER SET utf8 NOT NULL,
  `userType` varchar(255) DEFAULT NULL,
  `userNo` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
  `userTime` varchar(300) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=118 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('113', '杨同学', '15249243002', '123456', '2', 'Stu20181107144701', '2018-11-07 14:47');
INSERT INTO `user` VALUES ('114', '王老师', '15249241116', '123456', '1', 'Tea20181107144720', '2018-11-07 14:47');
INSERT INTO `user` VALUES ('115', '张同学', '15249248989', '123456', '2', 'Stu20181107174036', '2018-11-07 17:40');
INSERT INTO `user` VALUES ('116', '小明同学', '15249241111', '123456', '2', 'Stu20181107191608', '2018-11-07 19:16');
INSERT INTO `user` VALUES ('117', '张老师', '15249242222', '123654', '1', 'Tea20181107191627', '2018-11-07 19:16');

五、部分代码

1:课程详情

public class TeaLookCourseMessageActivity extends BaseActivity {
    // title
    private TextView mTvTitle;
    // 返回
    private ImageView mIvBack;
    // 查询按钮
    private TextView mtvtitle;
    private TextView mtvPhone;
    private TextView mtvCompanyName;
    private TextView mtvcontentPostion;

    private List<CourseLookUserModel>  listMsg = new ArrayList<CourseLookUserModel>();
    private TextView mIvStu;

    private CourseModel courseModel;

    private ListviewForScrollView mListMessage;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tealookcourse_msg);

    }

    @Override
    public void initWidget() {


        mListMessage = (ListviewForScrollView) findViewById(R.id.mListMessage);
        mtvPhone = (TextView) findViewById(R.id.mtvPhone);
        mtvCompanyName = (TextView) findViewById(R.id.mtvCompanyName);
        mtvcontentPostion = (TextView) findViewById(R.id.mtvcontentPostion);

        mIvStu = (TextView) findViewById(R.id.mIvStu);
        mIvStu.setOnClickListener(this);
        mIvStu.setVisibility(View.GONE);

        mtvtitle = (TextView) findViewById(R.id.mtvtitle);

        mIvBack = (ImageView) findViewById(R.id.mIvBack);
        mTvTitle = (TextView) findViewById(R.id.mTvTitle);
        mTvTitle.setText("课程详情");
        mIvBack.setVisibility(View.VISIBLE);
        mIvBack.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.mIvBack:
                TeaLookCourseMessageActivity.this.finish();
                break;

        }
    }

    @Override
    public void initData() {

        courseModel = (CourseModel) this.getIntent().getSerializableExtra("msg");
        mtvtitle.setText(courseModel.getCourseName());
        mtvPhone.setText("上课时间:" + courseModel.getCourseTime());
        mtvCompanyName.setText("上课地点:" + courseModel.getCourseAddress());
        mtvcontentPostion.setText("        " + courseModel.getCourseMessage());
        addElective(true);


        mListMessage.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(TeaLookCourseMessageActivity.this, ScoreCreateActivity.class);
                intent.putExtra("msg",listMsg.get(position));
                startActivity(intent);
            }
        });
    }

    private void addElective(boolean isShow) {
        AjaxParams params = new AjaxParams();
        params.put("action_flag", "listCourseUserLook");
        params.put("electiveCourseId", courseModel.getCourseId() + "");
        httpPost(Consts.URL + Consts.APP.CourseAction, params, Consts.actionId.resultFlag, isShow, "正在提交...");
    }

    @Override
    protected void callBackSuccess(ResponseEntry entry, int actionId) {
        super.callBackSuccess(entry, actionId);

        if (null != entry.getData() && !TextUtils.isEmpty(entry.getData())) {

            String jsonMsg = entry.getData().substring(1, entry.getData().length() - 1);
            if (null != jsonMsg && !TextUtils.isEmpty(jsonMsg)) {
                listMsg = mGson.fromJson(entry.getData(), new TypeToken<List<CourseLookUserModel>>() {
                }.getType());
                UserListAdapter userListAdapter = new UserListAdapter(TeaLookCourseMessageActivity.this, listMsg);
                mListMessage.setAdapter(userListAdapter);
            } else {
            }
        }


    }


    @Override
    protected void onResume() {
        super.onResume();

        initWidget();
        initData();
    }
}
2:学生信息

 


public class StudentMessageActivity extends BaseActivity {

	// 标题
	private TextView mTvTitle;
	// 返回
	private ImageView mIvBack;

	private Button mCQ;
	private Button mCD;
	private Button mQJ;
	private Button mKK;
	private ImageView stuImage;
	private TextView stuName;
	private TextView stuTime;
	private  Button courseMessage;

	private ImageView mIvStu;

	private StudentModel studentModel;
	private List<CourseModel>  listMsg = new ArrayList<CourseModel>();
	private DialogListMsg dialogListMsg;
	private int posIndex=0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_student_message);
		initWidget();
		initData();
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
			case R.id.mIvBack:
				finish();
				break;
			case R.id.mExit:
				Intent intent = new Intent(StudentMessageActivity.this, LoginActivity.class);
				startActivity(intent);
				finish();
				break;


			case R.id.mCQ:
				AttendanceAction(true,1);
				break;

			case R.id.mCD:
				AttendanceAction(true,2);
				break;
			case R.id.mQJ:
				AttendanceAction(true,3);
				break;
			case R.id.mKK:
				AttendanceAction(true,4);
				break;
			case R.id.courseMessage:
				dialogListMsg.Show();
				break;


		}
	}

	@Override
	public void initWidget() {


		dialogListMsg = new DialogListMsg(this);
		dialogListMsg.setTitle().setText("请选择课程");


		mIvStu = (ImageView) findViewById(R.id.mIvStu);

		stuImage = (ImageView) findViewById(R.id.stuImage);
		stuName = (TextView) findViewById(R.id.stuName);
		stuTime = (TextView) findViewById(R.id.stuTime);

		mCQ = (Button) findViewById(R.id.mCQ);
		mCD = (Button) findViewById(R.id.mCD);
		mQJ = (Button) findViewById(R.id.mQJ);
		mKK = (Button) findViewById(R.id.mKK);
		courseMessage = (Button) findViewById(R.id.courseMessage);
		mIvBack = (ImageView) findViewById(R.id.mIvBack);
		mTvTitle = (TextView) findViewById(R.id.mTvTitle);

		mIvStu.setVisibility(View.VISIBLE);
		mIvBack.setVisibility(View.VISIBLE);
		mIvBack.setOnClickListener(this);

		mTvTitle.setText("学生信息");
		mIvStu.setOnClickListener(this);
		mCQ.setOnClickListener(this);
		mCD.setOnClickListener(this);
		mQJ.setOnClickListener(this);
		mKK.setOnClickListener(this);
		courseMessage.setOnClickListener(this);
	}



	@Override
	public void initData() {
		userAction(false);
		studentModel = (StudentModel)this.getIntent().getSerializableExtra("msg");

		stuName = (TextView) findViewById(R.id.stuName);
		stuTime = (TextView) findViewById(R.id.stuTime);

		stuName.setText(studentModel.getStudentName());
		stuTime.setText(studentModel.getStudentTime());
		if(!TextUtils.isEmpty(studentModel.getStudentImg())){
			Picasso.with(this).load(Consts.URL_IMAGE+studentModel.getStudentImg()).placeholder(R.drawable.default_drawable_show_pictrue)
					.into(stuImage);
		}


		dialogListMsg.show_listview().setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				posIndex = position;
				courseMessage.setText(listMsg.get(position).getCourseName());
				dialogListMsg.Close();
			}
		});


		dialogListMsg.submit_no().setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				dialogListMsg.Close();
			}
		});
	}

	private void userAction(boolean isShow) {
		AjaxParams params = new AjaxParams();
		params.put("action_flag", "listPhoneMessage");
		httpPost(Consts.URL + Consts.APP.CourseAction, params, Consts.actionId.resultCode, isShow, "正在加载...");
	}

	private void AttendanceAction(boolean isShow,int attendanceType) {
		AjaxParams params = new AjaxParams();
		params.put("action_flag", "addMessage");
		params.put("attendanceStuId", studentModel.getStudentId());
		params.put("attendanceStuName", studentModel.getStudentName());
		params.put("attendanceType", attendanceType+"");
		params.put("attendanceCourseId",listMsg.get(posIndex).getCourseId());
		params.put("attendanceCourseName",listMsg.get(posIndex).getCourseName());
		httpPost(Consts.URL + Consts.APP.AttendanceAction, params, Consts.actionId.resultFlag, isShow, "正在加载...");
	}

	@Override
	protected void callBackSuccess(ResponseEntry entry, int actionId) {
		super.callBackSuccess(entry, actionId);

		switch (actionId) {

			case Consts.actionId.resultCode:
				if (null != entry.getData() && !TextUtils.isEmpty(entry.getData())) {

					String jsonMsg = entry.getData().substring(1, entry.getData().length() - 1);
					if (null != jsonMsg && !TextUtils.isEmpty(jsonMsg)) {
						listMsg = mGson.fromJson(entry.getData(), new TypeToken<List<CourseModel>>() {
						}.getType());
						TypeAdapter typeAdapter = new TypeAdapter(StudentMessageActivity.this);
						typeAdapter.setData(listMsg);
						dialogListMsg.show_listview().setAdapter(typeAdapter);
					} else {
					}
				}
				break;
			case Consts.actionId.resultFlag:
				ToastUtil.show(StudentMessageActivity.this, entry.getRepMsg());
				break;

		}

	}

	@Override
	protected void callBackAllFailure(String strMsg, int actionId) {
		super.callBackAllFailure(strMsg, actionId);

		ToastUtil.show(StudentMessageActivity.this, strMsg);

	}

}

六、浏览更多Android毕业设计

毕业设计-基于android的租房信息发布平台的APP_信息发布app源码_Android毕业设计源码的博客-CSDN博客

毕业设计-基于android选课系统的设计与实现_android学生选课系统_Android毕业设计源码的博客-CSDN博客

毕业设计之校园一卡通管理系统的设计与实现_一卡通管理系统实现_Android毕业设计源码的博客-CSDN博客

基于Android的校园二手闲置物品交易系统设计与实现_基于android的二手交易平台_Android毕业设计源码的博客-CSDN博客

基于androidstudio校园快递APP系统的设计与实现_android studio论文_Android毕业设计源码的博客-CSDN博客

基于android的商城购物定制APP_安卓开发购物app_Android毕业设计源码的博客-CSDN博客

更多毕业设计可以浏览我的个人主页哦!

七、源码下载

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻

1:V信搜索“毕业设计小码哥”,也可以关注下方公众号,然后点击菜单栏“源码说明-源码下载”

2:点击小程序下面截图​

3:选择Android就可以看到下载源码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android毕业设计源码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值