数据结构之学生成绩管理系统

合集下载

数据结构之学生成绩管理系统

数据结构之学生成绩管理系统

数据结构之学绩管理系统【正文】1:引言1.1 编写目的本文档旨在设计一个学绩管理系统,来有效管理学生的各门课程成绩。

1.2 范围本文档将详细描述学绩管理系统的各个模块、功能和操作流程,并提供必要的设计和实现细节。

1.3 定义、缩略词和缩写- 学绩管理系统:用于管理学生的各门课程成绩的软件系统。

- 学生:指在学校注册并接受教育的个体。

- 课程:学生所学习的各门课程科目。

2:需求分析2.1 功能需求2.1.1 学生信息管理- 添加学生信息:包括学生姓名、学号、班级等基本信息。

- 修改学生信息:对已存在的学生信息进行修改操作。

- 删除学生信息:从系统中删除学生的信息。

2.1.2 成绩管理- 添加成绩:录入学生的各门课程成绩。

- 修改成绩:对已录入的成绩进行修改操作。

- 查询成绩:根据学生学号或姓名查询学生的成绩信息。

- 统计成绩:统计每门课程成绩的平均值、最高分和最低分。

2.2 性能需求2.2.1 响应时间- 系统应能够在用户输入操作后即时响应,保证操作的实时性。

2.2.2 数据存储- 系统应能够快速、可靠地存储和检索学生信息和成绩数据。

2.3 安全需求2.3.1 访问控制- 系统应设定不同用户角色,具备不同的访问权限。

- 管理员用户可以对学生信息和成绩数据进行修改和删除,普通用户仅可以查询和统计成绩。

2.3.2 数据保密性- 系统应保护学生个人信息和成绩数据的隐私,仅允许授权用户访问。

3:系统设计与实现3.1 系统架构3.1.1 前端设计- 使用界面简洁直观的图形化界面,方便用户操作。

- 考虑到不同平台的兼容性,采用跨平台的前端技术。

3.1.2 后端设计- 使用面向对象的编程语言实现系统的后端逻辑。

- 设计合理的数据结构和算法,以满足系统的性能需求。

3.2 数据库设计3.2.1 学生信息表- 设计学生信息表,包括学生姓名、学号、班级等字段。

- 为学号字段设置主键,确保唯一性。

3.2.2 成绩表- 设计成绩表,包括学生学号和各门课程成绩字段。

(2023)数据结构课设报告学生成绩管理系统(一)

(2023)数据结构课设报告学生成绩管理系统(一)

(2023)数据结构课设报告学生成绩管理系统(一)数据结构课设报告学生成绩管理系统一、背景介绍为了方便教师管理学生的成绩,提高数据处理的效率和准确性,我们团队开发了一款可以管理学生成绩的系统。

二、需求分析•教师可以登录系统,并进行学生信息的录入、修改、查询和删除。

•教师可以录入、修改、查询和删除学生的成绩。

•学生也可以登录系统,并查看自己的成绩。

•教师和学生的密码需要进行加密存储,并能够找回密码。

三、设计方案1. 数据结构设计我们采用链表的数据结构,实现学生信息和成绩的存储。

- 学生信息:学号、姓名、密码。

- 学生成绩:科目、成绩。

2. 模块划分•登录模块:实现教师和学生的登录、密码加密和找回密码。

•学生信息管理模块:实现学生信息的录入、修改、查询和删除。

•成绩管理模块:实现成绩的录入、修改、查询和删除。

•学生成绩查询模块:实现学生查看自己成绩的功能。

3. 界面设计我们采用Java Swing库实现图形化界面,美观易用。

四、开发过程1. 环境配置我们使用Java语言进行开发,并采用MySQL数据库存储数据。

开发工具为Eclipse和Navicat。

2. 实现过程在开发过程中,我们分别完成了登录模块、学生信息管理模块、成绩管理模块和学生成绩查询模块。

同时,我们进行了严格的测试和优化,保证了系统的稳定性和用户体验。

五、总结通过本次课设,我们学习到了如何设计、实现一款简单的大型软件。

同时,我们也深入理解了数据结构的应用和开发过程中需要注意的问题。

未来,我们将继续学习和提升自己的技术水平,为社会创造更多有用的产品。

