您当前的位置:首页 >  述职报告 >  领导述职报告 > 内容

软件工程实验报告学生成绩管理系统方案

无忧文档网    时间: 2021-01-06 15:24:10     阅读:

计算机科学与技术学院 《软件工程》课程设计报告 (2013/ 2014 学年 第 1 学期) 学生姓名:
学生专业:
计算机科学与技术 学生班级:
计算机 学生学号:
指导教师:
2014年X月X日 目 录 1 问题的定义 1 2可行性研究 2 2.1 技术可行性 2 2.2 经济可行性 2 2.3 操作可行性 2 3 项目开发计划 3 3.1 项目背景 3 3.2 项目目标 3 3.3 项目功能 4 4 需求分析 5 4.1 业务流程图 5 4.2 性能要求 5 4.3 数据流图 5 4.4 数据字典 7 5 概要设计 10 5.1 系统功能模块图 10 5.2 模块功能说明 10 6 数据库设计 12 6.1 外部接口与用户界面 12 6.2 内部接口 12 6.3 E-R图 12 6.4 数据结构设计 13 7 详细设计 15 7.1 系统程序流程图 15 7.2 界面设计 22 8 测试报告 23 8.1 测试系统模块 23 8.2测试摘要 25 8.3 不足之处 25 9 用户手册 26 9.1编写目的 26 9.2背景 26 9.3运行环境 26 附录 27 1 问题的定义 随着互联网的发展,利用INTERNET 技术来实现“无纸办公”这个概念已经深入人心,校园网作为学校信息化建设的一个平台在完成资源共享、互联网访问、教务管理、电子备课等方面发挥了重要作用。服务教学、提高教学水平和效果是校园网建设的核心目标和核心价值,本系统立足于校园实际,着眼于未来发展,建成符合标准化协议、通用性较强、实用的系统,以提高高校的现代化管理水平,实现信息资源的共享。该项目主要是服务于教学方面,进一步方便教师的工作和学生的学习,从而从侧面达到提高学校的教学方面‘软件’质量。可以说它适用于每一所高校,因此很有开发价值。我们不敢说该产品是所有该系列产品中最好的,但是我们这里要强调的是它具有使用范围广,实用性强,使用简单,所花经费少等优点。我们可以肯定的说它将在高校的使用过程中其优点将得到最充分的体现。主要功能有三方面:管理员,登陆,进入系统,可以进行管理员操作。进行学生信息、教师信息、课程信息的编辑、查询、删除、修改、添加、打印等操作。学生,登陆,进入系统,可以进行查询、修改、打印等操作。教师,登陆,进入系统,可以进行查询、学生成绩录入、修改、打印等操作。

软件系统目标为一下几点:本系统具有很强的可靠行,可以对录入的学生信息进行效验,对数据进行修改、删除,规定各种权限。本系统中的模块具有很强的可续性,可以方便管理人员的修改与维护。本系统操作方便、灵活、简单。本系统可高效、快速的查询到学生的基本信息。

2可行性研究 2.1 技术可行性 该系统将大大改善数据处理的速度,并且更加方便的对数据进行管理,同时可以大大减少人力资源的浪费以及工作的支出。另外还可以提高查询的效率,降低查询的错误率,修改数据方便等。因为原来的系统是人工操作,所以效率比较低,相对于以前的系统,本小组开发的学生管理系统在效率上会更高,耗费最短的时间处理更多数据。

2.2 经济可行性 校园内部局域网络已经建成;
每个人电脑均已配置;
硬件投入不需要很大,另外,学校对系统的开发大力支持。因此经济上是可行的。

2.3 操作可行性 为了对学生成绩的管理方便,开发人员完成了全面的调查与分析,同时与目标用户进行了多次深入沟通,主要用于大中专院校学生日常管理工作,以规范的学生档案为基础,实现了学生考勤,学籍变更、学生奖惩、考试成绩、教师考勤等电算化管理,实现学校人力资源的优化和学生成绩管理的科学管理而设计的,通过试用本系统,可以更加有效的管理学生成绩信息,其中包括学生的基本信息,成绩信息并且具有信息的增加,查询,修改等功能,所以经过研究与探讨,该软件操作是可行的。

