Android Studio实现选课系统

一、项目概述

本次选课系统项目,用户角色分为学生和管理员。学生在用账号和密码登录成功后,会看到自己的课表信息,然后在选课列表里面进行选课,还可以查看和修改自己的个人信息。管理员有固定的账号和密码,成功登录后可以查看所有课程信息,可以添加或者删除课程信息,可以修改学生每门课的成绩,还可以添加新的学生信息。

底部导航栏,页面跳转传值,登录及注册界面,ListView,前后台,数据表的增删改查,涉及知识点很多。

二、开发环境

Android Studio的版本只要在3.6.1及以上都行,打开项目之后自动构建好就能运行。
在这里插入图片描述
Android Studio会利用Gradle工具自动构建好项目,非常快,如图所示:

在这里插入图片描述

三、项目结构

在Android视图下,可以看到项目的包名为com.android.student,结构图如下:

  • Activity包是修改密码、修改学生信息和添加课程的活动。
  • Adapter包放的是适配器文件,有列表的地方就有适配器,列表中每个子项怎么排列的,就是靠适配器来设置。
  • App包是登录活动、应用管理类。
  • Dao包放的java文件,主要进行数据库的增删改查操作,课程、成绩、学生和用户。
  • DataBase是数据库帮助类,在这里建库建表,初始化数据等。
  • Entity存放所有的实体类,也就是每一张数据表的结构。
  • ManFragment是管理员的三个碎片,StuFragment是学生的三个碎片。
    在这里插入图片描述

每一个Activity或Fragment都对应一个layout文件,比较简单,主要逻辑其实都在Java文件中,layout只是布局显示。

四、详细设计

1、主页面

主页面非常简单,就是引用的Google推荐的BottomNavigationView作为底部导航栏,然后中间是ViewPager,也可以放Fragment,就是用来切换碎片。完整代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.android.student.Activity.MainActivity">

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/colorPrimary"
        app:itemIconTint="@drawable/bottom_navigation_color_selector"
        app:itemTextColor="@drawable/bottom_navigation_color_selector"
        app:menu="@menu/menu_bottom_navigation" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom_navigation"
        android:layout_alignParentTop="true"
       />/ app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</RelativeLayout>

在这里插入图片描述

2、学生修改信息

学生有3个页面,这里介绍下修改信息页面。具体实现很简单,使用列表形式显示学生的个人信息,所以最上面是RecyclerView,然后是一个Button,用来触发修改的事件。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical"
    tools:context="com.android.student.StuFragment.ThirdFragment">

    <!-- TODO: Update blank fragment layout -->
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/click"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="修改个人信息"
        android:textSize="25sp"
        android:layout_marginBottom="30dp"
        android:textColor="@color/DarkCyan"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

在这里插入图片描述

3、管理员修改成绩

父布局是LinearLayout,顶部是个TextView,下面是3个LinearLayout竖直对齐放置,每个LinearLayout内部的对齐方式是horizontal,包含一个TextView和一个EditText。inputType都是textPersonName,即汉字输入。底部是个LinearLayout,两个Button设置了textSize和textColor。每个LinearLayout都设置了margin,让布局看起来更加合适。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical"
    tools:context="com.android.student.Activity.StudentChangeActivity">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="修改学生成绩"
        android:textSize="20sp"
        android:layout_marginBottom="100dp"
        android:layout_gravity="center_horizontal"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:text="学    号:" />
        <EditText
            android:id="@+id/editText"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:text="课程号:" />
        <EditText
            android:id="@+id/editText2"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:text="成    绩:" />
        <EditText
            android:id="@+id/editText3"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal"
        android:layout_marginTop="50dp">
        <Button
            android:id="@+id/commit"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="提交"
            android:textSize="20sp"
            android:textColor="@color/DarkCyan" />
        <Button
            android:id="@+id/cancel_s"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="重输"
            android:textSize="20sp"
            android:textColor="@color/DarkCyan" />
    </LinearLayout>
</LinearLayout>

在这里插入图片描述

4、数据库

选课系统一共四张表:学生表、课程表、成绩表、日志表。在MyDatabaseHelper中将建表语句定义好,并且将待插入的数据准备好,在成功登录到主界面时,就会创建好数据库,插入数据到表中,然后进行我们的增删改查功能。建表语句如下:

private static final int DB_VERSION = 1;
private static final String DB_NAME = "StudentSystem.db";
public static final String CREATE_STUDENT = "create table student(" +
        "id int  primary key," +
        "name text not null," +
        "sex  text  not null," +
        "age  int  not null,"+
        "phone text not null)";
public static final String CREATE_COURSE = "create table course(" +
        "course_id int primary key," +
        "course_name text unique," +
        "credit int  not null)" ;
public static  final String CREATE_SCORE = "create table score(" +
        "student_id int not null," +
        "course_id int not null," +
        "grade int," +
        "constraint  score_PK primary key(student_id,course_id)," +
        "constraint fk_SID foreign key(student_id) references student(id)on delete cascade," +
        "constraint fk_CID foreign key(course_id) references course(course_id)on delete cascade)";
public static final String CREATE_LOG = "create table log(" +
        "student_id  int primary key," +
        "password   text  not null," +
        "constraint fk_ID foreign key(student_id) references student(id) on delete cascade)";

五、项目演示

1、运行项目,经过Starting AVD、Install、Launch succeeded一系列过程后,模拟器弹出应用的登录界面:

在这里插入图片描述

2、输入学生身份的账号和密码,所有的账号和密码都在MyDatabaseHelper.java文件里面。这里选取一位学生(账号:10001,密码:123456),然后点击登录,进入系统主界面,可以看到每门课的名称、学号、学分和成绩:

在这里插入图片描述

3、点击下面菜单栏的【选课】,进入选课界面,这里可以看到自己没有选择过的课程的所有信息,点击一门课就可以将它选择进自己的课表:

在这里插入图片描述

4、点击下面菜单栏的【个人信息】,进入个人信息界面:

在这里插入图片描述

5、点击【修改个人信息】,进入修改界面,输入信息后保存即可:

在这里插入图片描述
在这里插入图片描述

6、退出系统,重新打开应用,用管理员的账号和密码登录进去(账号:00000,密码:000000),然后会显示【课表】界面:

在这里插入图片描述

7、点击【添加/删除课程】,可以对课程信息进行增删操作,课程号不能为空:

在这里插入图片描述

8、进入【选课】界面,在这里输入学生学号和课程号还有这门课的成绩,然后提交即可修改学生成绩,点击【重输】会清空当前输入的内容:

在这里插入图片描述

9、进入【个人信息】界面,在这里可以添加学生信息,作为管理员肯定可以添加用户的。输入完信息后点击【添加学生】则添加成功,点击【重输】是清空当前输入的内容:

在这里插入图片描述

六、源码获取

♻️下面两种方式都可以获取源代码
1️⃣ 点击直接下载 Android Studio 选课系统
2️⃣关注公众号《 萌新加油站 》,后台回复: 选课

🚀这有你错过的精彩内容
Android Studio实现健身系统
Android Studio实现外卖订餐系统
Android Studio实现考试管理系统
Android Studio实现天气预报系统
Android Studio实现图书馆订座系统

其实我们只是想找一个谈得来、合脾性、在一起舒坦、分开久了有点想念、安静久了想闹腾一下、吵架了又立马会后悔认输的人 。爱情如此,友情同理 ​​​​。

  • 35
    点赞
  • 283
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 57
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

振华OPPO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值