课程管理系统设计


    1 课程管理系统设计 一、 题目与要求 1.问题描述 题目:课程信息管理系统 说明:课程信息管理系统,分为教师和学生两端,教师可以在系统里添加课程,学生可以选 课。同时可以查看各自的课表。教师可以在系统里给学生打分,学生可以查看自己的成绩单。 2.功能要求 a) 用户角色分为学生和教师,需要分别设计界面。 b) 用户可注册,注册完成之后进行登录。 c) 教师端登录之后功能: i. 可添加课程,课程信息应包括课程代码,课程名,学时,开课学期,课程类别 (必修,选修),课程性质(公选,专业课),学分,上课地点,上课时间(每 周,哪一周)。 ii. 对于课程可以进行增删改查。 iii. 对于每个课程可以查看学生的选课情况,查看选课人员表。 iv. 教师可以给学生成绩。 v. 教师课表查看。 d) 学生端登录之后的功能: i. 可以查看系统内的所有课程。 ii. 可以选课。 iii. 可以查看自己的选课情况。 iv. 可以查看自己的成绩和绩点。 v. 学生课表查看。 二、 分析与设计 a) 功能与实现: i. 基础设计: 1. 程序基本实现框架化。 a) 数据模型类(如用户模型,课程模型,选课记录模型)在 Model 包 存放,体现面向对象编程的思想。 i. 每个数据模型都具有自身所具有的属性以及相应的方法。每个数 据模型类必须要具有的方法是 1. String toString():将类里的属性序列化输出成字符串。 2. String fromString(String):将外来的字符串转回相应的 对象。 b) 数据模型助手类在 ModelController 包存放。实现了类似数据库的 功能。 2 i. 这些类的构造方法具有将磁盘里的数据读入到内存中的数组列 表的功能,同时会构造一个钩子,在程序被结束时会自动触发保 存。 ii. 抽象类 ModelMasterController: 1. ArrayList<Object> getRecordsFromFile():从指定的与类 名同名的文件里读入数据。 2. saveRecordsToFile():将当前内存中的数据写入到磁盘。 3. addObjectToList(Object object):将数据对象储存到内存 当中。 4. deleteObjectFromList(Object object):从内存中删除一 个对象,会进行比对,参数传对象即可。 5. updateObjectToList(int index, Object object):更新内 存中一个对象。 6. int getIndex(Object object) :获取相应对象的下标。 7. Object selectSingleObjectFromList(HashMap<String, String> key_value):用指定的条件去筛选一个对象出来。 8. ArrayList<Object> selectManyObjectsFromList(HashMap<String, String> key_value):用指定的条件去筛选多个对象出来。 9. ArrayList<Object> getAllObjectsFromList():将内存中 所有对象都返回。 iii. 相应数据模型的助手类(ModelUserController 等)均继承实现 上面这个抽象类,继承时只需要在构造方法里调用父类的构造方 法并在参数里指定类名即可。此处使用了 Java 的反射机制。 c) UI 和逻辑处理部分: i. 抽象类 MasterController: 1. 其他类均继承实现该类,该类具有以下方法: a) 抽象方法 addToPane():用于内容填充,其他类继承实 现。 b) showDialog(String):用于显示提示框。 c) isFill():用于检查输入是否完整,在被继承实现时子 类可以将要检查的 TextField 添加到 list_check_fill : HashSet<Object>中,然后在提交 时调用该函数进行检查。 d) 同时由于本类实现了 ActionListener ,所以下面的子 类还要实现 actionPerformed(ActionEvent e)方法。 2. 其他子类,继承实现 MasterController,一个子类对应一 个窗口。 d) 入口包: i. 在 Entry 包中,Main 类,实例化数据助手类,新建窗口,同时 有一个 SessionHold 类,用于实现类似于浏览器 Cookie 的机 制,比如保存当前登录的用户之类的。 ii. 登录以及注册: 1. 注册 UIController/RegController: 3 a) 可以输入信息,进行注册,注册时可以选择角色。 b) 调用模型类:User c) 调用模型助手类:ModelUserController 2. 登录 UIController/LoginController: a) 可以输入用户名和密码尝试登录,登录时无需选择角色,如果登录成 功会自动跳转到相应的角色界面。 iii. 教师端: 1. 主界面 UIController/TeacherMainController: a) 大部分教师端的功能均在此类中实现,包括课程的删改查,课程打分, 查看学生列表,查看自己的课表等。 2. 课程添加界面 UIController/Teacher/AddCourseController: a) 课程的添加在这里。 iv. 学生端: 1. 主界面 UIController/StudentMainController: a) 学生端的功能均在此类中实现,包括课程的查看,选课,以及查看自 己的成绩和自己的课表。 b) 程序流程图: i. 教师端: 4 ii. 学生端 5 c) 外部文件储存格式 i. Model.User.dat: 1. 储存用户信息,将属性用|分割来保存。 ii. Model.Course.dat 1. 储存课程信息,将属性用|分割来保存。 iii. Model.Choosen.dat 1. 储存选课信息,将属性用|分割来保存。 三、 实现 a) 登录与注册界面 i. 登录 1. 截图: 6 2. 登录逻辑代码: public void onLoginButtonClick() { HashMap<String, String> queryCondition = new HashMap<String, String>(); queryCondition.put(“user_number“, text_user_number.getText()); queryCondition.put(“user_password“, text_user_password.getText()); User tempUser = (User) Main.ModelUser.selectSingleObjectFromList(queryCondition); if(tempUser != null) { this.showDialog(“登录成功“); Main.SessionHold.put(“CurrentLoginUser“, (Object)tempUser); if(tempUser.role_type == 1) { //老师 new TeacherMainController(); this.dispose(); } else { //学生 new StudentMainController(); this.dispose(); } } else { this.showDialog(“用户名或者密码不正确,请检查后 再登录!“); } 7 } ii. 注册 1. 截图: 2. 注册逻辑代码: public void onRegButtonClick() { if(!this.isFill()) { this.showDialog(“信息填写不全,请检查后再提交! “); return; } if(!text_user_password.getText().equals(text_user_repeat_pa ssword.getText())) { this.showDialog(“两次密码输入不一致,请检查后再 提交!“); return; } //注册逻辑 HashMap<String, String> queryCondition = new 8 HashMap<String, String>(); queryCondition.put(“user_number“, text_user_number.getText()); if(Main.ModelUser.selectSingleObjectFromList(queryCondition ) != null) { this.showDialog(“学工号已被注册,请检查后再提交! “); return; } Main.ModelUser.addObjectToList(new User(text_user_number.getText(), text_user_name.getText(), text_user_password.getText(), (button_role_teacher.isSelected() ? 1 : 2))); this.showDialog(“注册成功,请登录!“); this.onBackButtonClick(); } b) 教师端 i. 截图: 1. 主界面 2. 课程管理 9 3. 学生查看 4. 教师课表(只显示当前学年课表) 10 5. 添加课程 6. 课程相关操作 11 ii. 代码: 1. 代码过多,此处不做节选。 12 c) 学生端 i. 截图: 1. 学生端主界面 2. 查看课程以及选课 13 3. 查看课表(只显示当前学年课表) 4. 查看成绩 14 ii. 代码: 1. 代码过多,此处不做节选。 四、 总结 在整个的开发过程中,我遇到了一些问题,在解决这些问题的过程中我也有一些心得 和体会,下面进行一些总结。 a) 架构的选择上 实训的时候,很多人都选择了直接在一个文件里写,之前我图省事也想过这样做, 这样做的话肯定很快就能开发完了。但是,基于对于自己开发的考量和对自己新年 的计划里要遵守开发规范的承诺,我选择将架构做好做细,在 Java 应用程序里尽 量体现 MVC 的思想,结果也证明我基本做到了,虽然最开始开发的时候速度慢了一 些进度有些落后,但一旦完成这个框架,开发的效率是指数级增长的,而且开发出 来的程序便于维护,也比那些面条一样的代码运行稳定许多。 b) 功能规划 在一开始设计这个课程管理系统的时候,我设想过许多功能,但最后我都一个个的 给修剪掉了,做那么多的功能可能固然绚丽,但也要考虑到自己的精力和技术水平。 特别是实训只有短短的五天时间,真正在编码的时间可能比这个少的多,在这样的 情况下要尽可能完美地实现功能就只能减少功能的数量,并且把这些功能做精,这 是正确的策略。 c) 龟毛的 JTable 在做数据呈现的时候,既然是用 Java 来写 GUI 的程序,那么就与之前 C 语言的命 令行界面有很大的不同了,我在搜索 Java 的表格组件时,发现 swing 里提供了一 个名叫 JTable 的组件,在别人的介绍和截图里发现这个组件拿来做数据呈现非常15 合适。但我真正在使用这个组件的时候,才发现其实没那么容易。把我自己的数据 给灌到 JTable 里,找到最合适的方法可费了一大把劲。再比如,把 JTable 的表 头给比较合适地显示出来也是费了一番功夫,这些都得去琢磨它的 API 文档,去网 上看看别人的程序,从中学习,总结出最适合自己的方法。 d) 奇巧淫技的使用 我在做主界面上内容的更替时,一开始发现如果不用鼠标缩放一下窗口的话,新的 内容就不会出来。尝试了各种姿势来解决这个问题都没有成功,上网搜索了一下似 乎也没人遇到过这种问题。那么我就想,不就是要改变一下窗口尺寸才能重新画图 吗,那么好,我就把窗口放大一个像素再弄回来,这样新内容就出来了。有时候, 这些小技巧也能解决蛮多问题。 再比如,在写数据模型助手类的时候,有很多参数都是可变的,这里我就尝试应用 了 Java 的反射机制,在运行时再决定那些原本要在写程序时就要决定的东西,非 常方便,代码的复用性也高很多了。 通过本次实训,我第一次尝试写了一个完整的 Java 应用程序,进一步理解了面向对象 的思想,收获很多,限于篇幅到此为止。 五、 附件 源代码见压缩包

    下载pdf到电脑,查找使用更方便

    pdf的实际排版效果,会与网站的显示效果略有不同!!

    需要 4 香币 [ 分享pdf获得香币 ]

    下载pdf

    相关文档

    教师管理系统(数据库)课程设计

    数据库技术与应用(SQLServer2005)课 程 设 计题 目教师管理系统 组 员 班 级计科班学 院信息科学与工程学院指导教师 2012年 X...

    7个月前   
    446    0

    C语言课程设计通讯录管理系统

     课程设计报告书 课程名称: C语言课程设计 班 级: 学 号: ...

    2年前   
    1868    0

    超市管理信息系统课程设计

    XX大学商学院课程设计总结报告 实习课程 管理信息系统设计 设计课题 鲜果屋超市进销存管理信息系统设计 小 组 经管第组 ...

    8个月前   
    288    0

    图书馆图书管理系统课程设计

     课程设计 (图书馆图书管理系统) 指导老师: 班 级:能动 姓 名: 学 号: ...

    2年前   
    1082    0

    UML课程设计—图书管理系统

    《信息系统分析与设计》课程设计报告设计题目: 图书管理系统 姓 名: 班 级: 信管班 ...

    3个月前   
    153    0

    软件工程课程设计管理系统

    软件工程课程设计论文软件工程课程设计管理系统软件工程课程设计报告姓 名: 年 级: 05级 ...

    1个月前   
    87    0

    EDA与数字系统课程设计

     课 程 设 计 任 务 书(2011 ~2012 第三学期)设 计 题 目: EDA与数字系统课程设计 学 院 名 称: 电气与自动化工程学院 专 业(班 级...

    2个月前   
    53    0

    C语言课程设计学生通讯录管理系统设计

    C语言课程设计学生通讯录管理系统设计一、题目内容的描述学生通讯录管理系统设计设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类...

    11个月前   
    378    0

    《SQL-Server-数据库设计》课程设计报告(图书馆管理系统)

    《SQL Server 数据库设计》课程设计报告课题名称:图书馆管理系统_班级:_ 软大班____学号:_ __姓名:___ ___完成日期:_2...

    7个月前   
    247    0

    学籍管理系统的设计与实现说明书软件项目开发课程设计

     ******************* 实践教学 ******************* XX学 计算机与通信学院 20XX年秋季学期 软件开发综合训练 课程设计 题...

    2年前   
    996    0

    基于WEB的图书管理系统的设计与实现课程设计

    软件工程课程设计报告基于WEB的图书信息管理系统的设计与实现所 在 学 院 信息科学技术学院 专 业 名 称 计算机科学与技术 ...

    7个月前   
    277    0

    XX加工厂供配电系统设计供配电系统设计报告课程设计

    xx大学 供配电系统设计报告 课 题 某加工厂供配电系统设计 专业班级 自动化**** ...

    10个月前   
    517    0

    《调速系统课程设计》课程设计教学指导方案

     调速系统 课程设计 教学指导方案 双闭环直流电机调速系统设计 设计题目: 电气信息学院...

    2年前   
    923    0

    通信系统课程设计基于MATLAB的FM通信系统设计

    XX大学课 程 设 计 报 告课程名称: 通信系统课程设计 设计名称: 基于MATLAB的FM通信系统设计 姓...

    7个月前   
    227    0

    仿QQ聊天系统课程设计

    仿QQ聊天系统课程设计目录绪论 1一.需求分析 11.1软件功能需求分析 21.2 安全需求分析 2二.总体设计 32.1 软件结构图 32.2 功能描述 32.2.1注册功能概要 42.2....

    4个月前   
    167    0

    字符串处理系统课程设计

     课程设计(论文)任务书 软件  学  院  软件+交通运输  专  业   班 一、课程设计(论文)题目 字符处理系统  ...

    3个月前   
    67    0

    基于Android的教学课程系统设计与开发

    摘 要移动应用已经成为人们生活必不可缺的一部分,大学生身为移动应用的最大用户群体,在生活学习娱乐各个方面都与移动应用有着紧密联系,然而针对大学生校园学习的移动应用却寥寥无几,因为不同的...

    1个月前   
    67    0

    物流信息系统课程设计报告

    课程设计指导教师评定成绩表项目分值优秀(100>x≥90)良好(90>x≥80)中等(80>x≥70)及格(70>x≥60)不及格(x<60)评分参考标准参考标准参考标准参考标准参考标准学习态...

    10个月前   
    272    0

    Web系统开发课程设计报告

    录入学生基本信息的功能学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。1.2、修改学生基本信息的功能

    1年前   
    682    0

    物流系统课程设计报告书

     XX大学 物流系统课程设计报告书 学院名称 : 经济与学院 学生姓名 : 专业名称 : 物流管理 班级 : 物流班 时间 ...

    2年前   
    1056    0