3 项目开发计划 3.1 项目背景 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能以为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩管理信息进行管理,具有手工管理所无法比拟的有点。例如,检索迅速、查找方便、可靠性高、存储量高、保密性好、寿命长、成本低等。这些有点能够极大地提高学生档案管理的效率,也是企业科学化、正规化管理,与世界接轨的重要条件。因此,开发大学成绩管理系统很有必要。

学生成绩管理系统是一个学校不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该为用户提供充足的信息和快捷的查询手段。同时,学生成绩管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。高校都迫切需要研制开发一款属于自己的功能强大,操作简单,具有人性化的学生成绩管理系统。

3.2 项目目标 在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的发展,信息化是社会进程的必然趋势,学校管理只有只有快,准,精才能发挥其价值。本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:系统应具有实用性、可靠性和适用性,同时注意到先进性。对各个数据库进行动态管理,防止混乱。能够按照用户选择的不同的条件进行简单查询和复合查询。能够对查询结果进行分类汇总。注意数据的安全性,具有数据备份和恢复的功能。方便用户的操作,尽量减少用户的操作。

3.3 项目功能 登录管理:为了保证系统的安全性,可以根据不同的用户权限来提供不同的服务。分为管理员登录和用户(教师、学生)登录两个子模块。账户管理:分为用户管理和修改密码两个子模块。其中用户管理子模块又包含了添加用户、修改用户和删除用户两部分。信息查询:在各基本表的基础上进行信息查询。分为学生资料查询和学生成绩查询两个子模块。

4 需求分析 4.1 业务流程图 经过对现有的资源以及软件分析,并多次与学生、老师、管理员等进行沟通后、将整个成绩查询业务流程抽象描述如下图4.1所示。

教师 成绩信息数据库 学生 登陆查询 登录 成绩表 查询信息 登录 信息管理 管理员 图4.1 学生成绩管理业务流程图 4.2 性能要求 为了满足用户的要求,系统必须要有高的运作速度,用户填写的信息输入到系统,系统必须能快速及时作出响应,迅速处理各项数据、信息,显示出所有必需信息,所以要求很高的信息量速度和大的主存容量;
由于要存贮大量的数据和信息,也还要有足够大的磁盘容量;
安全性也是系统最重要的性能需求之一,学生信息管理系统必须有可靠的安全措施,以保证用户的各项信息安全。

4.3 数据流图 该数据流图主要体现出了学生信息的录入以及教师将考核信息存入数据库,最终交给管理员。学生也可以通过软件从数据库查询自己的成绩信息以及个人信息。总体说明了系统管理员、学生、教师之间拥有的权利以及能够进行的一些操作。数据流图见下图4.2和4.3。

图4.2 顶层数据流图 图4.3 一层数据流图 4.4 数据字典 4.4.1 数据流 数据流里面包括了录入信息、成绩写入数据库、查询结果以及成绩表等几方面。具体信息如下表4-1、4-2、4-3、4-4。

表4-1 录入信息的数据字典 数据流编号:1 数据流名:录入信息 简述:用于写入学生各课成绩 数据流来源:密码检验 数据流去向:成绩登记 数据流项组成:录入信息=学生学号+学生姓名+性别+班级各课成绩 表4-2 成绩写入的数据字典 数据流编号:2 数据流名:成绩写入记录库 说明:用于学生成绩写入 数据流来源:成绩登记 数据流去向:成绩写入记录 数据流项组成:成绩写入记录=各课成绩 数据流编号:3 数据流名:查询结果 说明:用于显示学生查询的信息结果 数据流来源:学生信息查询 数据流去向:学生 数据流组成:查询信息=学生信息+各课成绩 数据流编号:4 数据流名称:成绩表 简述:学生成绩通知,在下学期前发给学生 数据流来源:成绩管理 数据流去向:学生 数据项组成:学号+学生姓名+课程名+成绩 数据流量:1张/学期 表4-3 查询结果的数据字典 表4-4 成绩表的数据字典 4.4.2 数据存储 数据存储里面主要包括了五张表。具体信息见表4-5、4-6、4-7、4-8、4-9。