六、存在的问题和改进计划1. 学生信息和成绩输入需要更为便捷目前的输入方式需要逐一输入每个学生的信息以及成绩,如果要录入多个学生的信息,效率不高。

我们计划实现批量导入的功能,可以通过Excel表格导入学生信息和成绩。

2. 安全性还需要更高的保障目前我们只是简单使用密码加密保护了教师和学生的账户信息,如果系统被攻击者入侵,那么所有的账户信息和成绩信息都会暴露,对学生隐私和数据安全造成极大威胁。

学生成绩管理系统+数据结构

学生成绩管理系统+数据结构
3。3插入新信息 ....。....。..。。。.。。.。.。。。。.....。..。。。.。.。..。..。。.。.。.。.。。....。...。..。。.。。。..。.。。.。.。。。。。。.。。.。。。.。。..。。..。。。.。。。。。。。。。。... 6
3.4更新维护。.。。.。..。。。。.。.。....。.。.。......。。.。。...。.。......。。。。。...。。。。。.。。.。..。。。.。.。....。..。。.。。.。..。.。..。...。。....。。.。..。...。..。.。... 7
3。9统计。.。。.。。。。。.。。...。.。。。。。。..。...。.。.。。。。。。.。。。..。。。.。.。.。.。。。.。。..。。.。.。。.。。。。。.。。....。。。。.。。。。.。。。.。...。..。.。....。。.。.。。.。.。.。。....。.. 9
3.10图表.。.。。。...。。..。...。。。.。。.。。..。。..。。..。。..。.。。.。。.。。。。...。..。。。.。。....。.。.。。。.。。。。。。.。。.。。。.。。。.。。.....。。.。。.。.。...。。。。。。。.。....... 11 4 系统连编与运行 ..。。。。..。。。..。.....。。....。。.。.。。。。.。.。。..。。.。。...。。。.。..。...。..。。...。..。。。.。...。.。。。..。..。。。。...。..。.。。。。....。。..。。.. 13 5 总 结。.。。。。。.....。.....。。。。.。..。。。。。。..。。..。..。。.。...。.。。...。.。.。.。。。..。。....。.。..。..。...。。。。。.。.。。。.。。。....。.。.。.。..。.。。。。。.。..。.。.。。。。.。 14 6 参考文献。。。....。.。。...。。.。..。。........。.。......。。。...。。.。。.。。..。。..。。...。。.。..。。。....。.。...。。。。...。....。...。..。。.。....。。.。..。。。。。。。.。。。.. 15

数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用1. 引言1.1 学生成绩管理系统的重要性学生成绩管理系统在学校教育管理中起着至关重要的作用。

随着社会的发展和教育体制的不断完善,学生成绩管理系统已经成为学校教育管理工作中必不可少的一部分。

学生成绩管理系统可以帮助学校高效地管理学生成绩信息,及时了解学生学习情况,为学生提供个性化教学服务,提高教学质量。

学生成绩管理系统也是学校领导决策和教学评估的重要工具,能够为学校领导提供数据支持,帮助他们更好地制定学校教学方针和政策。

学生成绩管理系统在学校教育管理中扮演着重要角色,对提高教学质量、优化教育管理、促进学校发展都具有重要意义。

数据结构在学生成绩管理系统设计中的应用,将进一步提升系统的效率和可靠性,为学校教育事业的发展做出贡献。

1.2 数据结构在学生成绩管理系统中的应用引言:学生成绩管理系统是学校管理、教学工作中一个非常重要的组成部分,通过对学生成绩的记录、分析和管理,可以更好地了解学生的学习情况,为学校教学决策提供数据支持。

而在学生成绩管理系统的设计中,数据结构起着至关重要的作用。

1. 数据结构在学生成绩管理系统设计需求分析中的作用。

在设计学生成绩管理系统时,需要首先对系统需求进行分析和整理。

通过合理选择和设计数据结构,可以更好地满足系统的功能和性能要求,提高系统的效率和可靠性。

2. 数据结构在学生成绩管理系统中的具体应用。

在学生成绩管理系统中,常用的数据结构包括数组、链表、树等。

这些数据结构可以用来存储学生成绩信息,方便对成绩进行查找、修改和删除操作。

3. 学生成绩信息的存储和管理。

