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

学生成绩管理系统数据流程图及数据字典一、数据流程图学生成绩管理系统是一个用于管理学生的课程成绩的系统。
下面是该系统的数据流程图,展示了数据在系统中的流动和处理过程。
1. 学生信息管理流程:- 输入:学生信息(学生姓名、学号、性别、年级等)- 处理:将学生信息存储到学生信息表中- 输出:无2. 课程信息管理流程:- 输入:课程信息(课程名称、课程编号、学分等)- 处理:将课程信息存储到课程信息表中- 输出:无3. 成绩录入流程:- 输入:学生课程成绩信息(学号、课程编号、成绩)- 处理:将成绩信息存储到成绩表中- 输出:无4. 成绩查询流程:- 输入:学号- 处理:根据学号在学生信息表中查找学生姓名,并在成绩表中查询该学生的所有成绩信息- 输出:学生姓名及其对应的成绩信息5. 成绩统计流程:- 输入:课程编号- 处理:根据课程编号在课程信息表中查找课程名称,并在成绩表中统计该课程的平均成绩、最高成绩和最低成绩- 输出:课程名称及其对应的平均成绩、最高成绩和最低成绩二、数据字典数据字典是对系统中使用的数据元素进行定义和描述的文档。
下面是学生成绩管理系统的数据字典,包含了系统中使用的各个数据元素及其属性。
1. 学生信息表(StudentInfo):- 学号(StudentID):学生的惟一标识符,数据类型为整数- 学生姓名(StudentName):学生的姓名,数据类型为字符串- 性别(Gender):学生的性别,数据类型为字符串- 年级(Grade):学生所在的年级,数据类型为字符串2. 课程信息表(CourseInfo):- 课程编号(CourseID):课程的惟一标识符,数据类型为整数- 课程名称(CourseName):课程的名称,数据类型为字符串- 学分(Credit):课程的学分,数据类型为浮点数3. 成绩表(Score):- 学号(StudentID):学生的惟一标识符,数据类型为整数- 课程编号(CourseID):课程的惟一标识符,数据类型为整数- 成绩(Grade):学生在该课程中的成绩,数据类型为浮点数通过以上的数据流程图和数据字典,学生成绩管理系统可以实现学生信息的录入和管理、课程信息的录入和管理、成绩的录入、查询和统计等功能。
学生成绩管理系统数据库设计

学生成绩管理系统数据库设计一、需求分析学生成绩管理系统是一个重要的教育管理系统,它主要用于学生的成绩管理和统计。
该系统需要具有以下功能:1. 学生信息管理:包括学生的基本信息(如姓名、性别、年龄、身份证号码等)和学籍信息(如班级、学号、入学时间等)。
2. 课程信息管理:包括课程的基本信息(如课程名称、授课教师、上课时间等)和课程成绩录入。
3. 成绩查询与统计:可以按照班级或个人查询成绩,并进行成绩统计分析。
二、概念结构设计在需求分析的基础上,我们可以根据实际情况设计出该系统的概念结构模型。
该模型包括以下实体:1. 学生(Student):包括学生的基本信息和学籍信息。
2. 课程(Course):包括课程的基本信息。
3. 教师(Teacher):包括教师的基本信息。
4. 成绩(Score):包括每个学生在每门课程中所获得的成绩。
三、逻辑结构设计在概念结构模型确定后,我们需要将其转化为逻辑结构模型。
根据实际情况,我们可以设计出以下数据库表:1. 学生表(Student):包括学生的基本信息和学籍信息,如姓名、性别、年龄、身份证号码、班级、学号、入学时间等。
2. 课程表(Course):包括课程的基本信息,如课程名称、授课教师、上课时间等。
3. 教师表(Teacher):包括教师的基本信息,如姓名、性别、年龄等。
4. 成绩表(Score):包括每个学生在每门课程中所获得的成绩,如学号、课程名称、成绩等。
四、物理结构设计在逻辑结构模型确定后,我们需要将其转化为物理结构模型。
根据实际情况,我们可以设计出以下数据库表:1. 学生表(Student):包括学生的基本信息和学籍信息,如姓名(varchar(20))、性别(char(2))、年龄(int)、身份证号码(varchar(20))、班级(varchar(20))、学号(varchar(20))、入学时间(date)等。
其中,身份证号码和学号应该设为主键。
学生成绩管理系统c++课程设计

