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

合集下载

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

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

数据结构之学绩管理系统【正文】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 成绩表- 设计成绩表,包括学生学号和各门课程成绩字段。

数据结构课程设计-学生成绩管理系统

数据结构课程设计-学生成绩管理系统

广东学院《数据结构课程设计》题目:学生成绩管理系统学号:姓名:年级:计算机科学与技术6班学院:智能制造学院专业:指导教师:目录一、问题描述与基本要求 (3)1.1问题描述 (3)1.2基本要求 (3)二、数据结构的设计 (3)2.1数据结构的选择 (3)2.2单链表的定义 (3)2.3重要函数的定义及说明 (4)三、软件模块结构图....................... 错误!未定义书签。

3.1大体模块关系图 (13)3.2各模块具体分析..................... 错误!未定义书签。

四、程序流程图 (15)五、源程序 (17)六、调试分析............................. 错误!未定义书签。

6.1程序错误修改及完善的过程 (37)6.2最终程序所有功能运行结果........... 错误!未定义书签。

6.3测试数据 (39)七、用户使用手册 (40)八、心得体会............................. 错误!未定义书签。

一、问题描述与基本要求1.1问题描述设计一个学生管理系统,建立初始学生成绩,添加/插入,查找,修改,删除学生成绩。

1.2基本要求系统设计要求:1、能比较迅速地实现添加学生的学号,姓名和成绩2、能比较迅速地通过学生的学号或姓名查询、修改或删除学生成绩3、当有学生时,输出所有学生的成绩信息,包括语文,数学,英语的成绩二、数据结构的设计2.1数据结构的选择课程设计题目的要求是,要较简单迅速地实现添加、查询、修改、删除学生成绩的的功能,于是我很自然地想到了可以用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能,即可满足课程设计题目的要求。

2.2单链表的定义先定义单链表结点的数据域,数据域包括学生姓名、学生学号、学生成绩等学生信息,然后再定义链表结点,链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

开发工具为Eclipse和Navicat。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

学生成绩管理系统数据流程图及数据字典

学生成绩管理系统数据流程图及数据字典

学生成绩管理系统数据流程图及数据字典随着教育信息化的发展,学生成绩管理系统在学校中得到了广泛应用。

学生成绩管理系统是一种利用计算机技术对学生成绩进行管理和分析的系统。

本文将介绍学生成绩管理系统的数据流程图及数据字典,以帮助读者更好地理解该系统的数据处理流程和数据结构。

一、数据流程图1.1 学生成绩录入流程- 学生成绩管理员登录系统- 选择录入成绩功能- 输入学生学号和成绩信息- 确认提交1.2 学生成绩查询流程- 学生/教师登录系统- 选择查询成绩功能- 输入学生学号或姓名- 系统显示学生成绩信息1.3 学生成绩统计流程- 教师登录系统- 选择统计功能- 选择统计范围(班级/科目等)- 系统生成成绩统计报表二、数据字典2.1 学生信息表(Student)- 字段:学号(ID)、姓名(Name)、性别(Gender)、班级(Class)- 主键:学号(ID)2.2 成绩信息表(Score)- 字段:学号(ID)、科目(Subject)、成绩(Grade)- 主键:学号(ID)、科目(Subject)- 外键:学号(ID)参考学生信息表2.3 教师信息表(Teacher)- 字段:工号(ID)、姓名(Name)、科目(Subject)- 主键:工号(ID)三、数据处理流程3.1 学生成绩录入流程- 学生成绩管理员登录系统后,通过录入成绩功能将学生成绩信息存储到成绩信息表中。

- 系统会进行数据验证,确保输入的学号和科目存在且成绩符合规定范围。

- 成绩信息成功录入后,系统会生成相应的操作日志记录。

3.2 学生成绩查询流程- 学生/教师登录系统后,通过查询成绩功能可以根据学号或姓名查看学生成绩信息。

- 系统会根据输入的条件在成绩信息表中进行查询,并将查询结果显示给用户。

- 查询结果包括学号、姓名、科目、成绩等信息,方便用户了解学生成绩情况。

3.3 学生成绩统计流程- 教师登录系统后,通过统计功能可以选择不同的统计范围进行成绩统计。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

学生成绩管理系统数据结构课程设计

学生成绩管理系统数据结构课程设计

学生成绩管理系统数据结构课程设计学生成绩管理系统是一个用于管理学生学习成绩的软件系统。

它通常用于学校、教育机构或教师们来跟踪和记录学生的学习进展,并生成报告和分析数据。

在数据结构课程设计中,学生成绩管理系统需要设计合适的数据结构来存储和操作学生成绩数据。

在设计学生成绩管理系统时,可以使用以下数据结构:1. 数组:可以使用数组来存储学生成绩数据。

每个学生的成绩可以用一个数组元素表示,可以将学生按照学号或者其他标识符按顺序存储在数组中。

这样可以方便地通过索引来访问和修改学生成绩。

2. 链表:链表是另一种常用的数据结构,可以用于存储学生成绩数据。

每个学生的成绩可以用一个节点表示,节点可以包含学生的信息和成绩,同时包含指向下一个节点的指针。

这样可以方便地插入、删除和查找学生成绩。

3. 树:树可以用于组织学生成绩数据。

可以使用二叉搜索树或平衡二叉树来存储学生成绩,其中学生的学号或者姓名可以作为关键字。

这样可以方便地进行查找、插入和删除操作,并可支持对学生成绩进行排序。

以上是一些常用的数据结构,用于存储学生成绩管理系统的数据。

在具体的设计中,还可以根据实际需求选择其他合适的数据结构。

除了数据结构,学生成绩管理系统还可能包括其他功能,例如:1. 添加学生:可以通过输入学生的基本信息和成绩,将学生添加到系统中。

2. 删除学生:可以通过学生的学号或其他标识符,从系统中删除某个学生的信息和成绩。

3. 修改成绩:可以根据学生的学号或其他标识符,修改学生的成绩信息。

4. 查询成绩:可以根据学号、姓名或其他条件,查询学生的成绩信息。

5. 成绩统计和分析:可以对学生的成绩进行统计和分析,生成报告和图表,帮助教师或学校了解学生的学习情况。

以上只是学生成绩管理系统可能包含的一些基本功能,具体的设计和实现还需要根据实际需求和要求进行进一步的扩展和深入分析。

通过合适的数据结构和功能设计,可以实现一个高效、易用和功能完善的学生成绩管理系统。

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

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

学生成绩管理系统一、试验目旳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. 实现环节首先, 分析题目规定划分实现模块, 定义基本数据类型, 诸如构造体、链表等;另一方面, 针对上述旳基本操作实现详细需要进行旳操作, 详细实现每个环节需要进行旳基本操作, 即详细编写每个小函数实现功能;最终, 编写主函数对每个实现进行按需调用, 实现操作。

  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*);//学生成绩管理系统的删除函数,由主函数调用四.代码:#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");return1;}Opinion=Opinion->next;}printf("学生成绩:\n");scanf("%d",&p->grade);return0;}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){case1:StuInput(head);break;case2:StuSelect(head);break;case3:StuAlter(head);break;case4:StuInsert(head);break;case5:StuDelect(head);break;case6: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){case1:StuInputHand(head);break;case2: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;}elsepoint->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){case1:StuSelectErg(head);case2:StuSelectNumFind(head);break;case3: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;}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){case1:StuImport(head,p);p->next=head->next;head->next=p;printf("插入成功\n");break;case2: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);}。

相关文档
最新文档