C+课程设计报告学生成绩管理系统
- 格式:doc
- 大小:647.00 KB
- 文档页数:29
C语言课程设计学生成绩管理系统在当今数字化的时代,学生成绩管理系统对于学校和教育机构来说至关重要。
它不仅能够提高教学管理的效率,还能为教学决策提供有力的数据支持。
本次 C 语言课程设计的目标就是创建一个功能齐全、操作便捷的学生成绩管理系统。
一、系统需求分析首先,明确系统需要实现的基本功能。
包括学生信息的录入,如姓名、学号等;课程信息的设置,如课程名称、学分等;成绩的录入、修改和查询;以及成绩的统计分析,如计算平均分、排名等。
同时,系统应具备良好的用户界面,操作简单易懂,方便教师和管理人员使用。
对于数据的存储和管理,要保证数据的安全性和完整性,防止数据丢失或被篡改。
二、系统设计(一)数据结构设计选择合适的数据结构来存储学生、课程和成绩信息。
可以使用结构体来定义学生和课程的数据类型,使用数组或链表来存储多个学生和课程的信息。
例如,定义学生结构体如下:```ctypedef struct student {int id;char name50;float scores10; //假设最多 10 门课程} Student;```(二)功能模块设计将系统划分为多个功能模块,如录入模块、查询模块、修改模块、统计模块等。
每个模块负责完成特定的功能,模块之间相互独立,便于代码的维护和扩展。
录入模块负责接收用户输入的学生、课程和成绩信息,并进行合法性检查。
查询模块可以根据用户输入的条件,如学号、姓名、课程名称等,查询相应的学生成绩信息。
修改模块允许用户对已录入的成绩进行修改,但需要进行权限验证。
统计模块用于计算学生的平均分、总分,并进行排名。
(三)界面设计设计简洁明了的用户界面,使用菜单选项让用户选择不同的功能。
可以使用控制台输入输出的方式,也可以考虑使用图形界面库来实现更友好的界面。
三、系统实现(一)数据输入与存储使用文件来存储学生成绩数据,便于数据的持久化。
在程序启动时,读取文件中的数据;在程序结束时,将修改后的数据保存回文件。
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
c课程设计成绩管理系统一、课程目标知识目标:1. 学生能理解成绩管理系统的基本概念,掌握其功能结构与操作流程。
2. 学生能运用所学知识,分析并设计简单的成绩管理功能模块。
3. 学生掌握数据库的基础知识,能够实现数据的存储、查询和更新。
技能目标:1. 学生能够运用编程语言或工具,实现成绩管理系统的基本操作。
2. 学生具备问题分析能力,能够针对实际需求设计合适的成绩管理方案。
3. 学生通过实践操作,培养团队协作和沟通能力。
情感态度价值观目标:1. 学生培养对信息技术的兴趣,认识到其在现实生活中的应用价值。
2. 学生在学习过程中,形成积极探究、勤于思考的良好习惯。
3. 学生通过课程学习,认识到诚信、公正、严谨的态度在成绩管理中的重要性。
课程性质:本课程为信息技术学科,结合学生所在年级,注重理论联系实际,提高学生的动手操作能力和实际问题解决能力。
学生特点:学生具备一定的计算机操作基础,对编程和数据库知识有一定了解,但需加强实践应用能力的培养。
教学要求:结合课程内容,注重启发式教学,引导学生主动参与,培养其创新意识和团队协作能力。
通过案例分析和实践操作,使学生将所学知识内化为具体的学习成果。
二、教学内容1. 成绩管理系统的基本概念与功能- 系统介绍:成绩管理系统的定义、作用及其在实际中的应用。
- 功能模块:学生信息管理、课程信息管理、成绩录入、成绩查询、成绩统计与分析等。
2. 数据库基础知识- 数据库概念:数据库的定义、分类及其在成绩管理系统中的应用。
- 数据表设计:字段、数据类型、主键、外键等概念及应用。
3. 编程语言与开发工具- 编程语言:介绍适合开发成绩管理系统的编程语言(如Python、Java等)。
- 开发工具:介绍相关开发工具(如Eclipse、Visual Studio等)的使用。
4. 成绩管理系统的设计与实现- 设计流程:需求分析、系统设计、编码实现、测试与调试等。
- 实践案例:分析实际案例,引导学生动手设计简单的成绩管理系统。
c 课程设计学生成绩管理系统一、课程目标知识目标:1. 让学生理解数据库的基本概念,掌握学生成绩管理系统的基本组成与功能。
2. 使学生掌握使用SQL语句进行数据查询、插入、更新和删除等基本操作。
3. 帮助学生了解数据表之间的关系,并学会运用数据库设计原则进行简单的系统设计。
技能目标:1. 培养学生运用数据库软件(如:MySQL、Access等)设计和实现学生成绩管理系统的能力。
2. 提高学生的问题分析能力,使其能够根据实际需求设计合理的数据库结构。
3. 培养学生的团队协作能力,学会在项目中分工合作、共同解决问题。
情感态度价值观目标:1. 培养学生对数据库技术的兴趣,激发其探索精神,提高学习积极性。
2. 培养学生的责任感,使其认识到数据管理在现实生活中的重要性,增强对数据安全的意识。
3. 引导学生树立正确的价值观,认识到技术发展对教育行业的影响,激发学生为我国教育事业发展贡献力量的意识。
课程性质:本课程属于信息技术学科,以实践操作为主,理论联系实际,注重培养学生的动手能力和实际应用能力。
学生特点:本课程针对的是高中年级学生,他们已经具备了一定的计算机操作能力和逻辑思维能力,对新鲜事物充满好奇,但可能对数据库技术了解不多。
教学要求:结合学生特点,采用任务驱动法,以案例为主线,引导学生自主探究、合作学习。
在教学过程中,注重理论与实践相结合,让学生在实践中掌握知识,提高技能。
同时,关注学生的情感态度价值观的培养,使他们在掌握技术的同时,树立正确的价值观。
通过分解课程目标,为后续的教学设计和评估提供明确的方向。
二、教学内容1. 数据库基础知识:介绍数据库的基本概念、数据模型、关系数据库的组成及其应用场景。
- 教材章节:第一章 数据库概述2. 数据表设计与关系:讲解数据表的设计原则、数据类型、字段属性,以及表与表之间的关系。
- 教材章节:第二章 数据表与关系3. SQL语句操作:学习SQL语言的基本语法,包括数据查询、插入、更新、删除等操作。
c语言成绩管理系统课程设计报告一、引言:成绩管理系统是一种可以有效管理学生课程成绩的工具。
通过该系统,教师可以方便地录入、修改和查询学生的成绩,而学生和家长也可以方便地查看自己的成绩情况。
本次课程设计旨在设计一个基于C语言的成绩管理系统,实现对学生课程成绩的录入、修改和查询等功能。
二、系统设计:1. 数据结构设计:为了实现成绩管理系统的各项功能,需要设计相关的数据结构。
对于学生信息,可以设计一个结构体,包含学号、姓名、性别等字段;对于课程成绩,可以设计一个结构体,包含学号、课程名称、成绩等字段。
2. 功能设计:(1) 学生信息录入功能: 教师可以通过输入学生的学号、姓名、性别等信息,将学生信息录入系统中。
(2) 成绩录入功能: 教师可以通过输入学生的学号和课程名称,将学生的课程成绩录入系统中。
(3) 成绩修改功能: 教师可以根据学生的学号和课程名称,修改学生的课程成绩。
(4) 成绩查询功能: 学生和家长可以通过输入学生的学号,查询学生的课程成绩。
三、系统实现:1. 用户界面设计:使用C语言中的控制台窗口,通过菜单的方式显示系统功能选项,用户可以通过键盘输入选择对应的功能。
2. 数据存储设计:使用文件存储学生信息和课程成绩。
通过读取和写入文件的方式,实现数据的持久化存储。
3. 功能实现:(1) 学生信息录入功能的实现: 用户输入学生的学号、姓名、性别等信息后,将学生信息写入文件。
(2) 成绩录入功能的实现: 用户输入学生的学号、课程名称和成绩后,将成绩信息写入文件。
(3) 成绩修改功能的实现: 用户输入学生的学号、课程名称和新的成绩后,根据学号和课程名称找到对应的成绩信息并修改。
(4) 成绩查询功能的实现: 用户输入学生的学号后,根据学号在文件中查找对应的成绩信息并显示在控制台窗口。
四、系统测试:对于每一个功能,设计相应的测试用例,验证系统的正确性和稳定性。
例如,录入一个学生信息后,查询该学生的信息是否正确;录入一门课程成绩后,修改该成绩并查询是否修改成功等。
c课程设计学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握学生成绩管理系统的基本概念和功能。
2. 学生能够运用所学知识,设计并实现一个简易的学生成绩管理系统。
3. 学生了解数据库的基本操作,如数据的插入、查询、更新和删除。
技能目标:1. 学生掌握使用编程语言(如Python、Java等)开发简单的数据库应用。
2. 学生能够运用结构化查询语言(SQL)进行数据库的基本操作。
3. 学生具备分析和解决实际问题的能力,能够根据需求设计合适的数据库结构。
情感态度价值观目标:1. 学生培养对计算机科学的兴趣和热情,增强学习动力。
2. 学生树立团队合作意识,学会在团队中发挥个人优势,共同完成任务。
3. 学生认识到信息技术的实用价值,提高对现代社会信息技术的认识。
课程性质分析:本课程为信息技术或计算机科学相关课程的实践环节,旨在通过设计与实现学生成绩管理系统,让学生将所学理论知识应用于实际项目中。
学生特点分析:学生具备一定的编程基础和数据库知识,对实际项目开发感兴趣,但可能缺乏项目实践经验。
教学要求:1. 结合课本知识,引导学生运用编程语言和数据库技术实现学生成绩管理系统。
2. 注重实践操作,让学生在动手实践中掌握课程知识。
3. 强调团队协作,培养学生沟通、协作和解决问题的能力。
4. 结合课程目标,对学生的学习成果进行评估,确保课程目标的达成。
二、教学内容1. 数据库基础知识回顾:包括数据库的定义、作用、分类,重点掌握关系型数据库的基本概念。
教材章节:第一章 数据库概述2. 数据库设计:讲解数据库设计的基本原则,指导学生设计学生成绩管理系统的数据库表结构。
教材章节:第二章 数据库设计3. 结构化查询语言(SQL):复习SQL的基本语法,包括数据定义、数据查询、数据更新和数据删除。
教材章节:第三章 结构化查询语言4. 编程语言与数据库连接:根据学生已掌握的编程语言,教授如何使用编程语言操作数据库。
教材章节:第四章 编程语言与数据库连接5. 学生成绩管理系统功能模块设计:分析系统需求,设计功能模块,包括学生信息管理、课程信息管理、成绩管理等。
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
c学生成绩管理系统课程设计报告一、教学目标本课程的教学目标是使学生掌握学生成绩管理系统的核心知识,包括系统的设计、实现和应用。
具体来说,知识目标要求学生了解成绩管理系统的原理、结构和常用技术;技能目标要求学生能够使用相关工具和语言进行成绩管理系统的开发和维护;情感态度价值观目标要求学生认识到成绩管理系统在教育领域的重要性,培养学生的责任感和使命感。
二、教学内容根据课程目标,教学内容主要包括成绩管理系统的原理、结构、设计和实现。
具体来说,教材的章节安排如下:1.第一章:成绩管理系统的概述,介绍成绩管理系统的定义、功能和应用场景。
2.第二章:成绩管理系统的结构与原理,讲解成绩管理系统的组成部分、工作原理和关键技术。
3.第三章:成绩管理系统的需求分析,引导学生学习如何进行需求分析,并编写需求说明书。
4.第四章:成绩管理系统的系统设计,教授系统设计的方法和技巧,包括数据库设计、界面设计和模块划分。
5.第五章:成绩管理系统的实现与测试,指导学生进行系统编码、调试和测试,确保系统功能的正确性和稳定性。
三、教学方法为了实现课程目标,我们将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法。
具体来说:1.讲授法:用于讲解成绩管理系统的理论知识,帮助学生建立系统性的知识体系。
2.讨论法:鼓励学生就实际问题进行讨论,培养学生的思考能力和团队协作精神。
3.案例分析法:通过分析典型成绩管理系统案例,使学生更好地理解并应用所学知识。
4.实验法:让学生动手实践,亲身体验成绩管理系统的开发和应用过程,提高学生的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统性的知识学习。
2.参考书:提供丰富的参考资料,帮助学生拓展视野,深入理解成绩管理系统。
3.多媒体资料:制作课件、教学视频等多媒体资料,增强课堂教学的趣味性和互动性。
4.实验设备:配置必要的实验设备,确保学生能够进行实际操作,提高实践能力。
C语言课程设计报告一 .问题描述:题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
要求使用二进制文件方式存储数据,系统以菜单方式工作,实现对学生成绩的录入,修改,统计,排序,查询,输出等功能。
二 .设计目的设计“学生成绩管理系统”使其具有以下功能:(1)能完成对学生成绩的录入(2)能按班级统计学生的成绩,求学生的总分及平均分,排序(3)能按班级,学期输出学生的成绩单和不及格科目及学生名单(4)能查询单个学生成绩(5)能修改单个学生信息三 . 要求系统以菜单方式工作四 . 功能1 输入功能:可以一次完成无数条信息的输入。
2 输出功能:能按班级输出学生的成绩单。
3 修改功能:完成对单个学生成绩的修改。
4 查找功能:完成对单个学生信息查找,并显示。
5 排序功能:按学生成绩进行排序,并显示。
六 . 详细内容整个系统除了主函数外,另外还有5个函数,实现六大功能:输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。
各个函数的详细设计说明分别如下:1 . 定义结构体及宏定义#include <stdlib.h>#include <stdio.h>#include <string.h>#define NUM 100struct student{ int term;int num;int classes;char name[10];int score[4];int sum;float average;}stu[NUM];2.主函数 main()利用无限次循环for(;;)和swithch()进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
c语言课程设计学生成绩管理系统报告(一)C语言课程设计学生成绩管理系统报告介绍•学生成绩管理系统的设计背景•项目的目的和意义系统需求分析•功能需求–学生信息录入–成绩管理–查询与统计•性能需求–系统响应速度–数据存储和读取效率系统设计•系统结构•数据库设计•模块功能划分技术选型•编程语言选择:C语言•数据库选择:SQLite 实现步骤•搭建开发环境•创建学生信息录入模块•创建成绩管理模块•创建查询与统计模块•进行系统集成和测试系统遇到的问题与解决方案•内存管理问题•数据库操作问题•用户界面设计问题系统改进与优化•提升性能•增加功能•修复bug结果与展望•成果总结•可能的进一步发展方向参考资料•《C语言程序设计》•《数据库系统概念》•网上开源学生成绩管理系统案例介绍本文将介绍一款基于C语言的学生成绩管理系统的设计与开发。
学生成绩管理系统是一种用于方便高校或学校管理学生成绩的工具。
本项目的目的是提供一个简单易用、功能全面的学生成绩管理系统。
系统需求分析功能需求学生成绩管理系统需具备以下功能:1.学生信息录入:能够方便地录入学生的基本信息,包括姓名、学号、班级等。
2.成绩管理:能够记录学生的各科成绩,并能对成绩进行增、删、改、查等操作。
3.查询与统计:能够根据学号、姓名等条件进行查询,还能对成绩进行统计,包括总分、平均分等。
性能需求为确保学生成绩管理系统的良好使用体验,有以下性能需求:1.系统响应速度:系统应具备快速响应用户操作的能力,避免出现卡顿现象。
2.数据存储和读取效率:系统应能高效地存储和读取学生信息和成绩数据,以保证系统的稳定性和可靠性。
系统设计系统结构学生成绩管理系统采用前后端分离的设计方式,前端使用C语言编写,后端使用SQLite数据库进行数据存储和读取。
系统结构由三个主要模块组成:学生信息录入模块、成绩管理模块和查询与统计模块。
数据库设计系统使用SQLite数据库进行数据存储和读取。
数据库设计包括学生表和成绩表,学生表存储学生的基本信息,成绩表存储学生的各科成绩。
学生成绩管理系统说明:该课程设计包含两个部分,一个为纯dos系统下的控制台程序,用C++编写;另一个为有界面的MFC项目。
目录纯dos系统下的控制台程序1、设计要求 (3)2、设计分析 (3)3、调试说明 (4)4、源代码 (8)5、实验总结 (21)有界面的MFC项目1、设计内容 (22)2、设计说明 (22)3、设计步骤 (22)4、运行演示 (27)5、实验总结 (29)纯dos系统下的控制台程序1、设计要求现有学生成绩信息,内容如下:姓名学号语文数学英语张明明01 67 78 82李成友02 78 91 88张辉灿03 68 82 56王露04 56 45 77陈东明05 67 38 47请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。
此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档2、设计分析(1)需求分析:该程序要能实现对学生成绩信息的增加、删除、修改,实现对学生按姓名查询,按学号查询显示,对任意一个课程名和分数段的学生人数进行输出并统计人数,最好还要根据用户的需求对学生成绩排序。
(2)系统性能要求:a.系统安全、可靠;b.功能齐全;c.操作方便、界面友好;d.易于维护和扩充。
(3)系统功能模块:学生成绩管理系统包括:增加、删除、修改、显示、信息查询、成绩统计、排序几个部分构成。
(4)模块框架图3、调试说明运行程序后,现出来一个简洁的主界面。
若没有学生信息,显示“这是一个新系统,无学生信息,请先输入。
”若已存在学生信息,显示“读取学生信息成功!”学生成绩管理系统增加修改删除显示信息查询成绩统计排序按学号查询按姓名查询输入课程名和分数段统计输入课程名和升降序排序一秒钟后,自动切入主菜单界面。
首先选择1,增加学生信息。
录入学生信息后选择4,显示学生信息。
选择2,删除学生信息,输入要删除的学生姓名,这里我输入的是王露,显示剩下几位同学的信息。
选择3,修改学生信息,输入要修改的学生姓名,然后输入新的学生信息,这里我修改的是张明明,显示修改后的学生信息。
将张明明和王露的信息重新输入。
输入5,信息查询,出来选择界面,“1、按学生姓名查找”、“2、按学生学号查找”,输入1,运行结果如下:输入2,运行结果如下:输入6,排序,显示选择界面,用户可根据需求选择科目和升降序,这里我是按语文成绩降序排序。
输入7,成绩统计,用户自行输入要统计的科目和分数段进行统计。
这里我统计的是英语成绩在60—90的学生。
4、源程序代码#include<iostream>#include<fstream>#include<iomanip>#include<stdlib.h>#include<Windows.h>#include<conio.h>using namespace std ;#define HEADER1 " -----------------------------学生成绩----------------------------\n"#define HEADER2 " | 姓名 | 学号 | 数学 | 语文 | 英语 | 总分 |\n"#define HEADER3 " |----------|----------|----------|----------|----------|----------|\n"class Student //定义学生类{public:char name[20] ;char id[20] ;int math ;int chinese ;int english ;int sum ;Student *next ;void input() ;void ReadFile(istream & in) ;void show() ;} ;void Student::input() //输入学生信息函数{cout<<"\n\t\t请输入:"<<endl<<endl ;cout<<"\t\t姓名:" ;cin>>name ;cout<<"\t\t学号:" ;cin>>id ;cout<<"\t\t数学成绩:" ;cin>>math ;cout<<"\t\t语文成绩:" ;cin>>chinese ;cout<<"\t\t英语成绩:" ;cin>>english ;sum = math + chinese + english ;}void Student::ReadFile(istream & in) //读取文件{in>>name>>id>>math>>chinese>>english>>sum ;}void Student::show() //输出学生信息{cout<<" |"<<setw(8)<<name<<" |"<<setw(6)<<id<<" |"<<setw(6)<<math<<" |"<<setw(6)<<chinese<<" |"<<setw(6)<<english<<" |"<<setw(7)<<sum<<" |"<<endl ;cout<<"|----------|----------|----------|----------|----------|----------|\n " ;}class StudentMassage //定义学生信息类,包含各项处理功能{public:StudentMassage() ;~StudentMassage() ;void ShowMenu() ;void Display() ;void AddItem() ;void Find() ;void save() ;void ModifyItem() ;void RemoveItem() ;void Swap(Student *p1 , Student *p2) ;void Sort() ;int ListCount() ;int Count() ;private:Student *Head , *End ;ifstream in ;ofstream out ;Student *FindItem(char *name) ;Student *FindId(char *id) ;} ;Student *StudentMassage::FindItem(char *name){Student *p ;for(p = Head ; p->next != End ; p = p->next) if(!strcmp(p->next->name , name))return p ;return NULL ;}Student *StudentMassage::FindId(char *id) {Student *p ;for(p = Head ; p->next != End ; p = p->next) if(!strcmp(p->next->id , id))return p ;return NULL ;}StudentMassage::StudentMassage() //构造函数{Head = new Student ;Head->next = new Student ;End = Head->next ;in.open("sort.txt") ;if(!in)cout<<"\n\t\t这是一个新系统,无学生信息,请先输入。
"<<endl ;else{while(!in.eof()){End->ReadFile(in) ;if(End->name[0]=='\0')break ;End->next = new Student ;End = End->next ;}in.close() ;cout<<"\n\t\t读取学生信息成功!"<<endl ;}}StudentMassage::~StudentMassage() //析构函数{Student *temp ;save() ;for(temp ; Head->next != End ; ){temp = Head->next ;Head -> next = Head ->next->next ;delete temp ;}delete Head , End ;}void StudentMassage::ShowMenu() //显示菜单{cout<<"\n\n\t\t\t\t 主菜单"<<endl<<endl<<endl ;cout<<"\t\t****************************************"<<endl<<endl ;cout<<"\t\t1、增加学生信息 2、删除学生信息"<<endl<<endl ;cout<<"\t\t3、修改学生信息 4、显示学生信息"<<endl<<endl ;cout<<"\t\t5、信息查询 6、排序"<<endl<<endl ;cout<<"\t\t7、成绩统计 0、安全退出"<<endl<<endl ;cout<<"\t\t****************************************"<<endl<<endl< <endl ;cout<<"\t\t请选择:" ;}void StudentMassage::Display() //显示学生信息{Student *p ;cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;for(p = Head->next ; p != End ; p = p->next)p->show() ;cout<<"\n\n输入任意字符,继续......" ;getch() ;}void StudentMassage::AddItem() //添加学生信息{End->input() ;End->next = new Student ;End = End->next ;cout<<"\n\t\t添加成功!"<<endl ;cout<<"\n输入任意字符,继续......" ;getch() ;}void StudentMassage::Find() //查找函数{char name[20] , id[20] ;int x ;Student *p = NULL ;cout<<"\n\t\t****************************************\n" ;cout<<"\t\t\t 1、按学生姓名查找"<<endl ;cout<<"\t\t\t 2、按学生学号查找" ;cout<<"\n\t\t****************************************\n\n\t\t请选择:" ;cin>>x ;switch(x){case 1: //按姓名查找{cout<<"\n\t\t请输入要查找的学生的姓名:" ;cin>>name ;if(p = FindItem(name)){cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;p->next->show() ;cout<<"\n请输入任意字符,继续......" ;getch() ;}else{cout<<"\t\t没有找到该姓名的学生!"<<endl<<endl ;cout<<"请输入任意字符,继续......" ;getch() ;}} break ;case 2: //按学号查找{cout<<"\n\t\t请输入要查找的学生的学号:" ;cin>>id ;if(p = FindId(id)){cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;p->next->show() ;cout<<"\n请输入任意字符,继续......" ;getch() ;}else{cout<<"\n\t\t没有找到该学号的学生!"<<endl<<endl ;cout<<"请输入任意字符,继续......" ;getch() ;}} break ;}}void StudentMassage::ModifyItem() //修改学生信息{char name[20] ;Student *p = NULL ;cout<<"\n\t\t请输入要修改的学生的姓名:" ;cin>>name ;if(p = FindItem(name)){cout<<"\n\t\t已找到该学生,请输入新的信息!"<<endl ;p->next->input() ;cout<<"\n\t\t修改成功!"<<endl ;Display() ;}else{cout<<"\n\t\t没有找到!"<<endl ;cout<<"\n输入任意字符!继续......." ;getch() ;}void StudentMassage::RemoveItem() //删除学生信息{char name[20] ;Student *p = NULL , *temp = NULL ;cout<<"\n\t\t请输入要删除的学生的姓名:" ;cin>>name ;if(p = FindItem(name)){temp = p->next ;p->next = p->next->next ;delete temp ;cout<<"\n\t\t删除成功!"<<endl ;Display() ;}else{cout<<"\t\t没有找到!"<<endl ;cout<<"输入任意字符!继续......" ;getch() ;}}int StudentMassage::ListCount() //返回记录的学生总数{Student *p ;int n = 0 ;if(!Head)return 0 ;for(p = Head->next ; p != End ; p = p->next) n ++ ;return n ;}int StudentMassage::Count() //成绩统计{Student *p ;int x , m , n ,count = 0 ;if(!Head){cout<<"\n\t\t没有资料可以统计!"<<endl ;return 0 ;cout<<"\n\t\t****************************************\n" ;cout<<"\t\t\t 1、统计数学成绩"<<endl ;cout<<"\t\t\t 2、统计语文成绩"<<endl ;cout<<"\t\t\t 3、统计英语成绩" ;cout<<"\n\t\t****************************************\n"<<endl ;cout<<"\t\t请选择:" ;cin>>x ;switch(x){case 1 :{cout<<"\n\t\t请输入分数段的起始分数和终止分数:" ;cin>>m ;cin>>n ;for(p = Head ; p != End ; p = p->next)if(p->math >=m && p->math <= n){count ++ ;if(count == 1)cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;p->show() ;}cout<<"\n\t\t数学成绩在"<<m<<"--"<<n<<"的学生共有"<<count<<"人!\n"<<endl ;cout<<"输入任意字符,继续......." ;getch() ;} ; break ;case 2:{cout<<"\n\t\t请输入分数段的起始分数和终止分数:" ;cin>>m ;cin>>n ;for(p = Head ; p != End ; p = p->next)if(p->chinese >=m && p->chinese <= n){count ++ ;if(count == 1)cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;p->show() ;}cout<<"\n\t\t语文成绩在"<<m<<"--"<<n<<"的学生共有"<<count<<"人!\n"<<endl ;cout<<"输入任意字符,继续......." ;getch() ;} ; break ;case 3:{cout<<"\n\t\t请输入分数段的起始分数和终止分数:" ;cin>>m ;cin>>n ;for(p = Head ; p != End ; p = p->next)if(p->english >=m && p->english <= n){count ++ ;if(count == 1)cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;p->show() ;}cout<<"\n\t\t英语成绩在"<<m<<"--"<<n<<"的学生共有"<<count<<"人!\n"<<endl ;cout<<"输入任意字符,继续......." ;getch() ;} ; break ;}}void StudentMassage::Swap(Student *p1 , Student *p2) //交p1,p2学生信息{Student *temp = new Student ;strcpy(temp->name , p1->name) ;strcpy(temp->id , p1->id) ;temp->math = p1->math ;temp->chinese = p1->chinese ;temp->english = p1->english ;temp->sum = p1->sum ;strcpy(p1->name , p2->name) ;strcpy(p1->id , p2->id) ;p1->math = p2->math ;p1->chinese = p2->chinese ;p1->english = p2->english ;p1->sum = p2->sum ;strcpy(p2->name , temp->name) ;strcpy(p2->id , temp->id) ;p2->math = temp->math ;p2->chinese = temp->chinese ;p2->english = temp->english ;p2->sum = temp->sum ;}void StudentMassage::Sort() //排序{Student *p = NULL , *p1 = NULL , *k = NULL ;int n = StudentMassage::ListCount() , x , y ;if(n < 2){cout<<"数据较少,无法排序!"<<endl ;return ;}cout<<"\n\t\t**************************************\n" ;cout<<"\t\t\t 1、按数学成绩排序"<<endl ;cout<<"\t\t\t 2、按语文成绩排序"<<endl ;cout<<"\t\t\t 3、按英语成绩排序"<<endl ;cout<<"\t\t\t 4、按总分排序" ;cout<<"\n\t\t**************************************\n\n\t请选择:" ;cin>>x ;switch(x){case 1:{cout<<"\n\t\t**************************************\n" ;cout<<"\t\t\t 1、按降序排序\n\t\t\t 2、按升序排序" ;cout<<"\n\t\t**************************************\n\n\t 请选择:" ;cin>>y ;if(y == 1){for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->math < k->math)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}else{for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->math > k->math)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}} ; break ;case 2:{cout<<"\n\t\t**************************************\n" ;cout<<"\t\t\t 1、按降序排序\n\t\t\t 2、按升序排序" ;cout<<"\n\t\t**************************************\n\n\t 请选择:" ;cin>>y ;if(y == 1){for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->chinese < k->chinese)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}else{for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->chinese > k->chinese)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}} ; break ;case 3:{cout<<"\n\t\t**************************************\n" ;cout<<"\t\t\t 1、按降序排序\n\t\t\t 2、按升序排序" ;cout<<"\n\t\t**************************************\n\n\t 请选择:" ;cin>>y ;if(y == 1){for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->english < k->english)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}else{for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->english > k->english)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}} ; break ;case 4:{cout<<"\n\t\t**************************************\n" ;cout<<"\t\t\t 1、按降序排序\n\t\t\t 2、按升序排序" ;cout<<"\n\t\t**************************************\n\n\t 请选择:" ;cin>>y ;if(y == 1){for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->sum < k->sum)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}else{for(p = Head->next ; p != End ; p = p->next)for(k = p->next ; k != End ; k = k->next){if(p->sum > k->sum)StudentMassage::Swap(p , k) ;}cout<<"\n\t\t排序完成!"<<endl ;StudentMassage::Display() ;getch() ;}} ; break ;}}void StudentMassage::save() //存入文件{out.open("sort.txt");for(Student *p=Head->next;p!=End;p=p->next)out<<p->name<<"\t"<<p->id<<"\t"<<p->math<<"\t"<<p->chinese<<"\t"< <p->english<<"\t"<<p->sum<<'\n';out.close();}void main(){int x ;bool quit = false ;cout<<"\n\n\n\n\n\n\n\n" ;cout<<"\t\t********************************************"<<endl ;cout<<"\t\t 欢迎使用学生成绩管理系统!"<<endl ;cout<<"\t\t********************************************"<<endl ;StudentMassage Grade ;Sleep(1000) ;while(!quit){system("cls") ;Grade.ShowMenu() ;cin>>x ;switch(x){case 0:quit = true ; break ;case 1:Grade.AddItem() ; break ;case 2:Grade.RemoveItem() ; break ;case 3:Grade.ModifyItem() ; break ;case 4:Grade.Display() ; break ;case 5:Grade.Find() ; break ;case 6:Grade.Sort() ; break ;case 7:Grade.Count() ; break ;}}}5、实验总结通过编写这个纯dos系统下的控制台程序,加深了我对如何用C++编写一个简单的应用程序的理解。