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

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

学生成绩管理系统我将把我的实现步骤完整的写出来,我是在VC 6.0版本下用MFC实现的。
我创建的基于单文档的应用程序,过程不介绍,大家都会。
下面的是我系统菜单:思路:刚进入系统时,只有“登录”菜单可用,其他三个菜单项都是灰色不可用的。
当用户点“进入系统”菜单项时,用户输入用户名、密码和用户类型,系统将根据相应的用户权限使相应的菜单可用,并且“进入系统”菜单项变为不可用。
如:如果用户类型是学生,那么只有学生权限菜单可用,而“教师权限”和“管理员权限”都不可用,同时“进入系统”变为不可用。
“学生权限”下只有“查询成绩”,因为学生只可以查询自己相应的成绩;“教师权限”下有“查询学生成绩”和“增改删学生成绩”两个菜单项,因为教师除了可以查询学生成绩还可以增加、修改和删除学生成绩;“管理员权限”下有“管理学生”和“管理教师”两个菜单项。
整体设计:因为我们要设置系统菜单的状态,所以必须在CMainFrame中添加相应的函数和代码,具体步骤如下:【步骤1】由于系统要使用ODBC类操作数据库,所以需要在stdafx.h中加入代码:#include <afxdb.h>【步骤2】在CMainFrame中的OnCreat()中添加代码如下,实现菜单的初始化工作,当用户没进入系统之前,只有“登陆”菜单下的“进入系统”菜单项可用,而“退出系统”和其他3个权限菜单都不可用,即都是灰色的。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){//使“退出系统”和其他3个权限菜单都不可用,即都是灰色的GetMenu()->GetSubMenu(0)-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(2,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);}【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。
学生成绩信息管理系统实训报告

学生成绩信息管理系统实训报告第一章:引言1.1 研究背景学生成绩信息管理是学校管理的重要组成部分,通过对学生成绩进行管理,可以及时了解学生的学习情况,为学校教育教学提供数据支持。
传统的学生成绩管理方式主要依靠纸质档案进行记录和管理,存在信息不及时、难以查询、易丢失等问题,给学校管理带来了不便。
1.2 研究目的本实训报告的目的是设计一个学生成绩信息管理系统,实现学生成绩的录入、查询、统计、分析等功能,提高学生成绩管理的效率和准确性。
1.3 研究方法本实训采用软件开发的方法,结合需求分析、系统设计和编程实现等步骤,开发学生成绩信息管理系统。
第二章:需求分析2.1 功能需求学生成绩信息管理系统应具备以下功能:1. 学生信息的录入和管理:包括学生的基本信息和成绩信息的录入、修改、删除等操作。
2. 成绩的查询和统计:可以根据学生的姓名、学号、科目等条件进行查询和统计。
3. 成绩的分析和报告:可以生成成绩分析和报告,包括学生的平均成绩、及格率、优秀率等统计信息。
4. 数据的备份和恢复:可以对学生成绩数据进行备份和恢复,防止数据丢失。
2.2 性能需求学生成绩信息管理系统应具备以下性能需求:1. 响应速度快:可以快速响应用户的操作请求,保证系统的流畅运行。
2. 数据安全可靠:学生成绩数据应进行相关的安全措施,保证数据的安全性和可靠性。
3. 系统稳定可靠:系统应具备较高的稳定性和可靠性,能够长期稳定运行。
第三章:系统设计3.1 系统架构设计学生成绩信息管理系统采用三层架构设计,分为表现层、业务逻辑层和数据访问层。
1. 表现层:负责用户界面的展示和用户与系统的交互。
2. 业务逻辑层:负责处理用户请求和业务逻辑的处理,包括学生成绩的录入、查询、统计和分析等操作。
3. 数据访问层:负责与数据库进行交互,包括学生成绩数据的读取、存储和修改等操作。
3.2 数据库设计学生成绩信息管理系统使用关系数据库存储学生成绩数据,设计了学生表和成绩表。
学生成绩管理系统

