学生信息管理系统的设计开发

1 绪论

内容简介及意义

《移动开发综合课程设计》计算机科学与技术专业的一门实践课程,该课程设计是《移动应用开发技术》、《移动开发课程设计》、《移动应用高级开发技术》的后续课程,是一门实践性较强的课程。通过本实践课程的学习和练习,使学生掌握使用 Kotlin 语言和 Jetpack 框架等最新技术,开发一个实用的移动 App。通过对所学的理论知识、操作技能的综合应用,将一个个独立的知识技能进行融合、提升,形成一个完整的知识技能体系,提高分析问题、解决问题的能力,从而能熟练运用所学的编程技术解决现实中遇到的实际问题。

开发工具及技术介绍

  • 开发工具:IntelliJ IDEA

  • 开发语言:Kotlin

  • 操作环境:Win7/win10

  • 开发框架:Android/Jetpack

  • 技术介绍:该课程设计主要使用了 kotlin 语言编程技术,Anko 库中的 toast、intent、alert 处理功能以及 SQLite 数据库的连接和交互技术,用于对移动端应用进行一些相应的开发操作。

2 总体设计

系统总体架构

系统功能要求

  • 用户、角色管理功能:用户分为学生、教师、教务管理人员三种角色,每种角色拥有不同的权限,不同用户登录后根据其角色显示不同的功能界面。学生只能查询本人的档案信息和成绩表;教师可以设置学生相应课目的成绩;教务管理人员,管理和维护各类信息:包括录入学生基本信息、维护系、专业、课程信息,负责每学期分配课程教学任务给指定教师,查询修改学生基本信息、分数,分配学生课程等功能。

  • 学生基本信息管理:对学生基本信息的增删改查,一旦学生信息确认提交,后续修改操作需要有变动记录等。(教务)

  • 系、班级信息维护(教务)

  • 课程信息维护,分配学生选课,分配老师授课。(教务)

  • 学生成绩录入(教师):成绩提交前可以修改,提交后只能申请提交教务管理人员修改

  • 学生信息查询:学生只能查看自己的基本信息和个学期成绩表;教师可以查询自己所教授课程的成绩;教务可以查询所有学生的基本信息和各学期成绩表

该系统为实现相关的操作,共在数据库中创建了管理员表(表 2-1)、学生表(表 2-2)、教师表(表 2-3)、成绩表(表 2-4)、班级表(表 2-5)、部门表(表 2-6)、专业表(表 2-7)和学期表(表 2-8)八个表。

该系统共由登录模块、教师功能模块、学生功能模块、管理员功能模块和系统设置模块等模块构成,其总体架构图如图 2-1 所示。

表 2-1 管理员表 admin

字段名 意义 数据类型 数据长度 是否主键 能否为空
id 编号 INTEGER 5
username 工号 TEXT 11
password 密码 TEXT 16
name1 姓名 TEXT 10

表 2-2 学生表 student

字段名 意义 数据类型 数据长度 默认值 是否主键 能否为空
id 编号 INTEGER 5
username 工号 TEXT 11
password 密码 TEXT 16 000000
name1 姓名 TEXT 8
sex 性别 TEXT 4
depart 系别 TEXT 10
speciality 专业 TEXT 10
class1 班级 TEXT 10

表 2-3 教师表 teacher

字段名 意义 数据类型 数据长度 默认值 是否主键 能否为空
id 编号 INTEGER 5
username 工号 TEXT 11
password 密码 TEXT 12 000000
name1 姓名 TEXT 8
class1 授课班级 TEXT 10
depart 部门 TEXT 10
course 授课名称 TEXT 10

表 2-4 成绩表 performance

字段名 意义 数据类型 数据长度 默认值 是否主键 能否为空
teacher 教师工号 TEXT 11
course 课程名 TEXT 10
class1 班级 TEXT 10
name1 学生姓名 TEXT 8
username 学生学号 TEXT 16
number 课程得分 INTEGER 2 0
semester 学期 TEXT 10