学生成绩管理系统c++课程设计学生成绩管理系统是一种用于记录和管理学生课程成绩的软件系统。
它能够帮助学校、教师和学生实时监控和分析学生的学业表现,为教育管理者提供决策支持,为学生提供个性化的学习建议。
在C++课程设计中,学生成绩管理系统可以实现以下功能:1. 学生信息管理:包括学生的基本信息(如姓名、性别、年龄、班级等),以及学生的学号、联系方式等。
系统可以提供添加、修改、删除和查询学生信息的功能。
2. 课程管理:包括课程名称、学分、授课教师等信息。
系统可以对课程进行添加、修改、删除和查询操作。
3. 成绩管理:系统可以记录学生的每门课程的成绩,并计算学生的综合成绩。
可以输入或导入成绩数据,支持对成绩进行修改、删除和查询操作。
系统还可以生成成绩报表和统计分析,帮助教师和学校了解班级或全校学生的成绩分布和趋势。
4. 学生选课管理:学生可以根据自己的兴趣或专业要求选择课程。
系统可以提供学生选课、退课的功能,并根据学生的选课情况进行课程调整和排课。
5. 教师管理:包括教师的基本信息、授课情况和成绩评定等。
系统可以对教师信息进行管理,支持教师信息的添加、修改、删除和查询操作。
6. 用户权限管理:系统可以对不同用户设置不同的权限,例如管理员可以对系统进行设置和管理,教师可以录入和修改成绩,学生可以查询自己的成绩等。
通过学生成绩管理系统,学校和教师可以更方便地管理学生的成绩,及时发现和解决学生学习中的问题。
学生可以方便地查询自己的成绩,了解自己的学业表现,及时调整学习策略。
同时,学生成绩管理系统也为教育管理者提供了数据支持,可以通过统计和分析成绩数据来评估教学效果,并为学校的教学改进提供参考依据。
在C++课程设计中,可以通过使用面向对象的编程思想,设计合适的类和数据结构来实现学生成绩管理系统的各项功能。
同时,还可以通过使用文件读写技术,将学生、课程和成绩等信息保存到文件中,实现数据的持久化存储。
在用户界面设计上,可以使用C++图形库或者命令行界面来实现用户与系统的交互。
学生成绩管理系统的设计与实现

学生成绩管理系统的设计与实现一、需求分析本学生成绩管理系统的主要功能为:•管理学生信息,包括姓名、性别、学号等基本信息;•录入学生成绩,包括各门课程的成绩;•统计学生成绩,包括按学生、按课程、按年级等多种方式统计;•生成成绩报告,包括成绩排名、平均成绩等信息;•生成数据分析报告,包括各门课程的分数分布、学生的成绩趋势等信息。
二、系统设计本系统采用MVC模式设计,主要分为Model、View、Controller三部分。
1. ModelModel层主要负责数据存储和处理。
系统中的基本数据结构包括:•学生(Student):包括姓名、性别、学号等基本信息;•课程(Course):包括课程名称、学分等基本信息;•成绩(Score):包括学生、课程、成绩等信息。
在数据库中,学生、课程、成绩三个实体分别对应三个表,其中成绩表还包括学生和课程两个外键。
2. ViewView层主要负责与用户交互,显示数据和处理用户输入。
系统中的主要界面包括:•学生信息管理界面:用于添加、编辑和删除学生信息;•课程信息管理界面:用于添加、编辑和删除课程信息;•成绩录入界面:用于录入学生的成绩信息;•成绩查询界面:用于查询学生的成绩信息;•成绩统计界面:用于按学生、按课程、按年级等多种方式统计成绩信息;•成绩报告界面:用于生成成绩排名、平均成绩等信息;•数据分析界面:用于生成各门课程的分数分布、学生的成绩趋势等信息。
3. ControllerController层主要负责控制系统的流程、协调Model和View两层之间的交互。
Controller接收用户输入、调用Model进行数据处理、更新View显示数据。
三、系统实现本系统采用Python语言进行开发,使用了Flask框架、SQLAlchemy ORM库、Bootstrap前端框架等技术。
具体实现细节如下:1. 数据库设计from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()# 学生class Student(db.Model):__tablename__ = 'students'id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(50), nullable=False)gender = db.Column(db.String(10), nullable=False)student_id = db.Column(db.String(20), nullable=False, unique=True)scores = db.relationship('Score', backref='student')# 课程class Course(db.Model):__tablename__ = 'courses'id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(50), nullable=False)credit = db.Column(db.Float, nullable=False)scores = db.relationship('Score', backref='course')# 成绩class Score(db.Model):__tablename__ = 'scores'id = db.Column(db.Integer, primary_key=True)score = db.Column(db.Float, nullable=False)student_id = db.Column(db.Integer, db.ForeignKey('st udents.id'), nullable=False)course_id = db.Column(db.Integer, db.ForeignKey('cou rses.id'), nullable=False)我们使用了Flask框架自带的SQLite数据库,创建了一个名为students.db的数据库。
学生成绩管理系统设计与实现

