面向对象程序设计------学生选课系统(SRS)项目设计书

上传人:xins****2008 文档编号:111872449 上传时间:2022-06-21 格式:DOC 页数:14 大小:406KB
返回 下载 相关 举报
面向对象程序设计------学生选课系统(SRS)项目设计书_第1页
第1页 / 共14页
面向对象程序设计------学生选课系统(SRS)项目设计书_第2页
第2页 / 共14页
面向对象程序设计------学生选课系统(SRS)项目设计书_第3页
第3页 / 共14页
点击查看更多>>
资源描述
面向对象程序设计-学生选课系统(SRS)项目设计书 一:项目介绍2二:需求说明31 系统简要分析32 应用需求分析33 场景说明4场景1:“选修一门课程”4场景2:“选修一门课程2”4场景3:“退选一门课程”5三:软件设计文档:51.学生选课系统(SRS)UML图:52.场景1的界面63.场景1的协作图:64场景1的时序图:75.调和测试7四、核心代码81.Person类:82.Student类:83.Professoer类:104.Course类:105.Section类:116. ScheduleOfClasses类:127. TranscriptEntry类:12五、 心得和体会13 一:项目介绍 项目名称:学生选课系统(SRS) 项目大致的功能和性能要求:该系统让学生能够在线为每学期选择课程,还要能跟踪完成学位要求的过程。当一个学生考入该大学时,他/她使用SRS制定一个学习计划,其中的课程要满足特定的学位计划,然后选定自己的导师。SRS将检验该计划是否能满足该学生获得特定学位的需要。确定了学习计划后,在每个学期前的注册期限内,学生可以在线查看课程时间表,选择自己想听的课程。如果该课程有多位教授同时指导,还要指明希望听课的时段(周几,何时)。SRS将检验该生是否满足选中课程的选课先决条件,方法是查阅该生的在线成绩单和学位记录(学生可以随时在线查看自己的成绩单)。假定(a)选定课程的先决条件得到满足,(b)课程满足学生的学习计划,和(c)选定课程尚有名额空余,则学生将选中该课程。如果条件(a)和(b)得到满足,条件(c)未得到满足,则学生被放入一个“先到先得”对列中。如果出现名额空余(原因可能时有学生放弃选修,或课程选修名额增加),则该生自动选修该课程,同时系统会向该生发送一封电子邮件通知,此时如果打算不再继续选秀这门课,学生应该退选该课程;否则,就得为选修该课程付费。退选课程可以在该门课程开学后一周之内进行。二:需求说明1 系统简要分析管理员可以通过超级用户身份登录,对系统进行全面的管理,对新用户的添加,删除,对信息进行管理。管理员可以对老师及同学的帐户进行管理,老师、学生不同身份的用户进入不同的界面,进行不同的操作。教师可以发布自己本学期所要教的课程,以及对学生成绩进行管理。同学可以通过查询本学期所开设课程进行选择。 2 应用需求分析学生选课系统需要满足来自三方面的需求,这三个方面分别是学生、教师和管理员。学生的需求是查询院系的课程、学生选课情况及学生信息的修改;教师对选课系统学生选课情况进行操作,同时形成学生选课查看确认;选课管理员的功能最为复杂,包括对学生、教师、选课进行管理和统计,及系统状态的查看、维护并生成选课报表。学生可以直接查看选课情况,学生可以根据本人学号和密码登录系统,还可以进行本人学科成绩情况的查询和维护部分个人信息。一般情况下,学生只应该查询和维护本人的选课情况和个人信息,若查询和维护其他学生的选课及成绩查询信息,就要知道其他学生的学号和密码。这些是很难得到的,特别是密码,所以不但满足了学生的要求,还保护了学生的个人隐私。学校工作人员有修改学生选课的权限,所以需对工作人员登陆本模块进行更多的考虑。在此系统中,学校工作人员可以为学生加入选课或是登陆记录,并打印生成相应的报表给用户查看和确认院系管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对选课信息、教师信息、总体选课情况信息的查询和统计、工作人员和管理人员信息查看及维护。学校管理员可以浏览、查询、修改、统计选课的基本信息;浏览、查询、统计和修改学生选课的基本信息,浏览、查询、统计学生信息,但不能添加删除和修改学生的信息,这部分功能应该由院系工作人员执行,但是,删除某条学生选课基本信息记录时,应实现对该学生选课的级联删除。并且还应具有生成选课报表,并打印输出的功能。设计不同用户的操作权限和登陆方法对所有用户开放的学生选课查询和个人部分信息维护查看个人情况信息维护学生个人密码根据选课情况对数据库进行操作并生成报表根据选课情况对数据库进行操作并生成报表查询及统计各种信息维选课信息维护工作人员和管理员信息维护学生信息处理信息的完整性。 本系统主要实现教师信息管理、学生信息管理、课程信息管理和系信息管理,其中教师信息管理有教师姓名、教师工号、教师职称、教师所属系;学生信息管理有学生姓名、学生学号和学生所在系;课程信息管理有课程名称、学分、上课地点、已选人数、课程性质、开课系、课程人数;系信息管理有系号和系名。(1)学生信息模块完成学生的登陆,然后根据各位同学所在的系不同,调用相应的选课模块。其中学生登录模块的功能是验证登录人员确实是本院的学生,学生启动本系统后,系统提示输入学生学号码和密码,验证后进入主控操作界面。 (2)教师信息模块完成教师的登陆,然后根据各位教师所在的系不同,教师所教的课程不同,调用所选的课程.其中教师登陆模块的功能是验证登录人员确实是本院的教师,教师启动本系统后,系统提示输入教师工号和密码,验证后进入主控操作界面。 (3)课程信息管理包括必修课程和选修课程,学生必需先登陆才能进行对课程的选课否则不能进入选课系统. (4)系信息管理中学生必需选重所在的系号和系名才能进行选课,否则并不能进行选课.3 场景说明场景1:“选修一门课程” 一个名为Fred的学生成功选修了一门课程,事件顺序如下:1. Fred,一名学生,登入SRS2. 他查看本学期的课程表,决定要选修的课程。3. Fred申请课程“对象入门”的选修资格,课程代码是OBJ101.4. 系统检查Fred的学习计划,确保申请的课程符合他的学位目标(假设学生不允许参加学习计划之外的课程)。5. 系统检查他的成绩单,确保他已经修完了先修课程如果存在的话。6. 确认该门课程有空余选修名额。7. 这门课程被添加到Fred的课程列表中。 从Fred的角度看来,他希望发生这些事情:在登录进入SRS后,从可选课程列表中选择课程OBJ101然后点击“添加”按钮。场景2:“选修一门课程2” 1. Fred,一名学生,登入SRS 2. 他查看本学期的课程表,决定要选修的课程。 3. Fred申请课程“对象入门”的选修资格,课程代码是OBJ101. 4. 系统检查Fred的学习计划,确保申请的课程符合他的学位目标(假设学生不允许参加学习计划之外的课程)。 5. 系统检查他的成绩单,检查他没有修完了先修课程,他不能选修该课程。场景3:“退选一门课程” 1. Fred,一名学生,登入SRS 2. 他查看本学期的课程表,决定要退选的课程。 3. Fred 退选课程“对象入门”的选修资格,课程代码是OBJ101. 4. 从可选课程列表中选择课程OBJ101然后点击“drop”按钮。三:软件设计文档:1.学生选课系统(SRS)UML图:2.场景1的界面3.场景1的协作图:4场景1的时序图:5.调和测试 在这一节中,我们主要讨论了两个问题,一个是系统的项目文档,另一个是系统的测试,下面我们分别加以说明。作为一个完整的系统,项目文档是其中不可缺少的部分也是相当重要的部分。好的文档能够使用户快速了解并准确的使用系统的各项功能。减少误操作,减少错误产生的可能,这对用户和开发人员都有很多的好处。查看问题描述的执行概要;类图;数据字典;用例文档;重要场景和对应的消息追溯图。由于本身能力的局限性,所以做编写的代码,即使经过反复检查也难免出错所以在本阶段力求使用有限的时间找出尽可能多的错误,力求系统尽量正确。 四、核心代码操作概念文档我们创建的SRS有以下功能:1,当GUI开始运行,本学期课程表上可用的课程将会被显示.2,在一个学生使用SRS GUI前,他必须登录。登录的动作是填写学号。3,如果学生已经登录,将显示学生的姓名和选修的课程(也就是学生目前的课程表)。4,在登录后,SRS GUI应该允许学生做以下动作: 从课程表中选择一门课程添加到他的课程表中 从课程表中删除一门课程 保存目前的课表到一个文件 从系统注销基于SRS需求规格说明书的类列表四、核心代码1.Person类:(1)Person类的字段:public abstract class Person private string name; private string ssn;(2)Person类的构造器;public Person(string name, string ssn) this.Name = name; this.Ssn = ssn; (3)Person的Tostring()方法:public abstract override string ToString();(4)Person类的Display()方法:public virtual void Display() Console.WriteLine(Person Information:); Console.WriteLine(tName: + this.Name); Console.WriteLine(tSoc.Security No.: + this.Ssn); 2.Student类:(1)Student类继承自Person类:public class Student : Person (2)Student类的字段:private string major; private string degree; private Transcript transcript; private ArrayList attends; private string password;(3)Student类的构造器 public Student(string name,string Ssn,string major,string degree):base(name,ssn) this.Major = major;this.Degree = degree;this .Tanscript=new Tanscript(this);attends=new ArrayList(); (4)Student的Property:public string Major get return major; set major = value; public string Degree get return degree; set degree = value; public Transcript Transcript get return transcript; set transcript = value; public string Password get return password; set password = value; (5)Display方法:public override void Display() base.Display();Console.WriteLine(Student-Specific Information:); Console.WriteLine(tMajor: +this.Major); Console.WriteLine(tDegree: +this.Degree); DisplayCourseSchedule(); PrintTranscript(); (6)AddSection方法:public void AddSection(Section s) attends.Add(s); (7) DropSection方法: public void DropSection(Section s) attends.Remove(s); 3.Professoer类:(1)Professor类的字段:private string title; private string department; private ArrayList teaches;(2)AgreeToTeach()方法: public void AgreeToTeach(Section s) teaches.Add(s); s.Instructor = this; 4.Course类:(1)Course类的字段:private string courseNo; private string courseName; private double credits; private ArrayList offeredAsSection; private ArrayList prerequisites;(2)Course类的方法:public void AddPrerequisite(Course c) prerequisites.Add(c); (3)HasPrerequisites方法:public bool HasPrerequisites() if ( prerequisites.Count 0 ) return true; else return false; (4) GetPrerequisites()方法: public IEnumerator GetPrerequisites() return prerequisites.GetEnumerator(); 5.Section类:(1)Section类的字段:private int sectionNo; private char dayOfWeek; private string timeOfDay; private string room; private int seatingCapacity; private Course representedCourse; private ScheduleOfClasses offeredIn; private Professor instructor;(2)Enroll()方法:public int Enroll(Student s) Transcript transcript = s.Transcript; if (s.IsEnrolledIn(this) | s.IsCurrentlyEnrolledInSimilar(this) | transcript.VerifyCompletion(this.RepresentedCourse) return PREVIOUSLY_ENROLLED; Course c = this.RepresentedCourse; if (c.HasPrerequisites() IEnumerator e = c.GetPrerequisites(); while ( e.MoveNext() ) Course pre = (Course)e.Current; if (!transcript.VerifyCompletion(pre) return PREREQ_NOT_SATISFIED; if (!ConfirmSeatAvailability() return SECTION_FULL; if ( !enrolledStudents.ContainsKey(s.Ssn) ) enrolledStudents.Add(s.Ssn, s); s.AddSection(this); return SUCCESSFULLY_ENROLLED; 6. ScheduleOfClasses类:(1) ScheduleOfClasses的字段:private string semester; private Hashtable sectionsOffered;(2)AddSection()方法:public void AddSection(Section s) string key = s.RepresentedCourse.CourseNo+ - +s.SectionNo; sectionsOffered.Add(key, s); s.OfferedIn = this; 7. TranscriptEntry类:(1)TranscriptEntry的字段:private string grade; private Student student; private Section section; private Transcript transcript;(2) ValidateGrade()方法:public static bool ValidateGrade(string grade) bool outcome = false; if (grade.Equals(F) | grade.Equals(I) outcome = true; if (grade.StartsWith(A) | grade.StartsWith(B) | grade.StartsWith(C) | grade.StartsWith(D) if (grade.Length = 1) outcome = true; else if (grade.Length 2) outcome = false; else if (grade.EndsWith(+) | grade.EndsWith(-) outcome = true; else outcome = false; return outcome; 8. Transcript类:(1)Transcript的字段:private ArrayList transcriptEntries; private Student studentOwner;(2) VerifyCompletion()方法:public bool VerifyCompletion(Course c) bool outcome = false; for (int i=0; itranscriptEntries.Count; i+) TranscriptEntry te = (TranscriptEntry)transcriptEntriesi; Section s = te.Section; if ( s.IsSectionOf(c) ) if ( TranscriptEntry.PassingGrade(te.Grade) ) outcome = true; break; return outcome; 五、 心得与体会 通过这几周SRS项目设计,我对面向对象程序设计语言C#和SRS管理系统有了一定的了解,在一定程度上扩展了我的视野,丰富了我的知识,同时也使我学会了如何使用所学的知识去解决一些实际的问题。不过在设计的过程中,我发现自己掌握的知识不够系统,理论知识也不够强化,在将理论投入到实践中时总是出现一些小问题。有 时候通过别人的指点会突然间恍然大悟,所以我觉得自己对知识的理解和熟练程度不够。在设计阶段,通过对课题的深入分析与研究,迫使我对技术有了一定的了解。 团结就是力量,一个项目设计的完成包含着很多人辛勤的汗水。在和别人合作过程中,我学会了耐心的听取别人的意见,并与别人和睦相处。我相信只有通过合作,才能充分发挥自己的优点,有团队精神才能使自己更出色。这次设计为我以后的工作道路奠定了一定的基础。14
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!