表4-5 学生表数据字典 数据存储编号:001 数据存储名称:学生表 简述:登记学生信息 数据存储组成:学号+姓名+性别+班级+专业+系部 相关联的处理:成绩管理,课程管理 表4-6 管理员表数据字典 数据存储编号:002 数据存储名称:管理员表 简述:增加、修改、查询学生学籍 数据存储组成:学号+身份证号+高考号+姓名+性别+家庭住址+ 系部班级 相关联的处理:学籍管理,成绩管理,课程管理 表4-7 教师表数据字典 数据存储编号:003 数据存储名称:教师表 简述:教师上课安排 数据存储组成:教师姓名+所教课程+上课班级 相关联的处理:课程管理 数据存储编号:004 数据存储名称:学生选课表 简述:学生选课课程信息存储 数据存储组成:姓名 +系部班级+课程名称+课程编号+学号 相关联的处理:课程管理,成绩管理 表4-8 学生选课表数据字典 表4-9 学生成绩表数据字典 数据存储编号:005 数据存储名称:学生成绩表 简述:存放学生各科考试成绩 数据存储组成:姓名 +学号+系部班级+课程名称+课程编号 相关联的处理:课程管理,成绩管理 4.4.3 处理 处理主要分为身份验证和查询登记。具体信息见表4-10和4-11。

表4-10 身份验证数据字典 处理逻辑编号:01 处理逻辑名称:身份验证 简述:检查输入信息的合法性 输入的数据流:学号+密码 处理过程:根据输入的学号和密码,检索用户,确定用户类别,以确定该用户的权限,显示查询信息 输出的数据流:学生选课信息,学生成绩,学生学籍,密码修改 处理频率:频繁 表4-11 查询等级数据字典 处理逻辑编号:02 处理逻辑名称:查询登记 简述:查询专业表及课程表,成绩表 输入的数据流:教师名+教师号+密码 处理过程:根据输入的信息,确定用户类别,根据用户类别,显示查询信息 输出的数据流:学生成绩,班级表,课程表 处理频率:频繁 5 概要设计 5.1 系统功能模块图 根据前面的需求分析以及对软件的开发可能性学生成绩管理系统功能模块图一共分为学生子模块、教师子模块、管理员子模块等基本模块。且在学生子模块下面又包括了学生选课以及成绩查询模块;
教师子模块下面包括了教师选课模块;
管理员子模块包括了信息维护模块。成绩管理系统功能模块图如下图5.1所示。

图5.1学生成绩管理系统功能模块图 5.2 模块功能说明 1.在学生子模块中,学生可以在该模块中进行选课、退课,成绩查询,并且还可以对自己的个人信息进行增删查改等操作。

2. 在教师子模块中,教师可以在该模块中进行选课、退课,成绩录入,并且还可以对自己的个人信息进行增删查改等操作。

3.在管理员子模块中,管理员可以在此模块中维护本软件的远行,并且还可以对自己的个人信息进行增删查改等操作,还可以对教师学生的信息进行增删查改的操作。

4. 在学生选课模块中,学生可以登录后在数据库中选择自己所需要选择的课程进行提交、修改、选择等操作。

5. 在学生成绩查询模块中,学生可以登录自己的信息后,查询自己所需要的科目成绩,当然可以进行选择后查询自己各个学期的或者一学年的成绩。

6. 在教师选课模块中,教师可以在数据库中选择自己所要教授的课程以及班级。在这里教师可以查到课程的有关信息。

7. 在管理员修改信息模块中,管理员可以管理学生以及教师的一些基本信息。包括修改、查询、删除等操作。

6 数据库设计 6.1 外部接口与用户界面 在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。外观上也要做到合理化,考虑到用户多对WINDOW 风格较熟悉,应尽量向这一方向靠拢。在设计语言上,已决定使用Visual Studio .NET进行编程。总的来说,系统的用户界面应作到可靠性、简单性、易学习和使用。

6.2 内部接口 内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。具体参数的结构将在下面数据结构设计的内容中说明。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。

6.3 E-R图 初步E-R图和三范式E-R图如图6.1和6.2所示。其中6.1是初步E-R图,包括常用的实体以及属性。清楚的说明了学生、教师、管理员可以进行的一些操作以及反馈信息。图6.2是满足三范式的E-R图。具体信息如图6.1和6.2所示。

图6.1 初步E-R图 图6.2 三范式E-R图 6.4 数据结构设计 根据数据库的原理再加上E-R图的设计,将进行数据结构设计。在数据库下创建5个主要数据表。其结构如下所示:
1. 班级信息表(ClassInfo),如表6-1所示。