通过合理设计数据结构,可以有效地存储和管理大量学生成绩信息。

使用树结构可以快速查找某个学生的成绩信息,提高查询效率。

4. 成绩的排序和统计。

数据结构的设计还可以帮助实现成绩的排序和统计功能。

通过建立适当的数据结构,可以方便地对学生成绩进行排序和统计,为教师和学校提供及时准确的成绩数据。

数据结构之学生成绩管理系统

数据结构之学生成绩管理系统

数据结构之学生成绩管理系统在当今数字化的时代,学生成绩管理是学校教育教学工作中的重要组成部分。

一个高效、准确且易于使用的学生成绩管理系统对于学校的教学管理和学生的发展都具有重要意义。

接下来,让我们深入探讨一下这个系统的各个方面。

首先,我们来谈谈学生成绩管理系统的需求分析。

学校需要能够方便地录入学生的基本信息,如姓名、学号、班级等。

同时,对于每门课程的成绩,包括平时成绩、考试成绩、实验成绩等,都要有清晰准确的记录。

此外,系统还应支持不同的成绩计算方式,例如加权平均、算术平均等,以满足不同课程的要求。

老师能够快速查询和统计学生的成绩,了解学生的学习情况,为教学提供参考。

学生也应该能够查看自己的成绩,了解自己的学习进度和不足之处。

在设计学生成绩管理系统时,数据结构的选择至关重要。

对于学生的基本信息,我们可以使用线性表,如数组或链表来存储。

数组的优点是可以通过下标快速访问元素,但插入和删除操作较为复杂;链表则在插入和删除操作上具有优势,但访问速度相对较慢。

根据实际需求,如果学生信息的变动较少,我们可以选择数组;如果需要频繁地添加或删除学生信息,链表可能更为合适。

对于课程成绩的存储,我们可以使用树形结构,如二叉树或二叉搜索树。

二叉树可以方便地进行排序和查找操作,二叉搜索树则能够快速地查找特定的成绩信息。

另外,我们还可以使用哈希表来存储学生的成绩,通过哈希函数将学生的学号或姓名映射到一个特定的存储位置,从而实现快速的查找和访问。

在实现学生成绩管理系统时,我们需要考虑系统的功能模块。

首先是用户登录模块,确保只有授权的用户能够访问系统。

然后是学生信息管理模块,用于添加、修改、删除和查询学生的基本信息。

成绩录入模块是核心之一,老师可以通过这个模块输入学生的各项成绩。

成绩查询模块则要满足老师和学生不同的查询需求,老师可以查看全班或整个年级的成绩统计情况,学生可以查看自己的个人成绩。

成绩统计分析模块能够对成绩进行各种统计计算,如平均分、最高分、最低分、成绩分布等,为教学评估提供数据支持。

数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用学生成绩管理系统是一种用来管理和记录学生学习成绩的软件系统。

在设计学生成绩管理系统时,合理的数据结构设计是至关重要的。

数据结构可以帮助我们组织和管理大量的学生数据,提高系统的效率和性能。

下面将详细介绍数据结构在学生成绩管理系统设计中的应用。

最重要的数据结构是数组。

数组是一种线性数据结构,可以连续存储相同类型的数据。

在学生成绩管理系统中,我们可以使用数组存储学生的基本信息,如学号、姓名、班级等。

通过数组,我们可以方便地对学生进行排序、检索和修改等操作。

数组还可以用来存储学生的成绩信息,例如每门课程的成绩,通过数组的索引快速访问学生的成绩。

树是一种非常有用的数据结构,在学生成绩管理系统中也有广泛的应用。

树是一种分层的数据结构,可以用于组织和管理具有层次结构的数据。

在学生成绩管理系统中,我们可以使用树来组织和管理学生的班级和专业信息。

每个节点可以包含班级的名称、人数、平均成绩等信息。

通过树的层级关系,我们可以方便地查询班级和专业的平均成绩。

图也是学生成绩管理系统中常用的数据结构之一。

图是一种非线性的数据结构,可以用来表示不同实体之间的关系。

在学生成绩管理系统中,我们可以使用图来表示学生与课程之间的关系,例如学生选择了哪些课程。

通过图的节点和边,我们可以方便地查询学生选择的课程和相关成绩。

