Android Studio学生选课系统:零基础入门实战项目 简介这份资源是面向Android初学者与在校学生的学生选课系统完整工程源码基于Android Studio开发可用于课程设计、毕业设计或Android入门实战练习。压缩包共620个文件约56.75MB以flat、json、xml、dex、class等构建与编译产物为主另含java源码、properties配置、gradle构建脚本及少量png、jpg界面素材完整保留了app模块、Gradle构建体系与本地配置目录结构贴近真实项目。资源围绕Android Studio、Gradle构建、RecyclerView课程列表、SQLite选课数据存储及网络通信等知识点展开读者可据此理解选课系统的界面设计、数据持久化与依赖管理流程并对照build.gradle、AndroidManifest.xml等配置排查构建问题。目前已有2086人学习下载适合希望从零跑通一个安卓项目、积累工程经验的学习者参考。1. 从零看懂android studio 学生选课系统到底是什么很多刚接触编程的同学第一次听到「android studio 学生选课系统」这串词脑子里会冒出三个问号android studio 是个啥选课系统我天天用跟我有什么关系这两样凑一起是要我干嘛其实把它拆开就很好理解了。android studio 是一个专门用来写安卓手机 App 的工具你可以把它想成一个「做手机软件的厨房」锅碗瓢盆都给你备好了而学生选课系统就是我们要在这个厨房里做出来的一道菜——一个能在手机上点开、登录、看到课程列表、点一下就能选上课的小应用。那为什么零基础的人要拿它练手因为选课系统这个题目特别「刚刚好」。它不像做个聊天软件那样要处理实时消息也不像做个游戏那样要懂图形渲染它只需要你搞定三件最基础的事把数据存起来、把数据显示在屏幕上、让用户点按钮能触发操作。这三件事恰恰是所有 App 的骨架。你把选课系统跑通了等于把安卓开发最核心的那套流程走了一遍后面再学别的心里就有底了。这份资源适合谁适合刚学完一点点编程基础、想动手做个完整小项目、但一打开 android studio 就不知道从哪点起的新手。它不要求你会高深算法只要求你愿意跟着步骤一步步敲。2. 为什么值得学选课系统是安卓入门的「最小完整闭环」2.1 它把安卓开发的四大件全串起来了学安卓最怕什么最怕学了一堆零散知识却不知道它们怎么拼在一起。今天学个按钮怎么摆明天学个数据怎么存学完还是做不出东西。选课系统这个项目的好处就是它天然需要你把安卓开发的几个核心部件都用上而且用得明明白白。第一个部件是界面也就是你在手机上看到的样子。选课系统至少要有登录页、课程列表页可能还有一个「我的课程」页。这就逼着你去理解安卓里「一个页面就是一个 Activity」这件事。第二个部件是数据课程信息从哪来总不能每次打开 App 都手动输一遍。这就逼着你去碰数据存储哪怕只是用一个最简单的本地数据库或者一个写死的列表。第三个部件是交互用户点了「选课」按钮界面得给个反应是弹个提示还是把按钮变成「已选」这就逼着你去学事件监听。第四个部件是页面跳转登录成功后要跳到课程列表这就逼着你去学 Intent。你看一个看起来简单的选课系统其实把安卓入门阶段最该掌握的几样东西全装进去了。我第一次学的时候就是东学一块西学一块结果连一个能从头点到尾的 App 都做不出来那种挫败感特别强。后来换成跟着一个完整小项目走才真正把知识串成了线。选课系统就是那条线它不花哨但足够完整。2.2 需求简单意味着你能把注意力放在「流程」上很多新手选项目容易犯一个错一上来就挑个「看起来很酷」的比如做个短视频 App、做个外卖平台。结果光是需求就复杂到理不清更别说写代码了。选课系统的业务逻辑简单到可以用一句话说清学生登录看到课程选课选课记录保存下来。没有支付没有实时推送没有复杂的权限体系。这种简单反而是优势。因为你的注意力不用被业务逻辑分散可以全部放在「安卓开发的标准流程」上怎么建项目、怎么在布局文件里摆控件、怎么在代码里找到这个控件、怎么给它加点击事件、怎么把数据从一个页面传到另一个页面。这些流程走顺了你以后做任何 App 都是同一套动作。我带过的新手里凡是老老实实把一个小系统从头到尾做出来的后面进步都明显更快因为他们心里有了一张「地图」知道一个功能从想法到落地要经过哪几步。2.3 它能让你第一次体会到「我做出了一个能用的东西」零基础学编程最需要的是什么是正反馈。你对着教程敲了三天代码如果屏幕上什么都没出现很容易就放弃了。但选课系统不一样你每完成一步都能立刻看到效果布局写好了预览窗口里就出现了登录框按钮事件写好了点一下真的弹出了提示数据存好了关掉 App 再打开之前选的课还在。这种「看得见摸得着」的反馈是支撑你走下去的关键。而且这个项目做完你是可以拿给别人看的。哪怕它很简陋但它是一个完整的、能安装到手机上、能点能用的东西。这种成就感比做一百道练习题都管用。入门阶段信心比知识更稀缺选课系统恰好能给你这份信心。3. 动手之前把环境和第一个页面跑起来3.1 先装好 android studio别在这一步卡住入门的第一道坎往往不是写代码而是装环境。android studio 的安装包比较大下载和首次启动都需要一点耐心。你去官网下载对应你操作系统的版本一路点下一步就行。安装过程中它会自动帮你装好安卓 SDK也就是开发安卓 App 需要的一套工具包这一步不用你手动干预。装完之后第一次打开它会引导你创建一个新项目。这里有个小建议入门阶段选「Empty Views Activity」这个模板不要选带 Compose 的模板。原因很简单网上绝大多数基础教程、你遇到问题时能搜到的答案都是基于传统视图体系的选这个模板能让你少走很多弯路。项目名字随便起比如叫 CourseDemo语言选 Java 或 Kotlin 都行。如果你完全没接触过 Kotlin选 Java 会更稳一些因为它的语法对新手更友好资料也更多。创建完成后你会看到左边一排文件目录中间是代码编辑区。别被吓到入门阶段你真正需要关心的文件就那么几个布局文件在res/layout/下面页面逻辑代码在java/你的包名/下面。其他的先不用管它们不影响你做出第一个能跑的页面。提示第一次打开项目时底部会有一个进度条在跑那是在下载依赖和同步项目耐心等它跑完不要急着点别的按钮否则容易卡住。3.2 写第一个布局一个登录框长什么样环境好了我们来写第一个能看见的东西——登录页面。安卓的界面是用 XML 描述的你可以把它理解成「给屏幕排版的一份说明书」。打开res/layout/activity_main.xml把里面的内容换成下面这样?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android android:layout_widthmatch_parent android:layout_heightmatch_parent android:orientationvertical android:padding24dp !-- 标题文字 -- TextView android:layout_widthwrap_content android:layout_heightwrap_content android:text学生选课系统 android:textSize24sp / !-- 学号输入框 -- EditText android:idid/etStudentId android:layout_widthmatch_parent android:layout_heightwrap_content android:hint请输入学号 / !-- 登录按钮 -- Button android:idid/btnLogin android:layout_widthmatch_parent android:layout_heightwrap_content android:text登录 / /LinearLayout这段代码的意思很直白。最外层的LinearLayout是一个「竖着排队」的容器里面放的东西会从上到下依次排列。orientationvertical就是告诉它竖着排padding24dp是给四周留点空隙不然文字会贴着屏幕边很难看。里面放了三个控件TextView是纯文字用来显示标题EditText是输入框用户可以在里面打字Button是按钮用来点。每个控件都有layout_width和layout_heightmatch_parent表示「跟父容器一样宽」wrap_content表示「内容多大我就多大」。id是给控件起个名字后面在代码里要靠这个名字找到它所以etStudentId和btnLogin这两个名字要记住。hint是输入框里的灰色提示文字用户一开始打字它就消失。写完保存点右上角的预览按钮你就能看到这个登录框的样子了。这一步不需要运行模拟器预览就够。看到界面出来的那一刻你就已经跨过了「什么都看不见」的阶段。3.3 让按钮真的能点第一个交互事件界面有了但按钮现在是个摆设点了没反应。我们让它弹出一句提示。打开MainActivity.java在onCreate方法里加上找控件和设监听的代码public class MainActivity extends AppCompatActivity { Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 通过 id 找到布局里的输入框和按钮 EditText etStudentId findViewById(R.id.etStudentId); Button btnLogin findViewById(R.id.btnLogin); // 给按钮设置点击监听 btnLogin.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { // 取出用户输入的学号 String studentId etStudentId.getText().toString(); // 弹出一个短提示 Toast.makeText(MainActivity.this, 学号 studentId 登录成功, Toast.LENGTH_SHORT).show(); } }); } }逐句解释一下。setContentView(R.layout.activity_main)是把刚才写的那个布局文件「贴」到这个页面上没有这一句页面就是空白的。findViewById就是拿着 id 去布局里把控件找出来找到之后存到一个变量里后面就能操作它。setOnClickListener是给按钮装一个「被点击时要做的事」里面那个onClick方法就是点击发生后执行的代码。getText().toString()是把输入框里的内容取出来变成字符串。Toast是安卓里最轻量的提示屏幕下方弹一个小条几秒后自动消失适合做这种即时反馈。现在点运行按钮选一个模拟器或者连上你的手机等它安装完你就能在屏幕上输入学号、点登录、看到提示弹出来了。这是你做的第一个真正能交互的安卓功能虽然简单但流程是完整的布局定义界面代码找到控件事件触发逻辑。4. 把选课系统做完整数据、列表和页面跳转4.1 课程数据从哪来先用一个写死的列表登录跑通了接下来要有课程。真实系统里课程数据肯定存在服务器或者数据库里但入门阶段我们先不碰那么复杂的东西用一个写死在代码里的列表就够了。这样做的好处是你能先把「数据怎么显示到屏幕上」这件事搞明白而不用同时应付网络请求和数据库。在MainActivity里加一个方法返回一个课程列表// 模拟课程数据入门阶段先用写死的方式 private ListCourse getCourseList() { ListCourse list new ArrayList(); list.add(new Course(C001, 高等数学, 周一 1-2 节)); list.add(new Course(C002, 大学英语, 周二 3-4 节)); list.add(new Course(C003, 程序设计基础, 周三 5-6 节)); return list; }这里的Course是一个你自己定义的数据类用来把一门课的编号、名称、时间打包在一起。你可以新建一个Course.java文件里面只放三个字段和对应的 getter 方法。为什么要单独定义一个类而不是用三个列表分别存编号、名称、时间因为一门课的信息是一个整体打包在一起后面传递和显示都方便不容易出现「编号和名称对不上」这种低级错误。这是入门阶段就该养成的习惯相关的数据放在一起。4.2 用列表控件把课程显示出来有了数据就要显示。安卓里显示一列数据最常用的控件是RecyclerView它负责把每一条数据变成一个列表项并且在你滑动时复用屏幕外的项性能好。入门阶段你不需要深究它的复用原理只要会「给它数据、告诉它每一项长什么样」就行。先在布局里加一个RecyclerView然后在代码里给它设置一个适配器。适配器你可以理解成「翻译官」它负责把Course对象翻译成屏幕上的一行。你需要写一个简单的适配器类继承RecyclerView.Adapter在里面指定每一项用哪个布局、每个文字控件显示哪个字段。这个过程第一次写会觉得有点绕但套路是固定的创建视图、找到控件、绑定数据三步走。写完运行你就能看到一个可以上下滑动的课程列表了。注意RecyclerView的适配器里onBindViewHolder方法会被反复调用所以里面只做「把数据填到控件上」这件事不要在里面做耗时操作否则列表会卡。4.3 点一门课就选上把选择结果存下来列表能看了最后一步是「选课」。给列表的每一项加点击事件点中之后把这门课加到一个「已选列表」里并且给用户一个反馈比如把那一项的背景变色或者弹个提示。已选列表可以先存在内存里也就是一个ListCourse变量App 关掉就没了。等你把这一版跑通再考虑用SharedPreferences或者 SQLite 把它持久化下来那是下一步的事。这里有个新手常犯的错在适配器里直接new一个列表来存已选课程结果每次列表刷新数据就丢了。正确的做法是把已选列表放在 Activity 或者一个单独的类里适配器只负责显示和把点击事件往外传。数据的所有权要清晰谁创建谁管理别让显示层去管数据。4.4 页面跳转从登录页到课程页一个完整的 App 不可能只有一个页面。登录成功后应该跳到课程列表页。这就用到Intent你可以把它理解成一张「跳转指令」告诉系统「我要从当前页面去另一个页面」。写法很简单// 登录成功后跳转到课程列表页 Intent intent new Intent(MainActivity.this, CourseListActivity.class); startActivity(intent);CourseListActivity是你新建的另一个 Activity里面放课程列表的逻辑。跳转过去之后按返回键还能回到登录页这是安卓默认的行为。如果你想把学号传过去可以用intent.putExtra(studentId, studentId)然后在目标页面用getIntent().getStringExtra(studentId)取出来。这套传参方式在入门阶段够用了虽然它有局限但先跑通再说。5. 新手避坑这几个坑我几乎每次都见人踩5.1 现象改完布局运行后界面没变化原因通常有两个。一是你改的不是当前页面用的那个布局文件项目里可能有好几个activity_xxx.xml你改错了。二是你改了布局但没重新运行预览窗口更新了但手机上装的还是旧版本。解决方法是先确认setContentView里写的是哪个布局文件名再去改那个文件改完一定要重新点运行别只看预览。5.2 现象findViewById返回空一用就崩溃这是新手最常见的崩溃之一。原因基本是 id 对不上布局里写的是etStudentId代码里写成了etStudentID大小写不一样或者干脆忘了在布局里加android:id。解决方法是复制布局里的 id 到代码里别手打崩溃时看日志里NullPointerException那一行它会告诉你哪个变量是空的顺着去找对应的findViewById。5.3 现象模拟器启动特别慢或者干脆起不来原因多半是电脑没开虚拟化支持或者模拟器分配的内存太小。解决方法是进 BIOS 把虚拟化打开不同主板位置不一样搜你的主板型号加「开启虚拟化」能找到或者在模拟器设置里把内存调大一点。如果实在搞不定模拟器直接用数据线连真机调试打开手机的开发者模式和 USB 调试往往比模拟器省心。5.4 现象列表滑动卡顿或者数据错乱原因通常是适配器里做了不该做的事比如在onBindViewHolder里加载图片、做计算或者复用了视图却没重置所有字段。解决方法是绑定方法里只做赋值如果某一项有的字段有值、有的没有记得在绑定前先把所有字段重置一遍否则复用的旧视图会带着上一条数据「串台」。5.5 现象改了一个地方别的地方跟着报错原因是你可能动了公共的布局或者数据类影响到了其他页面。入门阶段项目小这种连锁反应还不多但要有这个意识改公共文件之前先想清楚哪些地方在用。解决方法是养成小步提交的习惯改一点跑一次出问题能立刻定位到是哪次改动引起的别攒一大堆改动再一起运行。6. 下一步学什么从能跑到跑得稳的学习路径第一个能点能选的版本跑通之后你可能会有点迷茫接下来该往哪走我的建议是按「先补数据、再补结构、最后补体验」的顺序来别贪多。先补数据。你现在选的课关掉 App 就没了这不像个真系统。下一步去学SharedPreferences它适合存这种简单的键值对比如把已选课程编号拼成一个字符串存起来。学会之后再去看 SQLite 或者 Room那是正经的本地数据库能存结构化的课程表和选课记录。这一步走完你的 App 就有了「记忆」。再补结构。现在你的代码可能全堆在 Activity 里页面一多就乱。去了解一下ViewModel和Repository这种分层思路不用学太深知道「界面归界面、数据归数据」就行。同时把写死的课程列表换成一个真正的数据源哪怕只是从本地 JSON 文件读也能让你体会「数据和界面分离」的好处。最后补体验。加一个「我的课程」页面用BottomNavigationView做底部切换给选课加一个确认弹窗列表项加个选中状态。这些都不难但能让你的 App 看起来完整很多。做完这些你就可以尝试把数据放到一个简单的后端接口上学一学怎么用OkHttp或者Retrofit发网络请求那时候你就算真正踏入安卓开发的门了。阶段学什么大概花多久第一步SharedPreferences 存选课记录一到两天第二步Room 数据库建课程表和选课表三到五天第三步ViewModel 拆分界面与数据两到三天第四步Retrofit 请求网络数据一周左右这张表只是给你一个节奏参考不用严格卡时间做出来才算数。我带新人的血泪经验是每学一个新东西就立刻塞进选课系统里用一遍别单独看教程。看懂了和写出来是两回事写出来和能跑通又是两回事。从那以后我每次带人入门都强制要求先把一个最小版本从头到尾跑通再去补新知识因为只有跑通过一次你才知道一个功能从想法到落地中间要经过哪些环节后面学什么心里都有底。希望这份路径能帮到你先从把登录框跑出来开始别想太多动手就对了。本文还有配套的精品资源点击获取