表 2-5 班级表 classlist

字段名 意义 数据类型 数据长度 默认值 是否主键 能否为空
id 编号 INTEGER 5
name1 班级名 TEXT 6
speciality 所属专业 TEXT 6

表 2-6 系别/部门表 depart

字段名 意义 数据类型 数据长度 默认值 是否主键 能否为空
id 编号 INTEGER 5
name1 系别名 TEXT 10
type 类型 INTEGER 6

表 2-7 专业表 speciality

字段名 意义 数据类型 数据长度 默认值 是否主键 能否为空
id 编号 INTEGER 5
name1 专业名 TEXT 10
depart 所属系别 TEXT 10

表 2-8 学期表 semester

字段名 意义 数据类型 数据长度 默认值 是否主键 能否为空
id 编号 INTEGER 5
name1 学期名 TEXT 10

​ 图 2-1 系统总体架构图

登录模块总体设计

登录模块主要用于识别用户的身份,并按照不同的用户身份进行不同的判断,成功则按照不同的身份类型进入主界面,失败按照识别原因进行相应的提示。模块架构图如图 2-2 所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66MhSHyg-1672036255460)(img/2.png)]

图 2-2 登录模块架构图

主界面模块总体设计

主界面由一个 Activity、多个 Fragment 组成以及多个不同控件组成。菜单选项用于实现用户方便快捷的选择和使用系统的功能,不同身份的用户进入该界面会显示相应的 Fragment 界面,点击不同 Fragment 内的子功能选项,进入相应的功能操作界面。模块架构图如图 2-3 所示。

​ 图 2-3 主界面模块架构图

3 详细设计

登录模块设计

登录模块主要用于识别用户的身份。该界面允许普通员工和管理员两种身份进行登录,用户在输入工号和对应的密码后,按照自己的身份类型选择代表相应登陆身份的按钮,点击按钮之后系统会按照不同的身份在不同的数据库中进行用户信息检索,当检索到该账号并且对应的密码相匹配时,则用户登录成功,并将其身份信息传送至主菜单界面,以实现不同身份对主菜单的不同处理。

主界面模块设计

登陆成功后,系统会根据不同的用户身份进入对应的 Activity 并显示对应的 Fragment 页面不同的 Fragment 内可以选择不同的子功能按钮选项,点击则进入具体的功能界面以实现具体功能操作。

学生用户界面模块设计

用户以学生身份进入主菜单后跳转至学生用户界面 StudentActivity。该界面由两个 Fragment 组成,其中 StudentManagerFragment 用于学生成绩查询,StudentSettingFragment 用于系统设置,系统设置页共包括个人信息修改、用户密码修改以及退出登录三个功能,点击相应功能跳转到相应 Activity 并实现相应功能。

教师用户界面模块设计

用户以教师身份进入主菜单后跳转至教师用户界面 TeacherActivity。该界面由三个 Fragment 组成,其中 TeacherManagerFragment 用于实现教师所教授科目成绩的录入,TeacherSearchPerformanceFragment 用于实现教师对自己已完成录入的科目的成绩的查询(无权限更改已录入成绩),TeacherSettingFragment 则用于系统设置置,系统设置页共包括个人信息修改、用户密码修改以及退出登录三个功能,点击相应功能跳转到相应 Activity 并实现相应功能。

教务人员界面模块设计

用户以教务人员身份进入主菜单后跳转至管理员用户界面 AdminActivity。该界面由三个 Fragment 组成,其中 AdminManagerFragment 用于教务人员对学生、教师、学生成绩以及课程的增删改查操作的功能选项入口,点击相应选项则跳转至相应的具体功能 Activity 界面,DepartClassFragment 用于教务人员对部门、系别和班级的管理功能选项入口,点击相应选项则跳转至相应的具体功能 Activity 界面,AdminSettingFragment 则用于系统设置置,系统设置页共包括个人信息修改、用户密码修改以及退出登录三个功能,点击相应功能跳转到相应 Activity 并实现相应功能。