在学生成绩管理系统中,还可以使用其他数据结构如队列、堆等。

队列可以用来解决学生申请加入班级的管理问题,堆可以用来快速找到最高分或最低分的学生。

数据结构在学生成绩管理系统设计中起着至关重要的作用。

合理选择和设计数据结构,可以提高系统的效率和性能,使学生成绩管理更加方便和准确。

也需要根据具体系统需求和规模进行选择和设计,以满足学生成绩管理的功能和性能要求。

数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用【摘要】学生成绩管理系统设计中的数据结构应用是十分重要的。

本文从学生成绩管理系统概述开始介绍了数据结构在系统中的存储和组织方式,以及链表、树结构和哈希表在系统中的具体应用。

通过对比和分析不同数据结构的特点和优势,可以看出数据结构在学生成绩管理系统设计中的重要性和优势所在。

未来,随着技术的不断发展,学生成绩管理系统也会迎来新的挑战和机遇,数据结构在此过程中将起到关键作用。

深入理解和灵活运用数据结构,将有助于提高学生成绩管理系统的效率和性能,为教育管理工作带来更多便利和效益。

【关键词】数据结构、学生成绩管理系统、存储、组织、链表、树结构、哈希表、重要性、优势、发展。

1. 引言1.1 数据结构在学生成绩管理系统设计中的应用数据结构在学生成绩管理系统设计中的应用是指利用各种数据结构来存储和组织学生成绩数据,以便更有效地管理和分析学生成绩信息。

在学生成绩管理系统中,使用合适的数据结构能够提高系统的效率和性能,使得数据的存储和检索更加方便和快捷。

通过合理设计和应用数据结构,可以实现对学生成绩数据的统一管理和快速查询,提高教学管理工作的效率和质量。

2. 正文2.1 学生成绩管理系统概述学生成绩管理系统是一个涉及学生个人信息、课程信息、成绩信息等多种数据的系统。

它的主要功能是帮助学校管理学生成绩信息,包括学生的平时成绩、考试成绩以及综合评价等。

学生成绩管理系统可以帮助学校更好地了解学生的学习情况,及时发现问题并进行教育干预,提高学生成绩水平和学校的教学质量。

学生成绩管理系统通常包括学生信息管理、课程信息管理、成绩信息管理等模块。

在学生信息管理模块中,学校可以录入学生的基本个人信息,包括姓名、学号、性别、班级等。

在课程信息管理模块中,学校可以录入各个课程的基本信息,包括课程名称、授课教师、上课时间等。

在成绩信息管理模块中,学校可以录入学生的各门课程的平时成绩、考试成绩以及最终成绩。

数据结构之学生成绩管理系统

数据结构之学生成绩管理系统

数据结构之学绩管理系统学绩管理系统文档1.系统概述1.1 目的1.2 范围1.3 定义1.4 参考文献2.功能需求2.1 学生信息管理2.1.1 学生基本信息录入2.1.2 学生信息查询2.1.3 学生信息修改2.1.4 学生信息删除2.2 成绩管理2.2.1 成绩录入2.2.2 成绩查询2.2.3 成绩修改2.2.4 成绩删除2.2.5 成绩统计与分析 2.3 班级管理2.3.1 班级信息录入 2.3.2 班级信息查询 2.3.3 班级信息修改 2.3.4 班级信息删除 2.4 教师管理2.4.1 教师信息录入 2.4.2 教师信息查询 2.4.3 教师信息修改 2.4.4 教师信息删除 2.5 用户管理2.5.1 用户注册2.5.2 用户登录2.5.3 用户权限管理3.性能需求3.1 响应时间3.2 并发性能3.3 数据处理性能4.数据库设计4.1 学生信息表4.2 成绩表4.3 班级表4.4 教师表4.5 用户表5.界面设计5.1 登录界面5.2 学生信息管理界面 5.3 成绩管理界面5.4 班级管理界面5.5 教师管理界面5.6 用户管理界面6.部署架构6.1 硬件需求6.2 软件需求6.3 系统安装6.4 系统配置7.测试计划7.1 单元测试7.2 集成测试7.3 系统测试7.4 性能测试7.5 用户验收测试8.维护与支持8.1 环境要求8.2 运维手册8.3 常见问题与解决方案8.4 版本更新记录9.附件9.1 数据库设计文件9.2 界面设计文件9.3 测试报告附录:1.法律名词及注释:- 学绩管理系统:指用于管理学生的基本信息、成绩、班级和教师等相关信息的软件系统。