学生成绩管理系统设计与实现一、本文概述本文旨在深入探讨学生成绩管理系统的设计与实现过程。
随着信息技术的快速发展和普及,教育领域对于信息化、智能化的需求日益增强。
学生成绩管理系统作为学校教育管理信息化的重要组成部分,其设计与实现对于提高教育管理水平、优化教育资源分配、促进教育教学改革具有重要意义。
本文将首先介绍学生成绩管理系统的基本概念、功能和作用,随后详细阐述系统的设计原则、设计思路和设计方法,包括系统架构、数据库设计、用户界面设计等方面。
在此基础上,本文将进一步探讨学生成绩管理系统的实现过程,包括系统开发的编程语言、开发环境、关键技术等,以及系统测试、部署和维护的策略和方法。
本文将总结学生成绩管理系统的设计与实现过程中的经验教训,展望未来的发展方向和应用前景。
通过本文的阐述,希望能够为读者提供一个全面、深入的学生成绩管理系统设计与实现的理论指导和实践参考。
二、系统需求分析在设计和实现学生成绩管理系统之前,对系统需求进行深入分析是至关重要的。
系统需求分析阶段的目标是明确系统的功能需求、性能需求、安全需求以及用户需求,为后续的系统设计和实现提供明确的指导。
我们需要明确系统的功能需求。
学生成绩管理系统应能够实现对学生成绩的基本管理,包括成绩的录入、查询、修改、删除等操作。
同时,系统还应提供成绩统计和报表生成功能,以便于教师和管理人员对学生成绩进行分析和评估。
系统还应支持成绩的导入和导出功能,以便于与其他系统进行数据交换。
我们需要考虑系统的性能需求。
学生成绩管理系统应具备良好的性能和稳定性,能够处理大量数据的存储和访问。
同时,系统还应具备良好的响应速度,确保用户在进行成绩管理操作时能够获得流畅的体验。
系统的安全需求也是不可忽视的。
学生成绩管理系统应采取有效的安全措施,保护数据的机密性和完整性。
例如,系统应设置用户权限管理功能,对不同用户设置不同的访问权限,以防止未经授权的访问和数据泄露。
同时,系统还应采用加密技术,对敏感数据进行加密存储和传输,确保数据的安全性。
数据库课程设计学生成绩管理系统

可以进一步加强系统的 安全性设计,如增加用 户权限管理、数据备份 与恢复等功能,确保数 据的完整性和安全性。
THANKS
感谢观看
情况下的容错处理。
性能测试用例
设计针对不同用户数量和不同数据量 的测试用例,以验证系统的性能和稳
定性。
安全测试用例
设计针对系统安全性的测试用例,如 用户权限验证、数据加密传输等。
测试执行与结果分析
测试执行
按照测试计划和测试用例进行测试,记录测试结果和发现的问题 。
问题跟踪与修复
对发现的问题进行跟踪,确保问题得到及时修复,并重新进行测试 验证。
测试方法
采用黑盒测试和白盒测试相结合的方法,包括功能测试、 性能测试、安全测试等。
测试范围
包括系统的所有功能模块,如学生信息管理、课程管理、 成绩录入与查询、报表生成等。
测试资源
包括测试人员、测试环境、测试数据等。
测试用例设计
功能测试用例
针对系统的每个功能模块设计测试用 例,包括正常情况下的操作以及异常
系统功能实现
课程信息管理
实现课程基本信息的录入、修 改、查询和删除功能。
报表生成
根据需求生成各类报表,如学 生成绩单、课程统计表等。
学生信息管理
实现学生基本信息的录入、修 改、查询和删除功能。
成绩录入与查询
实现学生成绩的录入、修改、 查询和删除功能,支持批量导 入成绩数据。
权限管理
实现不同用户角色的权限管理 ,确保系统的安全性和稳定性 。
常见问题与解决方案
数据库连接问题
检查数据库连接配置是否正确,确保数据库服务 正常运行,并尝试重新启动数据库服务或修复连 接问题。
系统性能下降
一个简单的学生成绩管理信息系统

一个简单的学生成绩管理信息系统学生成绩管理信息系统在当今的数字化时代,有效的信息管理对于任何组织的成功至关重要。
对于学校来说,管理学生的成绩、出勤记录和其他相关信息已经成为一项复杂的任务。
为了解决这个问题,我们可以构建一个简单的学生成绩管理信息系统。
一、系统概述这个系统将使用一个数据库来存储和管理学生的基本信息,包括姓名、学号、班级等。
同时,系统将实现几个核心功能,包括学生成绩录入、成绩查询、报表生成和数据分析等。
二、系统功能1、学生信息管理:系统可以添加、编辑和删除学生的基本信息,包括姓名、学号、班级等。
2、成绩录入:教师可以轻松地输入每个学生的成绩,包括各科目的考试分数、平时作业成绩等。
3、成绩查询:学生和教师可以根据学号、姓名或时间段来查询成绩。
4、报表生成:系统可以自动生成各类报表,如班级成绩汇总表、个人成绩单等。
5、数据分析:系统可以对收集的数据进行深入分析,为提高教学质量提供参考。
三、技术实现这个系统可以使用各种编程语言和技术栈来实现。
例如,后端可以使用Python的Flask框架或Java的Spring框架,数据库可以使用MySQL 或MongoDB等。
四、安全性为了保证数据的安全性,系统应采取适当的安全措施,包括数据加密、用户权限管理等。
只有经过授权的用户才能访问和修改数据。
五、用户界面用户界面应该直观易用,可以使用HTML、CSS和JavaScript来创建友好的用户界面。
六、系统价值这个系统的价值在于它能够帮助学校更有效地管理学生成绩信息,提高工作效率。
通过数据分析,教师可以更好地理解学生的学习情况,从而调整教学策略,提高教学质量。
总结,一个简单的学生成绩管理信息系统不仅可以提高学校的管理效率,也为教师和学生提供了便捷的查询方式。
在未来的发展中,该系统还可以不断扩展功能,如纳入学生的出勤记录、课外活动参与情况等,从而成为一个全面的学生信息管理系统。
学生成绩管理系统

