一、项目概述
本次选课系统项目,用户角色分为学生和管理员。学生在用账号和密码登录成功后,会看到自己的课表信息,然后在选课列表里面进行选课,还可以查看和修改自己的个人信息。管理员有固定的账号和密码,成功登录后可以查看所有课程信息,可以添加或者删除课程信息,可以修改学生每门课的成绩,还可以添加新的学生信息。
| 底部导航栏,页面跳转传值,登录及注册,列表,前后台,数据库的增删改查等等,涵盖了很多安卓开发的基础知识点。 |
|---|
二、开发环境
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、进入【个人信息】界面,在这里可以添加学生信息,作为管理员肯定可以添加用户的。输入完信息后点击【添加学生】则添加成功,点击【重输】是清空当前输入的内容:

六、源码获取
想要立即拥有这篇文章的源代码?没问题!两种方式任你选:💻直接点击下方CSDN专属下载链接,轻松get√;🎁或者,只需动动手指指关注公众号《萌新加油站》,回复下方关键词即刻解锁!快来探索你的技术宝藏,开启编程新旅程吧!🚀
| 1️⃣直接点击右侧链接下载源代码 | Android选课系统源码 |
|---|---|
| 2️⃣直接点击右侧链接下载课设报告 | Android选课系统报告 |
| 3️⃣关注公众号《 萌新加油站 》 | 后台回复:选课 |
| 🚀这有你错过的精彩内容 |
|---|
| Android Studio实现健身系统 |
| Android Studio实现外卖订餐系统 |
| Android Studio实现考试管理系统 |
| Android Studio实现天气预报系统 |
| Android Studio实现图书馆订座系统 |
因此,不难想象,由邪淫而导致的种种恶报,如影随形,迅速而至,就可以理解了。换句话说,这是伤天理、坏人伦、天怒人怨之事。这就不是个人的小事,也不是无人知、没人管的了。天地鬼神负有赏罚之责,而赏罚分明,无非依据人的行为而定。因此,对于邪淫之事,不可抱有侥幸之心,当深知其害。
2251

被折叠的 条评论
为什么被折叠?