4 应用操作演示

登录功能模块演示

打开应用即为登陆页面,输入账号密码,选择相应登陆身份后,点击登录按钮,系统会对输入信息及相应身份进行相应判断,登陆成功则跳转至应用主界面,失败则弹出失败信息。

图 4-1 用户登陆界面

学生功能模块演示

学生用户登陆成功后,进入学生用户主界面左右滑动可以在我的成绩和设置页面之间进行切换。

在我的成绩页面,学生可以查询自己各个学期各科已录入的成绩。在设置界面,学生可以进行个人信息修改、账号密码修改以及退出登陆操作。

图 4-2 我的成绩界面显示图 4-3 设置界面显示

在设置界面点击修改个人信息选项和修改个人密码选项跳转至相应功能,按提示输入修改信息或密码后弹出提示,点击确定完成修改,其中,密码修改完成后会执行退出登陆操作,输入新密码方可重新进入系统。

图 4-4 个人信息修改界面 图 4-5 密码修改界面

在设置界面点击退出账号登录功能选项则完成账号退出登录功能,跳转回登陆界面。

教师功能模块演示

教师用户登陆成功后,进入教师用户主界面左右滑动可以在成绩录入、成绩查询和设置页面之间进行切换。

在成绩录入界面,教师可以录入所教授课程的班级学生成绩信息。在成绩查询界面,教师可以查询所教授课程中已录入的班级学生成绩信息。在设置界面,教师可以进行个人信息修改、账号密码修改以及退出登陆操作。

图 4-6 成绩录入界面 图 4-7 成绩查询界面 图 4-8 设置界面

在设置界面点击修改个人信息选项和修改个人密码选项跳转至相应功能,按提示输入修改信息或密码后弹出提示,点击确定完成修改,其中,密码修改完成后会执行退出登陆操作,输入新密码方可重新进入系统。

图 4-9 个人信息修改界面 图 4-10 密码修改界面

在设置界面点击退出账号登录功能选项则完成账号退出登录功能,跳转回登陆界面。

教务人员功能模块演示

教务人员用户登陆成功后,进入教务人员用户主界面左右滑动可以在信息管理、系别管理和设置页面之间进行切换。

在信息管理界面中,共有添加学生信息、添加教师信息、学生信息查询、教师信息查询、学生成绩查询和课程信息查询六个子功能的入口选项。在系别管理界面中,共有添加系别/部门信息和添加班级信息两个子功能的入口选项,点击则进入相应的功能实现界面。在设置界面,教师可以进行个人信息修改、账号密码修改以及退出登陆操作。

图 4-11 信息管理界面 图 4-12 系别管理界面 图 4-13 设置界面

在信息管理界面中点击添加学生信息选项进入学生信息添加界面,输入相应的信息之后点击确定添加会将输入的信息录入到数据库中,并且将该学生密码默认为 000000。

在信息管理界面中点击添加教师信息选项进入教师信息添加界面,输入相应的信息之后点击确定添加会将输入的信息录入到数据库中,并且将该教师的登录密码默认为 000000。

图 4-14 学生信息添加界面 图 4-15 教师信息添加界面

在信息添加界面点击学生信息查询选项进入学生信息查询界面,选择查询条件后输入查询关键字,点击搜索按钮即可查询数据库中所有符合条件的学生信息并显示在界面中。点击界面下方的密码重置按钮可将当前显示的学生密码重置为默认密码(000000),点击信息修改按钮则会跳转到学生信息修改页面(同 4.2 中学生信息修改界面演示介绍),点击信息删除按钮可将当前显示的学生信息从数据库中删除。