学生成绩管理系统简介学生成绩管理系统是一种用于管理学生的学业成绩和相关信息的软件系统。
它可以帮助学校、教师和学生有效地管理和查询学生的成绩,提供全面的成绩分析和统计功能,促进教学质量的提高。
功能学生成绩管理系统通常具有以下核心功能:1.学生信息管理:包括学生的基本信息、课程注册、班级信息等。
2.成绩录入:教师可以登录系统,录入学生成绩,并进行相应的成绩审核和修改。
3.成绩查询:学生、教师和学校管理者均可通过系统查询学生成绩,可以按照学生、班级、课程等维度进行灵活查询。
4.成绩统计与分析:系统可以对成绩数据进行统计和分析,生成各类成绩报告和分析图表,为教师和学校提供决策依据。
5.成绩排名:系统可以根据学生成绩进行排名,可以按照总分、班级、课程等维度进行排名。
6.数据导入导出:系统可以支持将学生成绩数据导入导出到Excel、CSV等格式,方便学校的数据管理。
优势学生成绩管理系统的应用带来诸多优势:1.提高工作效率:通过系统自动化处理和统计成绩数据,节省了大量的人力和时间成本。
2.提供准确的数据:系统可以准确地计算和记录学生成绩,避免了人工计算和录入带来的错误。
3.提供个性化服务:学生成绩管理系统可以根据学生的不同需求提供个性化的信息查询和分析功能,满足学生个性化的学习需求。
4.提供全面的分析和决策支持:系统可以生成各类成绩报告和分析图表,帮助教师和学校进行成绩分析和决策。
5.提高教学质量:通过系统对学生成绩进行全方位的管理和分析,有助于教师了解学生的学习状况,及时调整教学方法,提高教学质量。
使用场景学生成绩管理系统适用于各类学校、教育机构以及在线教育平台的学生成绩管理需求。
以下是几个典型的使用场景:1.学校管理者可以通过系统了解学校整体的学生成绩情况,进行综合分析和决策。
2.教师可以通过系统录入学生成绩、排名、查询历史成绩等,方便管理学生成绩和进行个性化教学。
3.学生可以通过系统查询自己的成绩、查看排名等,及时了解自己的学习状况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安文理学院信息工程学院软件编程课程设计报告设计题目:学生成绩管理系统课程设计学生学号:020*******专业班级:物联网工程一班学生姓名:张旺阳学生成绩:指导教师(职称):课题工作时间:2015-11-25 至2015-12-9 信息工程学院软件编程课程设计任务书指导教师:日期:2015年11月25日成绩评定表学生姓名:张旺阳学号:020******* 专业/班级:物联网工程一班璎绿陰挠鋤启閆毂爷轸鴝类橥撓機饬儿历龔耸濫鋌买鲶懷斬贐西安文理学院信息工程学院课程设计报告目录1. 概述 (1)1.1课题背景 (1)1.2系统功能 (3)1.3设计要求 (4)2. 概要设计 (5)2.1系统功能模块 (5)2.2各模块流程图 (6)3. 详细设计 (8)3.1 程序中使用的数据结构 (8)3.2 函数列表 (10)4. 设计结果与分析 (12)5. 总结与体会 (15)参考文献 (X)附录主要程序代码 (X)1.1课题背景随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上运行的各种软件在解决生活中的实际问题中起到重大的作用,而目前在编写应用程序时,c++以其高效及灵活性成为大多数程序设计者的首选,其次对于普通用户者,利用c++语言设计出适用的小型软件对解决生活中的繁琐问题有很大的作用。
在学校或班级,教师经常会对某次考试中的所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平均成绩时工作会相对繁琐,所以针对这种情况,同时我分析了成绩管理所需要的功能,在利用C++语言及VC++6.0程序运行平台之下,设计一种小型的学生成绩管理系统。
1.2系统功能1.录入2.修改3.求总分4.求平均分5.查询6.排序1.3设计要求学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)能按班级,按课程,对学生成绩进行排序。
要求:使用二进制文件方式存储数据,系统以菜单方式工作第二章概要设计2.1系统功能模块(1)创建主菜单(2)实现学生成绩信息录入(3)实现学生成绩信息查询(4)实现学生成绩信息修改(一)修改某个学生的成绩(a)按学期查询学生的成绩(b)按班级查询学生的成绩(c)按学号查询学生的成绩(二)查询不及格的科目和学生名单(5)实现学生成绩统计(a)按班级统计学生的总分。
(b)按班级统计学生的平均分。
(6)实现学生成绩信息输出(7)保存学生的成绩信息于文件2.2系统功能流程图第三章详细设计3.1主要数据结构typedef struct studentMark{int term;int classes;char name[10];int number;char sex[7];float chinese;float math;float english;float computer;struct studentMark *next;} MARK;这是定义一个结构体,主要包括学期,班级,姓名,学号,性别,语文成绩,数学成绩,英语成绩,计算机成绩,以及包括一个结构体指针。
另外还用了typedef这个关键字。
因此,在程序的后面也可以用MARK来定义结构体变量或结构体指针变量。
int term; 定义学期,学期只能是第一学期或者第二学期。
例如int 1;则表示第一学期。
int classes; 定义班级,班级只能是一班或者二班。
例如 int 2;则是表示定义为二班。
char name[10]; 定义姓名,在数组中存放字符串。
例如 char name[]=“yang”;则该学生的姓名为yang int number; 定义学号,例如int 1;则该学生学号为1号。
char sex[7]; 定义姓别,其性别最大长度为7.例如 char sex[]=“man”;说明该学生为男生。
同样可以这样定义女生。
float chinese; 定义语文成绩。
float math; 定义数学成绩。
float english; 定义英语成绩。
float computer; 定义计算机成绩。
struct studentMark *next; 定义一个结构体指针。
3.1.1 主函数int main();主函数,程序的入口。
void m(MARK *head);主菜单的函数原型,在函数m(head)中主要有选择创建学生成绩信息,查询学生成绩信息,修改学生成绩信息,统计学生成绩信息,输出学生成绩信息,存储学生成绩信息于文件,以及退出体统等选项可供用户选择。
MARK *creat(void );创建函数的函数原型,在函数creat()中用户可以输入初始的学生信息:其中包括学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。
3.1.2 查询函数void searchMark(MARK *head);查询菜单的函数原型,在函数searchMark(head)中用户可以自由选择是查询某一个学生的成绩还是查询不及格学生的成绩。
而这通过调用函数searchMarkStusentone(head)和函数searchMarkFail(head)完成操作。
void searchMarkStusentone(MARK *head);查询某个学生成绩的函数原型,在函数searchMarkStusentone(head)中用户可以按学号或班级或者是按学期来查找某个学生的成绩。
通过函数searchnumber(head)和函数 searchclasses(head)以及函数searchterm(head)完成操作。
void searchnumber(MARK *head) 按学号查找学生的函数原型,;void searchclasses(MARK *head); 按班级查找学生的函数原型,void searchterm(MARK *head); 按学期查找学生的函数原型,void searchMarkFail(MARK *head);查询没有及格的学生的函数原型,通过这个函数可以查找学生不及格科目及学生名单。
3.1.3 修改函数MARK *changeMark(MARK *head);修改学生成绩信息的函数原型,可以修改学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。
3.1.4 统计函数void conuntMark(MARK *head);统计学生成绩的函数原型,在函数conuntMark(head)中用户可以统计学生的总成绩以及平均成绩,通过调用函数totalMark(head)和函数aveMark (head)完成操作。
3.1.5 输出函数void totalMark(MARK *head); 统计学生总成绩的函数原型,void aveMark(MARK *head); 统计学生平均成绩的函数原型,void printClassMark(MARK *head);输出学生成绩信息的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息到屏幕上。
void saveFileMark(MARK *head);存储学生成绩信息于文件的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息与文件中。
第四章设计结果及分析4.1程序设计结果4.1.1源程序如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define MAR (struct studentMark *)malloc(sizeof(struct studentMark))typedef struct studentMark{int term;int classes;char name[10];int number;char sex[7];float chinese;float math;float english;float computer;struct studentMark *next;} MARK;void m(MARK *head);MARK *creat(void );void searchMark(MARK *head);void searchMarkStusentone(MARK *head);void searchnumber(MARK *head);void searchclasses(MARK *head);void searchterm(MARK *head);void searchMarkFail(MARK *head);MARK *changeMark(MARK *head);void conuntMark(MARK *head);void totalMark(MARK *head);void aveMark(MARK *head);void printClassMark(MARK *head);void saveFileMark(MARK *head);int main(void){MARK *head=NULL;printf("**********************************************\n");printf(" ## 欢迎进入学生成绩信息管理系统##\n");printf("**********************************************\n");printf("\n");head=creat();m(head);return(0);}void m(MARK *head ){int choose;while(1){printf("************************************\n");printf(" 学生成绩信息管理\n");printf("************************************\n");printf(" 1创建成绩信息\n");printf(" 2查询成绩信息\n");printf(" 3修改成绩信息\n");printf(" 4统计成绩信息\n");printf(" 5按班级输出学生信息\n");printf(" 6保存成绩信息于文件\n");printf(" 7退出系统\n");printf("************************************\n");fflush(stdin);printf("请选择:");scanf("%d",&choose);if(1==choose)head=creat();else if(2==choose)searchMark(head);else if(3==choose)head=changeMark(head);else if(4==choose)conuntMark(head);else if(5==choose)printClassMark(head);else if(6==choose)saveFileMark(head);elseprintf("退出系统");break;}}//创建一个学生成绩信息系统MARK *creat(){MARK *head=NULL,*p1=NULL,*p2=NULL;char ch;fflush(stdin);printf("请问是否输入信息?(y 或n)\n");scanf("%c",&ch);head=p1=p2=MAR;while(p1!=NULL && ch=='y'){p1=MAR;printf("请输入要录入学生信息的学期(学期只能为 1 或 2 ):");fflush(stdin);scanf("%d",&p1->term);while(p1->term!=1 && p1->term!=2){getchar();printf("输入错误!请重新输入:");scanf("%d",&p1->term);}printf("请输入要录入学生成绩信息的班级:");fflush(stdin);scanf("%d",&p1->classes);while(p1->classes!=1 && p1->classes!=2){getchar();printf("输入错误!请重新输入:");scanf("%d",&p1->classes);}printf("请输入该班的学生信息!\n");printf("请输入学生学号:");fflush(stdin);scanf("%d",&p1->number);printf("请输入学生姓名:");fflush(stdin);scanf("%s",p1->name);printf("请输入学生姓别:");fflush(stdin);scanf("%s",p1->sex);fflush(stdin);printf("请输入语文成绩(0-100):");scanf("%f",&p1->chinese);fflush(stdin);printf("请输入数学成绩(0-100):");scanf("%f",&p1->math);fflush(stdin);printf("请输入英语成绩(0-100):");scanf("%f",&p1->english);fflush(stdin);printf("请输入计算机成绩(0-100):");scanf("%f",&p1->computer);p2->next=p1;p2=p1;printf("是否还要输入信息(y/n):");fflush(stdin);scanf("%c",&ch);}p2->next = NULL; //链表结尾return(head);}//查找学生成绩信息void searchMark(MARK *head){int choose1;while(1){printf("************************************\n");printf(" 查询学生成绩信息\n");printf(" 1查询某个学生成绩\n");printf(" 2查询不及格学生成绩\n");printf(" 3返回主菜单\n");printf("*************************************\n");fflush(stdin);printf("请选择:");scanf("%d",&choose1);if(1==choose1)searchMarkStusentone(head);else if(2==choose1)searchMarkFail(head);elseprintf("返回主菜单");break;}}//修改学生成绩信息(按学期或按学号修改)MARK *changeMark(MARK *head){int choose2;MARK *p=head->next;char name[10];char ch;int number;printf("************************************\n");printf(" 你所需要修改的\n");printf(" 1修改学号\n");printf(" 2修改姓名\n");printf(" 3修改班级\n");printf(" 4修改性别\n");printf(" 5修改成绩\n");printf("*************************************\n");fflush(stdin);printf("请选择:");scanf("%d",&choose2);while(1){while(p!=NULL){if(1==choose2){printf("你要修改的信息是:学号!\n"); //按姓名修改学号fflush(stdin);printf("请输入你要修改的学生姓名:");scanf("%s",name);if (strcmp(name,p->name)==0){fflush(stdin);printf("请输入该学生新的学号:"); //输入新学号scanf("%d",&p->number);printf("修改学生的学号后:\n");printf("%s学生的新学号是%d\n",p->name,p->number);break;}}else if(2==choose2){printf("你要修改的信息是:姓名!\n");fflush(stdin);printf("请输入你要修改的学生的学号:");scanf("%d",&number);if(number==p->number)//输入学号,判断条件{fflush(stdin);printf("请输入该学生的姓名:");scanf("%s",p->name);//输入要做修改的学生姓名printf("修改学生的姓名后:\n");printf("%s是该学生的新姓名\n",p->name);break;}}else if(3==choose2){printf("你要修改的信息是:班级!\n"); //按学号修改班级fflush(stdin);printf("请输入你要修改的学生的学号:");scanf("%d",&number);if(number==p->number){fflush(stdin);printf("请输入该学生的班级:"); //输入要做修改的班级scanf("%d",&p->classes);printf("修改班级后\n");printf("该学生的新班级为:%d\n",p->classes);break;}}else if(4==choose2){printf("你要修改的信息是:性别!\n"); //按学号修改性别fflush(stdin);printf("请输入你要修改的学生的学号:");scanf("%d",&number);if(number==p->number){fflush(stdin);printf("请输入该学生的性别:"); //输入要做修改的性别scanf("%s",p->sex);printf("修改该学生的性别后\n");printf("该学生的新性别为:%s\n",p->sex);break;}}else if(5==choose2){printf("你要修改的信息是:成绩!\n");//按学号修改成绩fflush(stdin);printf("请输入你要修改的学生的学号:");scanf("%d",&number);if(number==p->number) //输入学号{fflush(stdin);printf("请输入该学生新的语文成绩:\n");scanf("%f",&p->chinese);fflush(stdin);printf("请输入该学生新的数学成绩:\n");scanf("%f",&p->math); //输入新的四门成绩fflush(stdin);printf("请输入该学生新的英语成绩:\n");scanf("%f",&p->english);fflush(stdin);printf("请输入该学生新的计算机成绩:\n");scanf("%f",&p->computer);printf("修改后的成绩\n");printf("该学生新的语文成绩:%f\n",p->chinese);printf("该学生新的数学成绩:%f\n",p->math);printf("请该学生新的英语成绩:%f\n",p->english);printf("该学生新的计算机成绩:%f\n",p->computer);break;}}elsep=p->next;}printf("是否还要继续修改信息(y/n):\n"); //判断,是否还要修改信息,跳出循环fflush(stdin);if((ch=getchar())=='n')break;}return(head);}//统计学生成绩总分和平均分void conuntMark(MARK *head){MARK *p=head->next;int classes;char ch1,ch2;fflush(stdin);printf("请输入要统计成绩的班级(1或2):");scanf("%d",&classes);printf("正在统计该班级学生的总分,请稍侯!!!\n");while(1){totalMark(p);printf("是否还要继续统计其他学生的成绩(y/n):");fflush(stdin);if((ch1=getchar())=='n')break;}printf("是否统计该班级学生平均分?(y/n):");fflush(stdin);if((ch2=getchar()!='n')){printf("正在统计该班学生平均分进行统计,请稍侯!!!\n");aveMark(p);//调用平均分函数printf("\n");}}//按班级输出学生信息void printClassMark(MARK *head){MARK *p;p=head->next;printf("***********************************************************************\n");printf("学期\t学号\t班别\t姓名\t性别\t语文\t\t数学\t\t英语\t\t计算机\t\t\n");printf("***********************************************************************\n");while(p!=NULL){printf("%d\t",p->term);printf("%d\t",p->number);printf("%d\t",p->classes);printf("%s\t",p->name);printf("%s\t",p->sex);printf("%f\t",p->chinese);printf("%1f\t",p->math);printf("%1f\t",p->english);printf("%1f\t",p->computer);p=p->next;printf("\n");printf("**************************************************************************\n");}}//保存学生成绩信息于文件void saveFileMark(MARK *head){char *fileName;FILE *stu;MARK *p=head->next;if(p==NULL){printf("没有任何信息,请先存入信息!\n");printf("请按任意键返回主菜单!\n");getchar();}else{fileName=(char *)malloc(sizeof(char));fflush(stdin);printf("请输入你要保存的文件名!\n");gets(fileName);fileName=strcat(fileName,".txt");stu=fopen(fileName,"wb+");while(p!=NULL){fprintf(stu,"%d %d",p->term ,p->classes );fprintf(stu,"%s %d",p->name,p->number);fprintf(stu,"%s",p->sex );fprintf(stu,"%f %f %f %f",p->chinese ,p->math ,p->english ,p->computer );p=p->next ;}fclose(stu);printf("已经保存文件在%s中!\n",fileName);printf("请按任意键返回主菜单!\n");getchar();}}//查找某个学生的成绩void searchMarkStusentone(MARK *head){char ch1,ch2;MARK *p=head->next;if(p==NULL){printf("没有任何信息,请先存入信息!\n");printf("请按任意键返回主菜单!\n");getchar();}elsewhile(1){printf(" 你要选择何种方式查询成绩!\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" a、学号: \n");printf(" b、班级: \n");printf(" c、学期: \n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");fflush(stdin);scanf("%c",&ch1);switch(ch1){case 'a':searchnumber(head);break;case 'b':searchclasses(head);break;case 'c':searchterm(head);break;}printf("\n");printf("是否还要继续查询学生的信息(y/n):");fflush(stdin);if((ch2=getchar())=='n')break;}}//查询不及格学生void searchMarkFail(MARK *head){MARK *p=head->next ;char name[10];int number,flag=0;int choose5;do{fflush(stdin);printf("请输入!(1按姓名查询 2按学号查询 3 返回)\n");scanf("%d",&choose5);switch(choose5){case 1 :fflush(stdin);printf("请输入要查找的名字\n");gets(name);while(p!=NULL){if(!strcmp(name,p->name)){printf("姓名学号\n");printf("%s %d\n",p->name ,p->number );if(p->chinese <60)printf("%s 的语文成绩不及格\n",p->name );if(p->math <60)printf("%s 的数学成绩不及格\n",p->name );if(p->english <60)printf("%s 的英语成绩不及格\n",p->name );if(p->computer <60)printf("%s 的计算机成绩不及格\n",p->name );flag++;}printf("\n");p=p->next;}if(flag==0)printf("没有你要找的信息!\n");break;case 2 :fflush(stdin);printf("请输入你想要查找的学号:\n");scanf("%d",&number);while(p!=NULL){if(number==p->number){printf("姓名学号\n");printf("%s %d\n",p->name ,p->number );if(p->chinese <60)printf("%s 的语文成绩不及格\n",p->name );if(p->math <60)printf("%s 的数学成绩不及格\n",p->name );if(p->english <60)printf("%s 的英语成绩不及格\n",p->name );if(p->computer <60)printf("%s 的计算机成绩不及格\n",p->name );flag++;}printf("\n");p=p->next;}if(flag==0)printf("没有你要找的信息!\n");break;case 3:printf("请按任意键返回!\n");getchar();break;default:printf("你输入的有误!!请重新选择\n");break;}}while(choose5!=1 && choose5!=2 && choose5!=3);printf("按任意键返回!\n");getchar();}//按学号查询void searchnumber(MARK *head){MARK *p=head->next;int number,i=0;printf("请输入你要查询的学生学号:\n");scanf("%d",&number);while(p!=NULL){if(number==p->number){printf("-------------------------------------------------------------------------\n");printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n");printf("-------------------------------------------------------------------------\n");printf("%d\t",p->term);printf("%d\t",p->number);printf("%d\t",p->classes);printf("%s\t",p->name);printf("%s\t",p->sex);printf("%1f\t",p->chinese);printf("%1f\t",p->math);printf("%1f\t",p->english);printf("%1f\t",p->computer);i=2;}p=p->next;}if(i==0)printf("没找到该学生的信息!");}//按班级查询成绩void searchclasses(MARK *head){int classes,i=0;MARK *p=head->next;printf("请输入你要查询成绩的班级:");scanf("%d",&classes);printf("请输出%d班所有同学的成绩:\n",classes);printf("------------------------------------------------------------------------\n");printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n");printf("-------------------------------------------------------------------------\n");while(p!=NULL) {if(classes==p->classes){printf("%d\t",p->term);printf("%d\t",p->number);printf("%d\t",p->classes);printf("%s\t",p->name);printf("%s\t",p->sex);printf("%1f\t",p->chinese);printf("%1f\t",p->math);printf("%1f\t",p->english);printf("%1f\t",p->computer);printf("\n");printf("\n");i=2;}p=p->next;}if(i==0)printf("没找到学生信息!\n");}//按学期查询void searchterm(MARK *head){int term,i=0;MARK *p=head->next;printf("请输入你要查询成绩的学期:");scanf("%d",&term);printf("请输出第%d学期所有班级的信息:\n");printf("------------------------------------------------------------------------\n");printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n");printf("-------------------------------------------------------------------------\n");while(p!=NULL){if(term==p->term){printf("%d\t",p->term);printf("%d\t",p->number);printf("%d\t",p->classes);printf("%s\t",p->name);printf("%s\t",p->sex);printf("%1f\t",p->chinese);printf("%1f\t",p->math);printf("%1f\t",p->english);printf("%1f\t",p->computer);printf("\n");printf("\n");i=2;}p=p->next;}if(i==0)printf("没找到学生信息!\n");}//学生总分void totalMark(MARK *head){float total=0;int i=0;MARK *p=head->next;while(p!=NULL){total=p->chinese+p->math+p->english+p->computer;printf("第%d个学生的总分为:%1f!\n",i+1,total);printf("\n");printf("已经统计了第%d个学生的总成绩!\n",i+1);printf("\n");printf("\n");i++;p=p->next;}}//学生平均分void aveMark(MARK *head){float total=0,ave=0;int i=0;MARK *p=head->next;while(p!=NULL){total=p->chinese+p->math+p->english+p->computer;ave=total/4;printf("第%d个学生的平均分:%1f!\n",i+1,ave);printf("\n");printf("已经统计了第%d个学生的平均成绩!\n",i+1);printf("\n");printf("\n");i++;p=p->next;}}4.1.2运行结果如下:(a)创建学生成绩信息(b)查找学生成绩信息第五章总结与体会5.1个人总结心得在做这学生成绩管理系统时,自我感觉还好,在大的方面能够较为准确的把握,只是在一些小的细节不能做的很好,这一点是值得思考的地方。