学生成绩管理系统学生成绩管理系统是一个用于管理、记录和分析学生学习成绩的工具。
它可以帮助学校、教师和家长更好地了解学生的学习情况,提供个性化的教学指导和辅导。
本文将介绍学生成绩管理系统的功能、优势以及在实际应用中的作用。
一、功能介绍1. 学生信息管理:学生成绩管理系统可以存储和管理学生的个人信息,包括姓名、班级、学号、家庭联系方式等。
教师和学校可以通过系统快速查找和更新学生信息。
2. 成绩录入与查询:学生的各科成绩可以通过系统进行录入和查询。
教师可以根据学科、班级或学生姓名进行成绩查询,及时了解学生的学习情况。
3. 成绩分析与报告:学生成绩管理系统可以根据学生的成绩数据生成详细的成绩分析报告。
通过分析学生在不同科目、不同时间段的表现,教师可以更好地评估学生的学习水平和进步空间,及时调整教学内容和方法。
4. 学习计划和目标设定:学生成绩管理系统可以帮助学校和教师制定学生个性化的学习计划和目标。
根据学生的历史成绩和评估结果,系统可以推荐适合学生的学习资源和教材,提供针对性的学习建议。
5. 家校互动平台:学生成绩管理系统还提供了家校互动的功能,家长可以通过系统查看学生的成绩和评语,与教师进行实时沟通。
教师可以向家长发布通知、作业、考试安排等信息,促进学校和家庭的紧密合作。
二、系统优势1. 提高工作效率:学生成绩管理系统可以自动化完成学生信息管理、成绩录入和查询等繁琐的工作,节省教师和学校的时间和精力。
2. 数据准确性:通过使用学生成绩管理系统,可以避免人为录入错误和纰漏,确保学生成绩数据的准确性和完整性。
3. 个性化分析:学生成绩管理系统提供了丰富的成绩分析功能,可以根据学生的特点和需求进行个性化评估和辅导,促进学生全面发展。
4. 促进教学改进:通过对学生成绩进行全面分析,教师可以及时发现学生的薄弱环节和问题,采取有针对性的教学改进措施,提高教学效果。
5. 加强家校联系:学生成绩管理系统提供了家校互动平台,方便教师和家长之间及时沟通,共同关注学生的学习情况和发展。
学生成绩管理系统

学生成绩管理系统简介学生成绩管理系统是一种用于管理学生的学业成绩和相关信息的软件系统。
它可以帮助学校、教师和学生有效地管理和查询学生的成绩,提供全面的成绩分析和统计功能,促进教学质量的提高。
功能学生成绩管理系统通常具有以下核心功能:1.学生信息管理:包括学生的基本信息、课程注册、班级信息等。
2.成绩录入:教师可以登录系统,录入学生成绩,并进行相应的成绩审核和修改。
3.成绩查询:学生、教师和学校管理者均可通过系统查询学生成绩,可以按照学生、班级、课程等维度进行灵活查询。
4.成绩统计与分析:系统可以对成绩数据进行统计和分析,生成各类成绩报告和分析图表,为教师和学校提供决策依据。
5.成绩排名:系统可以根据学生成绩进行排名,可以按照总分、班级、课程等维度进行排名。
6.数据导入导出:系统可以支持将学生成绩数据导入导出到Excel、CSV等格式,方便学校的数据管理。
优势学生成绩管理系统的应用带来诸多优势:1.提高工作效率:通过系统自动化处理和统计成绩数据,节省了大量的人力和时间成本。
2.提供准确的数据:系统可以准确地计算和记录学生成绩,避免了人工计算和录入带来的错误。
3.提供个性化服务:学生成绩管理系统可以根据学生的不同需求提供个性化的信息查询和分析功能,满足学生个性化的学习需求。
4.提供全面的分析和决策支持:系统可以生成各类成绩报告和分析图表,帮助教师和学校进行成绩分析和决策。
5.提高教学质量:通过系统对学生成绩进行全方位的管理和分析,有助于教师了解学生的学习状况,及时调整教学方法,提高教学质量。
使用场景学生成绩管理系统适用于各类学校、教育机构以及在线教育平台的学生成绩管理需求。
以下是几个典型的使用场景:1.学校管理者可以通过系统了解学校整体的学生成绩情况,进行综合分析和决策。
2.教师可以通过系统录入学生成绩、排名、查询历史成绩等,方便管理学生成绩和进行个性化教学。
3.学生可以通过系统查询自己的成绩、查看排名等,及时了解自己的学习状况。
UML学生成绩管理系统

管理员删除学生成绩信息序列图
图3-3 管理员删除学生信息序列图
•精选ppt
管理员查询学生信息序列图
•精选ppt 图3-4 管理员查询信息序列图
教师录入学生成绩信息序列图
•精选ppt 图3-5 教师录入学生成绩信息序列
教师修改学生成绩信息序列图
•精选ppt 图3-6 教师修改学生成绩信息序列
•精选ppt
图1-2 管理员接口模块框图
(三)教师接口模块
■ 管理员接口是 系统提供给教 师管理学生成 绩的接口 。教 师接口模块包 括如下图所示 几个几个方面:
•精选ppt
图1-3 教师接口模块框图
二、系统建模
➢ 用例图 ➢ 类图 ➢ 序列图 ➢ 协作图 ➢ 活动图 ➢ 状态图
•精选ppt
1.用例图
•精选ppt
学生成绩管理系统
•精选ppt
第四组
➢ 需求分析
➢ 系统总体功能需求 ➢ 管理员接口模块 ➢ 教师接口模块
➢ 系统建模
➢ 总结
•精选ppt
目录
一、需求分析
学生成绩管理系统是专门针对学校所开发 的一种以管理为基础的信息管理系统 , 它 涵盖成绩管理服务的所有环节 ,将原始的 人工统计方法转换为先进的电脑管理模式。 ■ 系统管理员登录系统后 ,通过身份验证 , 能够对学生的基本信息进行管理 ,包括如 下: 添加学生信息、查询学生信息、修改 学生信息、删除学生信息。
用户拥有不同级别的权限 , 以及实现不同的管理操作 。当 用户登录到系统中后用例结束。 ■ 参与者: 管理员 、教师和学生 ■ 前提条件: 用户身份验证。 ■ 事后条件: 登录到系统中。 ■ 主事件流: 进入系统 , 实现管理操作。 ■ 其他事件流: 当用户忘记密码而不能登录到系统中时 , 可 以进行密码寻回操作。
学生成绩管理系统