表6-1 ClassInfo表 字段 类型 描述 ClassID 自动编号 班级编号(主键) ClassName 文本 班级名称 SpecialtyName 文本 专业名称 ClassNumber 文本 教书编号 Length 数字 学制 Teacher 文本 班主任 EnrolmentTime 日期/时间 入校时间 Remark 备注 备注 2. 课程表(Course),如表6-2所示。

表6-2 Course表 字段 类型 描述 CourseID 自动编号 课程编号(主键) ClassID 数字 班级编号 Course 文本 课程名称 Semester 文本 学期 3. 成绩表(ScoreInfo),如表6-3所示。

表6-3 ScoreInfo表 字段 类型 描述 ScoreID 自动编号 成绩编号(主键) Semester 文本 学期 StudentNumber 文本 学生学号 Course 文本 课程 Score 数字 分数 4.专业表(SpecialtyInfo),如表6-4所示。

表6-4 SpecialtyInfo表 字段 类型 描述 SpecialtyID 自动编号 专业编号 SpecialtyName 文本 专业名称(主键) Remark 备注 备注 5. 学生信息表(StudentInfo),如表6-5所示。

表6-5 StudentInfo表 字段 类型 描述 StudentID 自动编号 自动编号(主键) StudentNumber 文本 学号 Name 文本 姓名 Sex 文本 性别 Address 文本 家庭住址 Telephone 文本 联系电话 ClassID 数字 班级编号 Remark 备注 备注 7 详细设计 7.1 系统程序流程图 7.1.1 学生基本信息模块 学生基本信息模块包括了学生的个人信息以及成绩查询的选项。在这里学生可以根据自己的需求选择要进行的操作。进行相应的操作就会把相应的信息输出,以便能够清楚的查询自己所需要的知识。流程图如下图7.1所示。

图7.1学生基本信息流程图 7.1.2 学生选课模块 该模块主要包括了学生在选课数据库里进行选课的一些操作。学生可以在这里输入信息,然后选择自己想要选择的课程。当然,学生在这里也可以查询课程的一些相关信息。流程图如下图7.2所示。

图 7.2学生选课流程图 7.1.3学生成绩查询模块 该模块主要提供学生对成绩的查询信息。学生可以在此输入学号和密码后,查询自己想要查询的课程的成绩信息。流程图如下图7.3所示。

图7.3学生成绩查询流程图 7.1.4 教师基本信息模块 该模块主要说明了教师的一些基本信息。包括自己的授课查询以及对学生成绩的查询等一些操作。流程图如下图7.4所示。

图7.4教师基本信息流程图 7.1.5 教师选课模块 本模块主要说明了教师能够进行自己授课的一些选择。可以在选课信息表里选择自己要教授的课程。流程图如下图7.5所示。

图7.5教师选课流程图 7.1.6 管理员基本信息模块 该模块主要说明了管理员应该具备的一些权利以及对一些信息的管理以及查询。管理员可以在这里进行学生成绩的管理以及教师选课的一些信息管理。流程图如下图7.6所示。

图7.6管理员基本信息流程图 7.1.7 管理员信息维护模块 该模块主要说明了管理员可以对一些信息进行维护的操作。其中,这些信息可以是学生的或者是教师的信息都可以在这里进行维护。流程图如下图7.7所示。

图7.7管理员信息维护流程图 7.2 界面设计 用户登陆:该系统根据用户的身份实现了不同的功能,用户登陆时需要选择一种登陆方式(默认情况下是学生),系统再根据用户选择的登陆方式到相应的表中去搜索。例如,登陆时选择了教师登陆方式,系统将会在教师信息表中搜索是否存在与该用户的输入相符的信息,如果存在则进入教师主页,否则提示用户输入有误,请重新输入。

7.2.1 学生用户界面 学生的初始密码是由管理员指定的。学生登陆后,可以按照要求自行修改使用密码。首先需要输入原始密码,如果原始密码没有输入正确将不能修改密码,只有在原始密码正确的基础上,用户才能继续下面的操作。新密码设定后,系统还要求用户再输入一次重复密码,避免因为误输而导致密码丢失。查询指定学期成绩:学生可以查询自己指定学期的成绩和所有的成绩。方便学生了解自身情况。

选课系统:学生选课系统是针对学生进行网上选课而设计的,学生可以自主选择自己想修的课程。

7.2.2 教师用户界面 查询授课计划:教师可以利用该系统实现查询授课计划的功能,教师不仅可以看到自己本学期要授的课程信息,还能查看选修对应课程的学生名单,同时可以添加对应课程的学生成绩。帮助教师提高了工作效率。