- 用户权限管理:指对系统中的用户进行身份验证和权限控制的机制。

- 数据库设计:指根据系统需求设计数据库表结构和数据关系的过程。

- 单元测试:指对系统中的各个独立单元(模块)进行测试的过程,以保证其功能的正确性。

- 集成测试:指将系统中各个模块组合在一起进行测试的过程,以验证系统的各个模块之间的协同工作是否正常。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生成绩管理系统一、实验目的1. 通过此次课程设计中学生成绩管理系统的题目,掌握链表等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解;2. 将所学数据结构方面的知识与一门具体的语言——C语言来进行实现,感受数据结构的强大作用,加深理解。

二、试验要求管理系统中有五个要求:输入查找修改插入删除存储(1)输入要求:能够通过键盘输入和文件输入两种(2)查找要求:能够根据学生号查找单个学生的信息,也可以遍历所有学生信息(3)修改要求:能够根据学生号修改单个学生所有信息(4)插入要求:能够实现头插和尾插(5)删除要求:能够根据学生号删除单个学生信息(6)存储要求:通过链表存储所有信息三、算法的思想与算法实现步骤1. 基本思想通过链表数据类型进行基本操作,主要有三个模块:分别是主函数模块、主要操作函数及基本操作函数。

其中,主函数负责其他子函数的调用实现以及基本界面的操作主要函数包括:void StuInput(Student *); //学生成绩管理系统的输入函数,由主函数调用void StuSelect(Student *); //学生成绩管理系统的查找函数,由主函数调用void StuAlter(Student *); //学生成绩管理系统的修改函数,由主函数调用void StuInsert(Student *); //学生成绩管理系统的插入函数,由主函数调用void StuDelect(Student *); //学生成绩管理系统的删除函数,由主函数调用void StuSave(Student *); //学生成绩管理系统的存储函数,由主函数调用基本操作函数:void StuOutput(Student *p); //输出函数int StuImport(Student *head,Student *p); //输入函数void StuInputHand(Student *head); //学生成绩管理系统的手动输入函数,由输入函数调用void StuInputFile(Student *head); //学生成绩管理系统的文件输入函数,由输入函数调用void StuSelectErg(Student *head); //学生成绩管理系统的遍历函数,由查找函数调用void StuSelectNumFind(Student *head); //学生成绩管理系统的按学号查找函数,由查找函数调用void StuSelectSubFind(Student *head); //学生成绩管理系统的按科目查找函数,由查找函数调用2. 实现步骤首先,分析题目要求划分实现模块,定义基本数据类型,诸如结构体、链表等;其次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能;最后,编写主函数对每个实现进行按需调用,实现操作。