在信息添加界面点击教师信息查询选项进入学生信息查询界面,选择查询条件后输入查询关键字,点击搜索按钮即可查询数据库中所有符合条件的教师信息并显示在界面中。点击界面下方的密码重置按钮可将当前显示的教师密码重置为默认密码(000000),点击信息修改按钮则会跳转到教师信息修改页面(同 4.3 中教师信息修改界面演示介绍),点击信息删除按钮可将当前显示的教师信息从数据库中删除。

图 4-16 学生信息查询界面 图 4-17 教师信息查询界面

在信息添加界面点击学生成绩查询选项进入学生成绩查询界面,选择学期后输入要查询的学生的学号点击搜索按钮则会查询到对应条件的学生成绩信息并显示在界面中。若该学生的成绩信息有误,点击界面下方的成绩修改按钮会弹出成绩修改提示,点击确认后弹出学生成绩修改输入框,输入正确的分数后点击确定则可完成成绩修改。

在信息添加界面点击课程信息查询选项进入课程信息查询界面,选择查询类型并输入对应的查询条件后点击查询按钮会在数据库中查询符合条件的课程信息并显示在界面中。

图 4-18 学生成绩查询界面 图 4-19 课程信息查询界面

在系别管理界面点击系别管理选项进入专业信息添加界面,选择系别名称后输入要添加的专业名,确认无误后点击确认添加按钮,系统会将输入的信息例如到数据库中完成班级信息的添加。

在系别管理界面点击班级管理选项进入班级信息添加界面,选择系别名称和专业后输入要添加的班级名,确认无误后点击确认添加按钮,系统会将输入的信息例如到数据库中完成班级信息的添加。

图 4-20 班级信息添加界面 图 4-21 专业信息添加界面

在设置界面点击修改个人信息选项和修改个人密码选项跳转至相应功能,按提示输入修改信息或密码后弹出提示,点击确定完成修改,其中,密码修改完成后会执行退出登陆操作,输入新密码方可重新进入系统。

图 4-22 个人信息修改界面 图 4-23 密码修改界面

在设置界面点击退出账号登录功能选项则完成账号退出登录功能,跳转回登陆界面。

5 系统测试

测试内容:项目编码结束后,运行测试整个系统功能

测试方法:测试任何软件都有两种方法:黑盒测试和白盒测试法。

黑盒测试法(又称功能测试法)是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,是在程序接口进行的测试,它只检查程序功能是否按照规格说明书的规定正常使用。

白盒测试法(又称结构测试法)是把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确工作。

测试结果:

  • 数据库连接、创建和操进行相应操作时较为繁琐复杂,一些 Activity 之间的跳转,alert 弹出,toast 弹出也较为复杂。
  • 教师在录入成绩时,学生成绩的存储,学生信息的显示,以及在向下一位学生录入跳转时会出现一些 bug 导致系统崩溃。
  • 管理员在对学生成绩进行更改时,每次更改都要跳转页面,十分不人性化。
  • 在用户主界面向具体功能进行跳转时,一些用户的信息传递会出现一些 bug 导致信息传递失败或应用闪退。

解决方法:

  • 在进行一些跳转、弹出和显示提示时使用 Anko 库中的功能,使得一些繁琐的操作变得较为简便。
  • 重新修改了底层代码,对于信息的录入,学生的改变使用了更为严格的约束,成功解决问题。
  • 为了避免繁琐的跳转,我在管理员需要修改学生成绩时,弹出成绩修改框(alert 功能中的 customView),使得成绩修改时不用在进行界面的跳转便可以完成修改操作。
  • 在数据传提示使用 Anko 库的 intent 操作,在向 Fragment 传递数据时使用 Fragment.also{…(要传递的信息)}操作,问题解决。

♻️ 资源

大小: 2.96MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87249043