查询学生基本信息:教师可以查询学生的基本信息,以帮助教师了解学生情况。

7.2.3 管理员界面 学生基本信息管理:学生基本信息管理包括学生基本信息添加、学生基本信息修改、学生基本信息删除。下面给出的是学生信息添加界面 教师基本信息管理:教师基本信息管理包括教师基本信息添加、教师基本信息修改以及教师基本信息删除。

8 测试报告 8.1 测试系统模块 首先进入该软件如下图8.1所示,可以进行用户的选择。

图8.1 登录系统 进入教师模块可以对学生的成绩进行录入,包括课程编号、课程名、学分、平时成绩、实验、卷面成绩等信息。如下图8.2所示。

图8.2 教师模块 进入学生模块后,可以输入学号来进行成绩的查询。其中成绩包括平时成绩、实验成绩、卷面成绩等信息。如下图8.3所示。

图8.3学生模块 进入管理员模块后,可以进行学生基本信息录入、查询学生信息、班级信息、删除等操作。也可以将成绩按照综合成绩排或者学分来排序。入下图8.4所示。

图8.4 管理员模块 8.2测试摘要 软件所要实现的功能及程序的关系如下表8-1:
表8-1 软件测试功能 8.3 不足之处 测试的时候有些算法还需简化,由于安全性与权限及运行速度要达到一个平衡。我们还有待找到一个平衡支点。要使软件更加的安全和权限更好的分配给不同的用户。设计时还应该尽可能多的设计更好的模块。使得模块功能更多,但结构更简洁。使每个人都能轻易的掌握操作原理以及技巧。

9 用户手册 9.1编写目的 编写该文档是为了指导普通用户使用操作该程序。处理和查询想要知道的数据,并为测试提供依据。该文档的阅读者为普通用户和测试人员。

9.2背景 1)待开发系统软件名称:学生成绩管理系统;

2)本项目的任务提出者是学校信息管理系统的各位老师,由本小组负责开发,用于太原科技大学广大师生成绩查询及管理;

3)开发背景:本系统属于太原科技大学网络管理系统的学生成绩管理模块,实现的是网络管理系统中关于学生成绩管理的子功能,通过此软件,提高用软件工程分析问题、解决问题的能力,同时增强对数据库和VC的使用能力。

9.3运行环境 9.3.1硬设备 1)至少具有奔腾III800,128M内存配置的计算机;

2)Microsoft鼠标,或其他兼容鼠标;

3)至少500M的磁盘空间;

4)至少32MB的RAM存储器。

9.3.2支持软件 操作系统:WIN98,WIN2000,WINXP和Vista等   执行程序:visual C 数据库:SQL Sever 2000 9.3.3数据结构 本系统的使用需要连接SQL Server数据库,当需更新数据库时,可以新建数据库,并且在数据库中按需要新建各个表格,存储在相应的文件夹中。