4 可以引入更多的教学和管理功能:如在 线学习、教学评估等,更好地服务于教 育教学
-
THANK YOU
ENGLISH
可爱/简约/卡通
学生成绩管理系统
-
1
系统功能2系统流程来自3系统要求4
系统实现
5
系统未来发展
学生成绩管理系统
1
学生成绩管理系统是一个用于管理学生成绩的 计算机程序,通常用于学校或教育机构
2
这个系统可以记录每个学生的个人信息和成绩,
包括学生姓名、学号、班级、各科成绩等
3
以下是一个简单的学生成绩管理系统的示例
系统功能
系统流程
系统流程
2.1 学生信息流程
打开系统:进入学生信息管理界面
系统流程
选择添加学生信息:输入学生姓名、学 号、班级等信息
选择编辑学生信息:输入要修改的学生 学号,修改相关信息
选择删除学生信息:输入要删除的学生 学号,删除该学生信息
退出系统
系统流程
2.2 成绩管理流程
打开系统:进入成绩管理界面 选择添加成绩:输入学生学号及各科成 绩 选择编辑成绩:输入要修改的学生学号 及要修改的科目和成绩 选择删除成绩:输入要删除的学生学号 及科目,删除该科目成绩 退出系统
坏
系统实现
系统实现
系统实现
为了实现学生成绩管理系统的各项功能,以下步骤需要被完成 确定系统的需求和功能:制定详细的需求说明书 设计系统的数据库结构和数据模型:包括学生信息、成绩信息等 开发系统的各项功能模块:包括学生信息管理、成绩管理、查询和统计等 进行系统的测试和调试:确保系统的稳定性和正确性 进行系统的用户培训和文档编写:确保用户能够正确使用系统
管理信息系统课程设计 学生成绩管理系统

管理信息系统课程设计学生成绩管理系统一、引言在当今教育领域,学生成绩管理是学校教学管理的重要组成部分。
随着学校规模的不断扩大,学生人数的日益增加,传统的手工成绩管理方式已经无法满足高效、准确、便捷的管理需求。
因此,开发一个功能齐全、操作简便的学生成绩管理系统具有重要的现实意义。
二、系统需求分析(一)功能需求1、学生信息管理能够录入、修改、查询和删除学生的基本信息,如学号、姓名、班级等。
2、课程信息管理对学校开设的课程进行管理,包括课程名称、课程代码、学分、授课教师等信息的录入、修改和查询。
3、成绩录入与修改教师能够方便地录入学生的考试成绩,并支持成绩的修改和调整。
4、成绩查询与统计学生和教师可以按照不同的条件查询成绩,如学号、课程名称等。
同时,系统能够提供成绩统计功能,如平均分、最高分、最低分等。
5、权限管理为不同的用户设置不同的权限,如学生只能查询自己的成绩,教师可以录入和修改所授课程的成绩,管理员拥有系统的最高权限。
(二)性能需求1、响应时间系统在进行数据录入、查询和统计等操作时,响应时间应控制在合理范围内,确保用户的操作能够及时得到反馈。
2、稳定性系统应具备良好的稳定性,能够在长时间运行的情况下不出现故障或数据丢失。
3、安全性保证系统数据的安全性,防止非法用户的入侵和数据的篡改。
(三)数据需求1、学生信息包括学号、姓名、性别、出生日期、班级等。
2、课程信息课程代码、课程名称、学分、授课教师等。
3、成绩信息学号、课程代码、成绩等。
三、系统设计(一)总体设计1、系统架构采用 B/S(浏览器/服务器)架构,用户通过浏览器访问系统,服务器端负责数据的处理和存储。
2、模块划分系统主要分为学生信息管理模块、课程信息管理模块、成绩管理模块、查询统计模块和权限管理模块。
(二)数据库设计1、数据库概念模型根据系统需求,设计出学生、课程、成绩等实体以及它们之间的关系。
2、数据库表结构创建学生表(Student)、课程表(Course)、成绩表(Score)等,并定义相应的字段和数据类型。
- 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 函数列表 (1)4. 设计结果与分析 (1)25. 总结与体会 (1)5参考文献 (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)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)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个人总结心得在做这学生成绩管理系统时,自我感觉还好,在大的方面能够较为准确的把握,只是在一些小的细节不能做的很好,这一点是值得思考的地方。