3.流程图四.代码:#include<stdio.h>#include<malloc.h>#include<string.h>struct Student{char name[10];char subject[10];int num;int grade;Student *next;};void StuMain(); //学生成绩管理系统的主函数,由main函数调用void StuInput(Student *); //学生成绩管理系统的输入函数,由主函数调用void StuSelect(Student *); //学生成绩管理系统的查找函数,由主函数调用void StuAlter(Student *); //学生成绩管理系统的修改函数,由主函数调用void StuInsert(Student *); //学生成绩管理系统的插入函数,由主函数调用void StuDelect(Student *); //学生成绩管理系统的删除函数,由主函数调用void StuSave(Student *); //学生成绩管理系统的存储函数,由主函数调用void StuOutput(Student *p); //输出函数int StuImport(Student *head,Student *p); //输入函数void StuOutput(Student *p) //打印函数,将链表的该节点信息输出{printf("学生姓名:");printf("%s ",p->name);printf("学生号:");printf("%d ",p->num);printf("科目:");printf("%s ",p->subject);printf("学生成绩:");printf("%d \n",p->grade);}int StuImport(Student *head,Student *p){Student *Opinion=(Student *)malloc(sizeof(Student)); //用来判断输入节点中学生号是否有重复Opinion=head->next;printf("学生姓名:\n");scanf("%s",p->name);printf("学生号:\n");scanf("%d",&p->num);printf("科目:\n");scanf("%s",p->subject);if(Opinion!=NULL){if(Opinion->num==p->num&&!strcmp(Opinion->subject,p->subject)){printf("该学生这门科目已有成绩,请重新输入\n");return 1;}Opinion=Opinion->next;}printf("学生成绩:\n");scanf("%d",&p->grade);return 0;}void main(){StuMain();}void StuMain(){char decide='y'; //定义while变量,函数是否继续进行int num=1; //定义switch变量,函数跳转到哪个子函数Student *head; //定义链表的头指针head=(Student *)malloc(sizeof(Student)); //给头指针开辟空间head->next=NULL; //初始化头指针while(decide!='n'){printf(" ***************************************************\n");printf(" ********** 1 输入 2 查找 3 修改 4 插入********\n");printf(" ********** 5 删除 6 存储7 退出********\n");printf(" ***************************************************\n");scanf("%d",&num);switch(num){case 1:StuInput(head);break;case 2:StuSelect(head);break;case 3:StuAlter(head);break;case 4:StuInsert(head);break;case 5:StuDelect(head);break;case 6:StuSave(head);break;default:decide='n';break;}};}void StuInputHand(Student *head); //学生成绩管理系统的手动输入函数,由输入函数调用void StuInputFile(Student *head); //学生成绩管理系统的文件输入函数,由输入函数调用void StuInput(Student *head) //学生成绩管理系统的输入函数,由主函数调用{char decide='y'; //定义while变量,函数是否继续进行int num; //定义switch变量,函数跳转到哪个子函数while(decide!='n'){printf(" ***************************************************\n");printf(" ** 1 手动输入 2 文件输入 3 退出**\n");printf(" ***************************************************\n");scanf("%d",&num);switch(num){case 1:StuInputHand(head);break;case 2:StuInputFile(head);default:decide='n';break;}}}void StuInputHand(Student *head) //学生成绩管理系统的手动输入函数,由输入函数调用{if(head->next==NULL){Student *point=(Student *)malloc(sizeof(Student)); //链表中最后一个节点,只在该函数中存在point->next=NULL;int decide=1;while(decide!=0){Student *p=(Student *)malloc(sizeof(Student));p->next=NULL;StuImport(head,p);if(head->next==NULL){head->next=p;point=p;}else{point->next=p;point=p;}printf("是否继续:1/0\n");scanf("%d",&decide);}}elseprintf("管理系统中已存在信息,若想输入学生信息,请转插入子系统");}void StuInputFile(Student *head) //学生成绩管理系统的文件输入函数,由输入函数调用{if(head->next!=NULL){printf("学生管理系统中已有信息,请跳转到插入选项\n");return ;}FILE *fp;printf("请输入文件名(包括物理地址)\n");char filename[10];scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL){printf("can not open file\n");return;}Student *point=(Student *)malloc(sizeof(Student));Student *Opinion=(Student *)malloc(sizeof(Student)); //用来判断输入节点中学生号是否有重复while(!feof(fp)) {Opinion=head->next;Student *p=(Student *)malloc(sizeof(Student));p->next=NULL;fread(p,sizeof(Student),1,fp);if(Opinion!=NULL){if(Opinion->num==p->num&&!strcmp(Opinion->subject,p->subject)){printf("该文件中有重复学生信息,请验明再传输\n");head->next=NULL;return ;}Opinion=Opinion->next;}if(head->next==NULL){head->next=p;point=p;}else{point->next=p;point=p;}};Opinion=head->next;while(Opinion->next!=NULL){Opinion=Opinion->next;if(Opinion->next->next==NULL)Opinion->next=NULL;};fclose(fp);printf("传输成功\n");}void StuSelectErg(Student *head); //学生成绩管理系统的遍历函数,由查找函数调用void StuSelectNumFind(Student *head); //学生成绩管理系统的按学号查找函数,由查找函数调用void StuSelectSubFind(Student *head); //学生成绩管理系统的按科目查找函数,由查找函数调用void StuSelect(Student *head) //学生成绩管理系统的查找函数,由主函数调用{char decide='y'; //定义while变量,函数是否继续进行int num; //定义switch变量,函数跳转到哪个子函数while(decide!='n'){printf(" ***************************************************\n");printf(" **** 1 遍历 2 学号查找 3 科目查找 4 退出****\n");printf(" ***************************************************\n");scanf("%d",&num);switch(num){case 1:StuSelectErg(head);break;case 2:StuSelectNumFind(head);break;case 3:StuSelectSubFind(head);break;default:decide='n';break;}}}void StuSelectErg(Student *head) //学生成绩管理系统的遍历函数,由查找函数调用{Student *p=(Student *)malloc(sizeof(Student));p=head->next;int i=1;while(p!=NULL){printf("第%d位学生信息:\n",i);StuOutput(p);p=p->next;i++;}}void StuSelectNumFind(Student *head) //学生成绩管理系统的查找子系统,有查找函数调用{int num;printf("输入想要查找学生的学生号:\n");scanf("%d",&num);Student *p=(Student *)malloc(sizeof(Student));p=head->next;int i=1;while(p!=NULL){if(num==p->num){StuOutput(p);i++;}p=p->next;}if(i==1)printf("没有该学生信息");}void StuSelectSubFind(Student *head) //学生成绩管理系统的按科目查找函数,由查找函数调用{char Sub[10];printf("输入想要查找科目:\n");scanf("%s",Sub);Student *p=(Student *)malloc(sizeof(Student));p=head->next;int i=1;while(p!=NULL){if(!strcmp(Sub,p->subject)){StuOutput(p);i++;}p=p->next;}if(i==1)printf("没有该学生信息");}void StuAlter(Student *head) //学生成绩管理系统的修改函数,由主函数调用{int num;printf("输入想要查找学生的学生号:\n");scanf("%d",&num);char Sub[10];printf("输入想要查找科目:\n");scanf("%s",Sub);Student *p=(Student *)malloc(sizeof(Student));p=head->next;int i=1;while(p!=NULL){if(num==p->num&&!strcmp(Sub,p->subject)){printf("输入修改成绩:\n");scanf("%d",&p->grade);printf("修改成功\n");i++;}p=p->next;if(i==1)printf("没有该学生信息");}}void StuInsert(Student *head) //学生成绩管理系统的插入函数,由主函数调用{Student *point=(Student *)malloc(sizeof(Student));point=head->next;while(point->next!=NULL)point=point->next; //找到尾结点char decide='y'; //定义while变量,函数是否继续进行int num; //定义switch变量,函数跳转到哪个子函数while(decide!='n'){printf(" ***************************************************\n");printf(" **** 1 头插 2 尾插 3 退出****\n");printf(" ***************************************************\n");scanf("%d",&num);Student *p=(Student *)malloc(sizeof(Student));switch(num){case 1:StuImport(head,p);p->next=head->next;head->next=p;printf("插入成功\n");break;case 2:StuImport(head,p);point->next=p;p->next=NULL;printf("插入成功\n");break;default:decide='n';break;}}}void StuDelect(Student *head) //学生成绩管理系统的删除函数,由主函数调用{int num;printf("输入想要删除学生的学生号:\n");scanf("%d",&num);char Sub[10];printf("输入想要删除科目:\n");scanf("%s",Sub);Student *p=(Student *)malloc(sizeof(Student));p->next=head->next;int i=1;while(p->next!=NULL){if(num==p->next->num&&!strcmp(Sub,p->next->subject)){StuOutput(p->next);printf("是否删除:1/0\n");scanf("%d",&i);if(num==head->next->num&&!strcmp(Sub,head->next->subject)){head->next=head->next->next;}else{p->next=p->next->next;}i=2;printf("删除成功\n");break;}p=p->next;}if(i==1)printf("没有该学生信息\n");}void StuSave(Student *head) //学生成绩管理系统的存储函数,由主函数调用{FILE *fp;char filename[10];printf("请输入存储文件名(包括物理地址)\n");scanf("%s",filename);Student *p=(Student *)malloc(sizeof(Student));p=head->next;if((fp=fopen(filename,"w"))==NULL){printf("cannot open file");return;}printf("input data:/n");while(p!=NULL){fwrite(p,sizeof(Student),1,fp); /* 成块写入文件*/p=p->next;}fclose(fp);}。

相关文档
最新文档