附录 程序源代码如下:
#include<iostream> #include<string> #include<fstream> #include<conio.h> using namespace std; class stu { char number[10]; char name[20]; public: stu(char a[10],char b[20]) { strcpy(number,a); strcpy(name,b); } char* getnumber() { return number; } char* getname() { return name; } }; class stu1 : public stu { char sex[4]; char sushenumber[8]; char telephone[10]; public: stu1(char a[10],char b[20],char c[4],char d[8],char e[10]):stu( a, b) { strcpy(sex,c); strcpy(sushenumber,d); strcpy(telephone,e); } friend void main(); }; class stu2 : public stu { char classnumber[8]; char classname[10]; double score,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore; public: stu2(char a[10],char b[20],char f[8],char g[10],double aa,double bb,double cc,double dd,double ee,double ff):stu(a,b){ strcpy(classnumber,f); strcpy(classname,g); score=aa; pingshigrade=bb; shiyangrade=cc; juanmiangrade=dd; zonghegrade=ee; lastscore=ff; } friend void main(); }; void main() { char c; string password;int flag7=0;int s=0; cout<<“欢迎进入学生成绩管理系统“<<endl; cout<<“请输入你的登录密码“<<endl; do { do{ c=getch(); if(c==char(13)) break; password+=c;cout<<“*“; }while(1); cout<<“\n“; if(password==“123456“) { flag7=1; char number[10]; char name[20]; char sex[4]; char sushenumber[8]; char telephone[10]; int i=0,I=0,j=0;int ja;ja=0; ofstream *file[50]; stu1 *s[50]; stu2 *s1[50]; char classnumber[8]; char classname[10]; double score,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore; bool flag=0; int p; char c6; do { cout<<“请输入你的身份:“<<endl; cout<<“1 管理员“<<endl; cout<<“2 老师“<<endl; cout<<“3 学生“<<endl; do { cin>>p; if(1<=p&&p<=3) flag=1; else cout<<“错误指令!请重新输入。“<<endl; }while(flag==0); if(p==1) { cout<<“欢迎进入管理员模块“<<endl; char c4; do{ cout<<“请输入您要进行的操作“<<endl; cout<<“1 学生基本信息录入“<<endl; cout<<“2 查询学生基本信息“<<endl; cout<<“3 查询班级学生信息“<<endl; cout<<“4 删除功能“<<endl; cout<<“5 按综合成绩实现排序功能“<<endl; cout<<“6 按实得学分实现排序功能“<<endl; int m; cin>>m; switch(m) { case 1: char c; do{ cout<<“请输入学号“<<endl; cin>>number; cout<<“请输入姓名“<<endl; cin>>name; cout<<“请输入性别“<<endl; cin>>sex; cout<<“请输入宿舍号码“<<endl; cin>>sushenumber; cout<<“请输入电话号码“<<endl; cin>>telephone; file[ja]=new ofstream(“d:\\a.txt“,ios::app); *file[ja]<<“学号“<<number<<“姓名“<<name<<“性别“<<sex<<“宿舍号码“<<sushenumber<<“电话号码“<<telephone<<endl; ja++; s[i]=new stu1(number,name,sex,sushenumber,telephone); i++; cout<<“数据录入成功,想继续输入吗(y/n)“<<endl; cin>>c; flag=0; do{ if(c!='y'&&c!='n') { cout<<“错误指令!请重新输入!“<<endl; cin>>c; } else flag=1; }while(flag==0); }while(c=='y'); break; case 2: //查询学生基本信息 char n[20]; char c1;int a; do{ int flag1=0; cout<<“请输入查询的方式“<<endl; cout<<“1 学号查询“<<endl; cout<<“2 姓名查询“<<endl; cin>>a; if(a==1) { cout<<“请输入你要查询的学生的学号“<<endl; cin>>n; for(int j=0;j<i;j++) if(strcmp(n,(*s[j]).getnumber())==0) { flag1=1; cout<<“你要查询的学生是:
“<<(*s[j]).getnumber()<<endl; cout<<“学号“<<(*s[j]).getnumber()<<“姓名“<<(*s[j]).getname()<<“性别“<<(*s[j]).sex<<“宿舍号码“<<(*s[j]).sushenumber<<“电话号码“<<(*s[j]).telephone<<endl; } } if(a==2) { cout<<“请输入你要查询的学生的姓名“<<endl; cin>>n; for(int j=0;j<i;j++) if(strcmp(n,(*s[j]).getname())==0) { flag1=1; cout<<“你要查询的学生是:
“<<(*s[j]).getname()<<endl; cout<<“学号“<<(*s[j]).getnumber()<<“姓名“<<(*s[j]).getname()<<“性别“<<(*s[j]).sex<<“宿舍号码“<<(*s[j]).sushenumber<<“电话号码“<<(*s[j]).telephone<<endl; } } if(flag==0) cout<<“ 对不起!你查询的学生不存在!“<<endl; cout<<“你想继续查询吗?(y/n)“<<endl; cin>>c1; if(c1!='y'&&c1!='n') { cout<<“指令错误!请重新输入!“<<endl; cin>>c1; } }while(c1=='y'); break; case 3: char c2;char m[10]; do{ int flag2=0; cout<<“请输入你要查询的班级“<<endl; cin>>m; cout<<“信息如下“<<endl; for(int j=0;j<i;j++) { char *x=(*s[j]).getnumber(); char xx[8]; for(int jj=0;jj<=6;jj++) { xx[jj]=*x; x++; } xx[7]='\0'; if(strcmp(m,xx)==0) { flag2=1; cout<<“学号“<<(*s[j]).getnumber()<<“姓名“<<(*s[j]).getname()<<“性别“<<(*s[j]).sex<<“宿舍号码“<<(*s[j]).sushenumber<<“电话号码“<<(*s[j]).telephone<<endl; } } if(flag2==0) cout<<“对不起!你输入的班级不存在!“<<endl; cout<<“你想继续查询吗?(y/n)“<<endl; cin>>c2; if(c2!='y'&&c2!='n') { cout<<“指令错误!请重新输入!“<<endl; cin>>c2; } }while(c2=='y'); break; case 4: char nn[10];char cz; int flag2,mm,mmm; do{ cout<<“请输入您要删除的学生学号:“<<endl; cin>>nn; for(int hh=0;hh<i;hh++) { if(strcmp(nn,s[hh]->getnumber())==0) { flag2=1; i--; mm=hh; do{ s[mm]=s[mm+1]; mm++; }while(mm<=i); hh--; } } for(int hhh=0;hhh<I;hhh++) { if(strcmp(nn,s1[hhh]->getnumber())==0) { flag2=1; I--; mmm=hhh; do{ s1[mmm]=s1[mmm+1]; mmm++; }while(mmm<=I); hhh--; } } if(flag2==0) cout<<“您要求删除的对象本来就不存在!请检查输入的正确性!“; cout<<“要继续删除吗?(y/n)“<<endl; cin>>cz; if(cz!='y'&&cz!='n') { cout<<“指令错误!请重新输入!“<<endl; cin>>cz; } }while(cz=='y'); break; case 5: int k;int k1,i1;char na[10];stu2 *temp; stu2 *s2[50];k1=0; cout<<“请输入你要排序的课程名“<<endl; cin>>na; cout<<“1 升序排序“<<endl; cout<<“2 降序排序“<<endl; cin>>k; for( i1=0;i1<I;i1++) { if(strcmp((*s1[i1]).classname,na)==0) { s2[k1]=s1[i1]; k1++; } else{ cout<<“无此课程\n“; } } if(k==1) { for( int ii=0;ii<k1-1;ii++) for( j=ii+1;j<k1;j++) if((*s2[ii]).zonghegrade>(*s2[j]).zonghegrade) { temp=s2[ii]; s2[ii]=s2[j]; s2[j]=temp; } } if(k==2) { for( int ii=0;ii<k1-1;ii++) for( j=ii+1;j<k1;j++) if((*s2[ii]).zonghegrade<(*s2[j]).zonghegrade) { temp=s2[ii]; s2[ii]=s2[j]; s2[j]=temp; } } for( j=0;j<k1;j++) cout<<“学号“<<(*s2[j]).getnumber()<<“姓名“<<(*s2[j]).getname()<<“课程编号“<<(*s2[j]).classnumber<<“课程名称“<<(*s2[j]).classname<<“学分“<<(*s2[j]).score<<“平时成绩“<<(*s2[j]).pingshigrade<<“实验成绩“<<(*s2[j]).shiyangrade<<“卷面成绩“<<(*s2[j]).juanmiangrade<<“综合成绩“<<(*s2[j]).zonghegrade<<“实得学分“<<(*s2[j]).lastscore<<endl; break; case 6: //按实得学分实现排序功能 int q;int a1=0;char nam[10];stu2 *s3[50];stu2 *te; cout<<“请输入你要排序的课程名“<<endl; cin>>nam; cout<<“1 升序排序“<<endl; cout<<“2 降序排序“<<endl; cin>>q; for( int iii=0;iii<I;iii++) { if(strcmp((*s1[iii]).classname,nam)==0) { s3[a1]=s1[iii]; a1++; } } if(q==1) { for( int ii=0;ii<a1-1;ii++) for( j=ii+1;j<a1;j++) if((*s3[ii]).lastscore>(*s3[j]).lastscore) { te=s3[ii]; s3[ii]=s3[j]; s3[j]=te; } } if(q==2) { for( int ii=0;ii<a1-1;ii++) for( j=i+1;j<a1;j++) if((*s3[ii]).lastscore<(*s3[j]).lastscore) { te=s3[ii]; s3[ii]=s3[j]; s3[j]=te; } } for( j=0;j<a1;j++) cout<<“学号“<<(*s3[j]).getnumber()<<“姓名“<<(*s3[j]).getname()<<“课程编号“<<(*s3[j]).classnumber<<“课程名称“<<(*s3[j]).classname<<“学分“<<(*s3[j]).score<<“平时成绩“<<(*s3[j]).pingshigrade<<“实验成绩“<<(*s3[j]).shiyangrade<<“卷面成绩“<<(*s3[j]).juanmiangrade<<“综合成绩“<<(*s3[j]).zonghegrade<<“实得学分“<<(*s3[j]).lastscore<<endl; break; } cout<<“你想使用管理员其他功能吗?(y/n)“<<endl; cin>>c4; if(c4=='n') break; }while(c4=='y'); } if(p==2) { char c3,c5; cout<<“欢迎进入教师模块(只能录入成绩)“<<endl; do{ cout<<“请输入你教学的课程编号“<<endl; cin>>classnumber; cout<<“请输入你教学的课程名 “<<endl; cin>>classname; do{ cout<<“请输入学生学号“<<endl; cin>>number; cout<<“请输入学生姓名“<<endl; cin>>name; cout<<“本课程学分“<<endl; cin>>score; cout<<“该生平时成绩“<<endl; cin>>pingshigrade; cout<<“实验成绩“<<endl; cin>>shiyangrade; cout<<“卷面成绩“<<endl; cin>>juanmiangrade; if(shiyangrade==-1) zonghegrade=pingshigrade*0.3+juanmiangrade*0.7; else zonghegrade=pingshigrade*0.15+shiyangrade*0.15+juanmiangrade*0.7; if(90<=zonghegrade&&zonghegrade<=100) lastscore=score; else if(80<=zonghegrade) lastscore=score*0.8; else if(70<=zonghegrade) lastscore=score*0.75; else if(60<=zonghegrade) lastscore=score*0.6; else lastscore=0; file[j]=new ofstream(“d:\\b.txt“,ios::app); *file[j]<<“学号“<<number<<“课程编号“<<classnumber<<“课程名称“<<classname<<“学分“<<score<<“平时成绩“<<pingshigrade<<“实验成绩“<<shiyangrade<<“卷面成绩“<<juanmiangrade<<“综合成绩“<<zonghegrade<<“实得学分“<<lastscore<<endl; j++; s1[I]=new stu2(number,name,classnumber,classname,score,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore); I++; cout<<“数据输入成功,想继续录入吗(y/n)“; cin>>c3; int flag3=0; do{ if(c3!='y'&&c3!='n') { cout<<“错误指令!请重新输入!“<<endl; cin>>c3; } else flag3=1; }while(flag3==0); }while(c3=='y'); cout<<“其余老师需要录入成绩吗(y/n)“; cin>>c5; int flag5=0; do{ if(c5!='y'&&c5!='n') { cout<<“错误指令!请重新输入!“<<endl; cin>>c5; } else flag5=1; }while(flag5==0); }while(c5=='y'); } if(p==3) { cout<<“欢迎进入学生模块“ <<endl; char num[10]; cout<<“请输入你的学号“<<endl; cin>>num; int ii=0;double sum=0; for(int j=0;j<I;j++) { if(strcmp((*s1[j]).getnumber(),num)==0) { cout<<“课程编号“<<(*s1[j]).classnumber<<“课程名称“<<(*s1[j]).classname<<“学分“<<(*s1[j]).score<<“平时成绩“<<(*s1[j]).pingshigrade<<“实验成绩“<<(*s1[j]).shiyangrade<<“卷面成绩“<<(*s1[j]).juanmiangrade<<“综合成绩“<<(*s1[j]).zonghegrade<<“实得学分“<<(*s1[j]).lastscore<<endl; ii++;sum+=(*s1[j]).lastscore; } } cout<<“共修“<<ii<<“科“<<“ “<<“实得学分“<<sum<<endl; } cout<<“你想以其他身份登陆吗?(y/n)“<<endl; cin>>c6; }while(c6=='y'); } else { cout<<“错误密码,重新输入“<<endl; password=“\0“; } }while(flag7==0); } 欢迎您的光临,Word文档下载后可修改编辑.双击可删除页眉页脚.谢谢!让我们共同学习共同进步!学无止境.更上一层楼。

《软件工程实验报告学生成绩管理系统方案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式

相关热搜

《软件工程实验报告学生成绩管理系统方案.doc》

VIP请直接点击按钮下载本文的Word文档下载到电脑,请使用最新版的WORD和WPS软件打开,如发现文档不全可以联系客服申请处理。

文档下载
VIP免费下载文档

浏览记录