基于Kotlin实现学生信息管理系统【100010063】相关推荐

  1. C语言涉及数组的大作业,c语言大作业_基于数组的学生信息管理系统.doc

    . . word完美格式 <C语言程序设计实训1>报告 设 计 题 目: 基于数组的学生信息管理系统 学 院 名 称: 科学技术学院 专 业: 软件工程 班 级: 108班 姓 名: 大神 ...

  2. 基于html5的学生管理系统,基于HTML5的学生信息管理系统的设计与实现

    [摘要] 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状 ...

  3. 基于JavaSwing开发学生信息管理系统(SQLServer数据库版本) 毕业设计 课程设计 大作业

    基于JavaSwing开发学生信息管理系统(SQLServer数据库版本):   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+SQLServer数据库 运行 ...

  4. 基于SSM的学生信息管理系统

    基于SSM的学生信息管理系统 摘要 随着互联网技术和国内教育行业持续高速地发展,管理员为了能够更加方便地管理学生信息,学生信息管理系统被开发出来的目的是为了能够更加方便管理学生信息,一个良好的学生信息 ...

  5. 基于swing+awt学生信息管理系统

    源码编号:F-A02 项目类型:Java SE项目(awt+swing)开源免费 项目名称:基于swing+awt学生信息管理系统(manager) 当前版本:V1.0.1版本 主要技术:java.a ...

  6. html实现学生系统,基于HTML5的学生信息管理系统的设计与实现

    摘要: 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状, ...

  7. [Java]基于JDBC的学生信息管理系统的实现

    基于JDBC的学生信息管理系统的实现 功能说明 数据库系统实现 0.建表过程 1.新生入学信息添加,学生信息修改 2.课程信息维护(增加新课程,修改课程信息,删除没有选课的课程信息) 3.录入学生成绩 ...

  8. 基于C++的学生信息管理系统的实现

    在完成一学期的C++语言学习之后,写一个学生信息管理系统来丰富自己的实战经验. 课设内容的要求有主菜单模块.输入模块.查询模块.更新模块.排序模块.统计模块和输出模块,并且通过主菜单模块调用各个子模块 ...

  9. 学生信息录入java,基于java的学生信息管理系统

    基于java的学生信息管理系统中分为多级角色管理:包括系统管理员.学生和老师几种权限,采用了开发技术JSP以及MYSQL数据库作为本系统的开发工具.主要包括新闻模块,考试模块,学生模块,教师模块,选课 ...

最新文章

  1. 抱歉,你和社会脱节了——对于中国教育的反思
  2. 深度稳定学习:因果学习的最新进展 | 清华大学团队 CVPR 研究
  3. 金融科技创业公司Revolut增加对BCH和XRP支持
  4. C 语言编程 — GCC 工具链
  5. [并发编程]并发编程第二篇:利用并发编程,实现计算大量数据的和
  6. Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文
  7. jakarta ee_Jakarta EE的拟议命名空间
  8. C++ 判断类是否有某变量
  9. Linux下Django环境安装
  10. 中国机器自动化控制器行业市场供需与战略研究报告
  11. python中run函数作用_Python run()函数和start()函数的比较和差别介绍
  12. Class类的创建方式大全
  13. oracle仅部分记录建立索引的方法
  14. usb驱动---linux ACM驱动详解ACA【转】
  15. 台达触摸屏编程软件_松下PLC远程编程调试流程
  16. 全国各地车牌代码整理出数据库表SQL Server
  17. Python版实现12306抢票功能,真的能帮你抢到春运回家的票吗?
  18. SDM(Supervised Descent Method)代码实现在Windows下的配置与使用
  19. http post 415错误
  20. 高并发部署策略 多副本服务+nginx均衡负载

热门文章

  1. 请去Windows应用商店查看有关xxx的更多信息 解决办法
  2. 需要将录音转文字在线转换,应该如何完成
  3. Java学习从这里开始
  4. AI-人工智能 easyAi开发技术
  5. SQLite入门之读取手机短信
  6. Kaggle数据集之电信客户流失数据分析(一)
  7. 未来是机器人还是人类的天下?
  8. 高德地图两个不同的的功能合并
  9. ISO C 与POSIX 的关系
  10. 渗透测试工程是的主要工作