学生证管理系统课程设计报告
c语言学生管理系统课程设计报告 (2)

C语言学生管理系统课程设计报告1. 引言学生管理系统是一项常见的计算机应用程序,广泛应用于学校、培训机构等教育机构中。
本文将介绍一个基于C语言开发的学生管理系统,该系统具有以下功能:学生信息的录入、查询、修改和删除,以及成绩信息的录入、查询、统计和排序。
2. 系统设计2.1 功能模块学生管理系统主要包括以下功能模块:•学生信息录入模块:用于录入学生的基本信息,包括学号、姓名、性别、年龄等。
•学生信息查询模块:提供根据学号或姓名查询学生信息的功能。
•学生信息修改模块:允许修改学生的各项信息。
•学生信息删除模块:提供学生信息的删除功能。
•成绩信息录入模块:用于录入学生的成绩信息,包括科目和成绩。
•成绩信息查询模块:提供根据学号或科目查询学生成绩的功能。
•成绩统计模块:对学生的成绩进行统计,包括总分和平均分。
•成绩排序模块:按照总分对学生进行排序。
2.2 数据结构学生信息和成绩信息可以使用结构体存储。
定义如下:typedef struct {char id[20]; // 学生学号char name[20]; // 学生姓名char gender[5]; // 学生性别int age; // 学生年龄} Student;typedef struct {char id[20]; // 学生学号char subject[20]; // 科目float score; // 成绩} Score;通过结构体数组来存储多个学生的信息和成绩,如下所示:Student students[MAX_STUDENT_NUM];Score scores[MAX_SCORE_NUM];2.3 系统流程学生管理系统的流程图如下所示:graph LRA[学生信息录入] --> B[学生信息查询]A --> C[学生信息修改]A --> D[学生信息删除]A --> E[成绩信息录入]A --> F[成绩信息查询]A --> G[成绩统计]A --> H[成绩排序]3. 系统实现在C语言中,使用函数来实现不同的功能模块。
学生管理系统设计报告

学生管理系统设计报告概述:学生管理系统是一种用于学校或教育机构的信息管理系统,旨在有效地管理学生的基本信息、课程信息、成绩信息等内容。
该系统提供了一种简便的方式来记录、检索和分析学生的数据,实现了学生管理的自动化和信息化。
本报告将详细介绍学生管理系统的设计过程和功能。
设计目标:1.提供学生基本信息的录入和查询功能,包括学生姓名、性别、年龄、班级等。
2.提供课程信息的录入和查询功能,包括课程名称、授课教师、学分等。
3.提供成绩录入和查询功能,包括学生的期末成绩、平时成绩等。
4.实现数据的有效存储和快速检索,保证信息的安全性和完整性。
5.提供数据统计和分析功能,如班级平均成绩、学生选修课程数量等。
6.提供用户权限管理功能,区分不同用户的操作权限。
系统结构:1.前端界面:前端界面通过图形化操作方式,向用户展示学生信息、课程信息和成绩信息,并提供相关操作按钮。
用户可以通过前端界面输入学生信息、课程信息和成绩信息,并进行查询、修改等操作。
2.后端逻辑:后端逻辑是系统的核心部分,负责处理用户的请求并与数据库进行交互。
后端逻辑将用户输入的数据进行处理和验证,然后将数据写入数据库或从数据库中读取数据。
它还提供了数据统计和分析功能,并根据用户的权限来控制操作的许可。
3.数据库:数据库是存储学生信息、课程信息和成绩信息的地方。
通过合理的数据库设计,可以实现数据的高效存储和快速检索。
数据库还应具备一定的安全性和完整性,通过设定访问权限和使用事务等技术手段来保护数据。
功能实现:根据设计目标,学生管理系统需要实现以下功能:1.学生信息录入与查询:管理员可以录入学生的基本信息,包括姓名、性别、年龄、班级等,并可以根据学生的姓名、班级等条件进行查询。
2.课程信息录入与查询:管理员可以录入课程的基本信息,包括课程名称、授课教师、学分等,并可以根据课程的名称、教师等条件进行查询。
3.成绩录入与查询:教师可以录入学生的成绩信息,包括期末成绩、平时成绩等,并可以根据学生的姓名、课程等条件进行查询。
学生管理系统设计报告

学生管理系统设计报告一、引言学生管理系统是一种用于帮助学校或教育机构管理学生信息和相关事务的软件系统。
该系统的设计旨在提高学校的管理效率,促进教育教学的发展。
本报告对学生管理系统的设计进行详细分析和讨论,旨在为学校提供一个高效、简便和可靠的学生信息管理方案。
二、需求分析为了满足学校对学生管理的需求,我们对学生管理系统的功能进行了分析和规划。
学生管理系统应具备以下功能:1. 学生信息管理:学生信息包括学号、姓名、性别、年龄、班级、联系方式等,系统应具备学生信息的录入、查询、修改和删除功能。
2. 课程管理:包括课程信息的录入、查询、修改和删除,以及课程与学生之间的关联。
3. 成绩管理:系统应能够记录学生的各门课程成绩,并提供成绩查询和统计功能。
4. 学生考勤管理:系统应能够记录学生的出勤情况,并提供相应的查询和统计功能。
5. 班级管理:包括班级信息的录入、查询、修改和删除,以及班级与学生之间的关联。
6. 学生成绩报告:系统应能够生成学生课程成绩单、综合成绩报告等相关报告,以便学校和教师及时了解学生的学习情况。
7. 系统安全管理:系统应具备用户管理和权限控制功能,保证学生信息的安全性和机密性。
三、系统设计基于以上需求分析,我们设计了如下的学生管理系统:1. 系统结构学生管理系统采用客户端-服务器架构,后端数据库存储学生信息、课程信息、成绩记录等数据,客户端提供用户界面和操作交互。
2. 数据库设计(这里省略具体的数据库结构设计)3. 用户界面设计系统的用户界面应简洁、直观,操作友好。
我们采用了响应式设计,以适应不同屏幕尺寸的设备,如电脑、平板和手机。
四、系统实现为了实现学生管理系统,我们选择使用XXX技术栈进行开发。
具体的开发流程包括:1. 系统需求分析和概要设计根据学校的具体需求,我们进行了系统需求分析和概要设计,明确系统的功能和架构。
2. 数据库搭建和数据模型设计根据需求分析,我们设计了相应的数据库表结构,并根据需要进行索引和关联关系的设计。
python学生管理系统课程设计报告

Python学生管理系统课程设计报告1. 引言学生管理系统是一种用于学校、教育机构或培训中心等教育场景的信息管理工具。
本文将介绍一个基于Python的学生管理系统的设计与实现。
该系统旨在简化学生信息管理的过程,提高学校教务工作的效率和准确性。
2. 设计目标本学生管理系统的设计目标如下: - 实现学生信息的录入、修改和删除功能; - 提供课程管理功能,包括课程录入和成绩管理; - 支持学生信息和课程信息的查询和统计; - 提供用户登录和权限管理功能。
3. 功能设计3.1 学生信息管理学生信息管理是系统的核心功能之一,包括学生信息的录入、修改和删除操作。
学生信息包括学号、姓名、性别、出生日期、班级等基本信息。
3.2 课程管理课程管理功能包括课程的录入和成绩管理。
课程信息包括课程代码、课程名称和授课教师等基本信息。
成绩管理功能允许教师录入学生的课程成绩。
3.3 信息查询与统计学生管理系统提供学生信息和课程信息的查询功能,用户可以根据学号、姓名或课程代码进行查询。
此外,系统还提供了学生信息和课程信息的统计功能,如统计某个班级的学生人数,或计算某门课程的平均成绩等。
3.4 登录和权限管理学生管理系统允许用户通过登录身份验证功能进入系统。
不同用户具有不同的权限,例如学生只能查询自己的信息,而教师可以进行成绩录入和修改等操作。
4. 系统架构学生管理系统采用三层架构,包括数据层、业务逻辑层和用户界面层。
4.1 数据层数据层负责与数据库进行交互,包括对学生信息和课程信息进行增删改查操作。
可以使用SQL语言或ORM(对象关系映射)框架进行数据操作。
4.2 业务逻辑层业务逻辑层负责处理系统的业务逻辑,包括学生信息管理、课程管理、成绩管理、信息查询与统计等功能的实现。
业务逻辑层将接收用户界面层的请求并调用数据层的接口进行数据操作。
4.3 用户界面层用户界面层是用户与系统交互的界面,可以通过命令行界面(CLI)或图形界面(GUI)来实现。
C语言程序设计课设报告_学生证管理系统

学生证管理程序报告学号:姓名:完成日期:2012年5 月一.题目内容的提出与描述学生证的有效管理是学校的重要工作,这项工作的工作重点是需要学校建立一个简明高效,便于操作和处理信息的学生证管理系统。
这样,学校就可以从全局上掌控、修改、统计学生信息,为学生管理工作提供极大的便利,本程序的目的旨在于管理大量学生的学生证信息,大大提高学校和教师的工作效率。
本程序的具体功能包括:1)通过键盘输入某位学生的学生证信息。
2) 给定学号,显示某位学生的学生证信息。
3) 给定某个班级的班号,显示该班所有学生的学生证信息。
4) 给定某位学生的学号,修改该学生的学生证信息。
5) 给定某位学生的学号,删除该学生的学生证信息。
6) 提供一些统计各类信息的功能。
二.软件的需求分析描述本软件要实现对学生证信息的有序程序化管理,操作人员可以输入学生的学生证信息并存储,修改学生证信息,删除学生证信息,并通过不同方式查找到学生,从而简化学生证的管理工作,方便进行相关操作。
本软件要达到的性能,存储至少100位同学的学生证信息,并可以查找指定学生的学生证信息,修改,删除指定学生的学生证信息,可输出已存储的全部学生的相关信息。
三. 开发工具的介绍—C语言的优点1)简洁紧凑、灵活方便。
2)运算符丰富。
3)数据类型丰富。
4)C是结构式语言。
5)语法限制不太严格,程序设计自由度大。
6)允许直接访问物理地址,对硬件进行操作。
7)生成目标代码质量高,程序执行效率高。
8)适用范围大,可移植性好。
四.软件的总体设计和详细设计1.软件的总体设计部分画出结构图。
2.软件的详细设计部分画出流程图,并写出个函数之间参数的定义和传递方式、输入数据类型、格式和内容限制。
①Main函数函数从主函数开始运行,首先进行选择要操作的函数,引导用户执行操作。
而后通过全局变量在进行具体操作②Setup函数用户选择执行Setup()函数,首先引导用户确定录入人数,之后通过循环语句判断,一次录入每个学生的学生卡信息,包括姓名,性别,学院,以及学号。
学生管理系统课程设计报告

学生管理系统课程设计报告一、概述学生管理系统是一个用于实现对学生信息管理的一个系统,该系统包括学生信息的增加、修改、删除、查询、统计等功能。
该系统主要功能为便捷的记录学生的个人信息,包括学生姓名、学号、性别、出生日期、联系方式、住址、班级、专业、成绩等;方便地对学生信息进行管理,以方便教师和学校管理者进行相关决策。
二、需求分析该系统的主要功能需求如下:1、学生信息管理:该系统将记录每个学生的个人信息,包括但不限于姓名、学号、性别、出生日期、联系方式、住址、班级、专业、成绩等。
2、学生信息查询:用户可以通过学生姓名、学号等信息快速检索和查找学生信息。
3、学生信息统计:该系统能够统计每个班级、专业或整个学校的学生人数、男女比例、平均分等数据。
4、用户管理:该系统还将包括对用户的身份验证、用户的添加、修改和删除。
5、安全性:该系统需要确保数据安全,只有经过身份验证的用户方可进行敏感操作。
三、系统设计1、架构设计:该系统的架构设计采用三层结构,即表示层、业务逻辑层和数据访问层。
其中表示层主要负责用户界面的展示和数据的呈现;业务逻辑层则负责系统的业务逻辑设计和实现,包括对用户的身份认证、数据库的访问等;数据访问层负责数据和文件的访问,进行数据库的增删改查等操作。
2、具体模块设计:(1)用户认证模块:在系统运行时,需要对用户进行身份认证,只有认证通过后,才能使用系统。
(2)用户管理模块:该模块负责对用户的添加、删除和修改等操作。
(3)学生信息管理模块:该模块包括学生信息的添加、修改、删除和查询等功能。
同时,还包括对学生信息的导入和导出功能,方便用户存储和备份信息。
(4)学生信息统计模块:该模块主要负责对学生信息进行统计,包括不同年级、班级、专业的学生人数、男女比例和平均分等数据。
(5)系统设置模块:该模块负责系统日志的管理和系统参数的设置,可以方便地对系统进行优化和调试。
(6)界面设计:系统的界面设计需要清晰、实用、方便用户使用。
学生管理系统c语言课程设计报告

学生管理系统c语言课程设计报告1. 引言学生管理系统是现代教学管理中不可或缺的工具。
本报告将详细介绍一个基于C语言的学生管理系统的设计与实现。
学生管理系统用于记录学生信息、成绩管理、考勤管理、课程管理等功能,能够提高教学管理的效率和准确性。
2. 系统设计2.1 需求分析学生管理系统的主要功能包括: 1. 学生信息管理:添加、删除、修改学生的基本信息,如学号、姓名、年龄、性别等。
2. 成绩管理:录入学生的成绩,计算平均成绩。
3. 考勤管理:记录学生的考勤情况,统计缺勤次数。
4. 课程管理:添加、删除、修改课程信息,如课程编号、课程名称、教师姓名等。
2.2 系统架构学生管理系统采用模块化设计,分为四个模块: 1. 学生信息模块:实现学生信息的添加、删除、修改功能。
2. 成绩管理模块:实现成绩录入和平均成绩计算功能。
3. 考勤管理模块:实现考勤记录和缺勤次数统计功能。
4. 课程管理模块:实现课程信息的添加、删除、修改功能。
2.3 系统流程图st=>start: 开始op1=>operation: 添加学生信息op2=>operation: 删除学生信息op3=>operation: 修改学生信息op4=>operation: 成绩录入op5=>operation: 平均成绩计算op6=>operation: 考勤记录op7=>operation: 缺勤次数统计op8=>operation: 添加课程信息op9=>operation: 删除课程信息op10=>operation: 修改课程信息e=>end: 结束st->op1->op2->op3->op4->op5->op6->op7->op8->op9->op10->e 3. 功能实现3.1 学生信息管理3.1.1 添加学生信息通过输入学生的基本信息,将学生信息保存到系统中。
c语言学生证管理系统设计

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY C语言程序设计报告学院:电气与信息工程学院专业:电子信息产业题目:学生证管理系统班号:T-132316姓名:樊帅昌学号:20130231611指导教师:吴年志2014年7月2日目录C语言程序设计报告 (1)一.课程设计目的 (3)二设计要求 (3)三具体模块分析 (5)1头文件及定义结构体 (5)头文件: (5)结构体: (5)2主函数 (6)3分块设计 (6)首页面 (6)系统菜单 (7)用户选择 (7)添加模块 (8)查询模块 (12)修改模块 (15)删除模块 (19)四.测试分析 (21)五.课程设计总结 (26)六.程序源代码 (27)一.课程设计目的1.巩固和加深学生对《C语言程序设计》课程基本知识的理解和掌握。
2.掌握C语言编程和程序调试的基本技能。
3.掌握书写程序设计说明文档的能力。
4.提高学生分析问题和解决问题的能力,培养严谨的工作作风和良好的程序设计习惯,为后续课程的学习打下良好的基础。
二设计要求题目:学生证管理程序题目描述:请设计一个学生证管理的程序,以方便辅导员对学生证的管理,该程序应该具有以下功能:(1)能从键盘输入某位学生的学生证信息(学生证应该包含的信息可以参考自己的学生证)。
(2)给定学号,显示该学生的学生证信息。
(3)给定班号,显示该班所有学生的学生证信息。
(4)给定学号,修改该学生的学生证信息。
(5)给定学号,删除该学生的学生证信息。
题目要求:(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序.(2)学生证应该包含的信息参考自己的学生证.(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目.输入要求:(1)应用程序运行后在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息.程序根据用户输入的信息完成相应的处理,实现要求的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计实验报告课程设计题目:学生证管理系统姓名:学号:班级:专业:指导教师:2014年 1 月 2 日学生证管理系统课程设计报告1.需求分析。
根据学生证管理的需要,建一个“学生证管理系统”,以方便对学生证信息的各项管理操作。
要求完成:1.能对学生证信息进行录入和修改2.能按照学号和班级号显示学生证信息和更改、删除信息。
2.总体设计。
根据以上分析,本系统主要包括:从键盘输入学生证信息、从指定的文件中读入学生证信息、按照学号和班号查询学生证信息、删除和修改学生证信息。
(1)主函数main():定义学生结构体数组,输出操作对话框,调用录入、查询、删除、输出等函数对学生证信息进行处理。
(2)录入函数enter():从键盘输入学生证信息。
(3)录入函数load():从文件输入学生证信息。
(4)查询函数search():按学号查找记录信息。
(5)查询函数display():按班级查找记录信息。
(6)删除函数del():删除指定学号的学生记录。
(7)修改函数modify():按照指定学号修改记录。
程序功能图如下:3.详细设计。
本功能一共有16个函数,其中一个主函数,15个功能模块,每个功能模块都是由于主函数或其他功能模块调用,分别说明如下:图1.2 主程序流程图(2)键盘输入函数。
键盘输入函数主要完成学生信息从屏幕输入数据,并将数据保存到文本文件中,以备后用。
流程图:Y(3)文件输入函数。
文件输入函数主要完成学生信息从文件中读入数据。
Y(4)学号查询函数。
学号查询函数是完成由用户输入需要查询的学号,在现有学生信息中查询是否有此学生信息存在,查到输出学生全部信息,没查到则输出“此学生部存在”信息。
流程图如下:图1.5 学号查询流程图班级查询函数是完成由用户输入需要查询的班级,在现有学生信息中查询此班级的全部学生信息,查到输出全部信息,没差到则输出“此班级学生不存在”信息。
学号删除函数是完成由用户输入需要删除的学号,在现有学生信息中查询是否有该学生信息存在,查到则删除此学生全部信息,没查到则输出“此学生不存在”信息。
程序流程图如下:(7)修改函数。
修改函数主要是完成根据学号查找到学生信息,输出学生信息,然后修改学生信息。
程序流程如下:图1.7 学号修改流程图4.测试结果。
(1)程序运行主菜单1.9 主菜单界面(2)从文件输入并显示结果(3)按学号查找。
(4)修改测试。
(5)按班号浏览。
(6)统计班级的人数。
(7)删除功能测试。
5.软件操作使用说明书。
本软件采用命令行对话方式进行操作,运行后出现主界面如图1.9所示,然后按菜单提示操作即可。
6.总结。
通过本次课程设计练习,我们学会了科学分析问题解决问题的方法,从问题分析下手,然后进行模块设计,详细设计,再进行代码编写和测试。
在调试程序过程中,学会了分模块进行,避免了以前那种将程序全部功能都放在main()函数中完成的弊病,使得调试过程更加顺利。
另外通过本次练习,在前面学习过程中碰到的诸如结构体使用.指针使用.函数之间参数传递等难点问题也迎刃而解了。
源代码://student.h#include <stdio.h> //I/O函数#include <stdlib.h> //标准库函数#include <string.h> //字符串函数#include <ctype.h> //字符操作函数#define M 50 //定义常数表示记录数typedef struct //定义数据结构{char no[20]; //学号char name[20]; //char sex[5]; //性别char classes[20]; //班号char subject[20]; //学院专业}STUDENTS;//以下是函数原型#include"stufun.h"//student.cpp//菜单函数,函数返回值为整数,代表所选的菜单项 ................................int menu_select(){char s[80];int c;printf("******************************主菜单*********************\n");printf("* 0. 输入学生证信息记录*\n");printf("* 1. 浏览学生证信息记录*\n");printf("* 2. 按学号查找*\n");printf("* 3. 按学号删除*\n");printf("* 4. 按学号修改*\n");printf("* 5. 插入学生记录*\n");printf("* 6. 保存记录到文件*\n");printf("* 7. 加载文件到存*\n");printf("* 8. 按班号浏览*\n");printf("* 9.统计班级人数*\n");printf("* 10.程序退出*\n");printf("*********************************************************\n");do{printf("\n 输入您的菜单选项编号(0-10):"); //提示输入选项scanf("%s",s); //输入选择项c=atoi(s); //将输入的字符串转化为整型数getchar();}while(c<0||c>10); //选择项不在0~10之间重输return c;//返回选择项,主程序根据该数调用相应的函数}//输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度 .......................int enter(STUDENTS t[]){int i,n;system("cls");printf("\n请输入学生记录条数:\n");scanf("%d",&n); //输入记录数printf("请输入学生记录:\n");printf("学号性别班号学院专业\n");printf("------------------------------------------------------------------------\n");for (i=0;i<n;i++){scanf("%s",t[i].no); //输入学号scanf("%s",t[i].name); //输入scanf("%s",t[i].sex); //输入性别scanf("%s",t[i].classes); //输入班号scanf("%s",t[i].subject); //学院专业}getchar();return n; //返回记录条数}//显示记录,参数为记录数组和记录条数 .........................void list(STUDENTS t[],int n){int i;system("cls");printf("\n********************学生清单************************\n");printf("学号性别班号学院专业\n");printf("------------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%-20s%-20s%-10s%-10s%-10s\n",t[i].no,t[i].name,t[i].sex,t[i].classe s,t[i].subject);if((i+1)%10==0&&n%10>0) //判断输出是否达到10条记录{printf("------------------------------------------------------------------------\n");printf("每页显示10条学生记录,按回车键向后翻页...\n");getchar();system("cls");printf("\n********************学生清单************************\n");printf("学号性别班号学院专业\n");printf("------------------------------------------------------------------------\n");}}printf("------------------------------------------------------------------------\n");}//查找记录 ..........................void search(STUDENTS t[],int n){char s[20]; //保存待查找学号字符串int i; //保存查找到结点的序号system("cls");printf("请输入查找的学号:\n");scanf("%s",s); //输入待查找学号getchar();i=find_no(t,n,s); //调用find_no函数,得到一个整数if(i>n-1) //如果整数i值大于n-1,说明没找到printf("没有学号为%s的学生!\n",s);elseprint(t[i]); //找到,调用显示函数显示记录}//删除函数,参数为记录数组和记录条数 ...........................int del(STUDENTS t[],int n){char s[20]; //要删除记录的学号int ch=0;int i;printf("请输入要删除的学生学号:\n");scanf("%s",s); //输入学号getchar();i=find_no(t,n,s); //调用find_no函数if(i==n)printf("没有找到学号为%s的学生!\n",s);else{printf("正在删除中!\n");for(;i<n;i++) //从删除位置开始依次前移学生记录{strcpy(t[i].name,t[i+1].name);strcpy(t[i].no,t[i+1].no);strcpy(t[i].sex,t[i+1].sex);strcpy(t[i].classes,t[i+1].classes);strcpy(t[i].subject,t[i+1].subject);}n--; //删除后记录数减1printf("删除成功!\n");}return n;//返回记录数}//插入记录函数,参数为结构体数组和记录数 .................................int add(STUDENTS t[],int n){STUDENTS temp; //新插入记录信息int i,j;char s[20]; //确定插入在哪个记录之前printf("请输入要插入的学生记录:\n");printf("************************************************\n");printf("学号性别班号学院专业\n");printf("------------------------------------------------------------------------\n");scanf("%s%s%s%s%s",temp.no,,temp.sex,temp.classes,temp.subject); //输入插入信息getchar();printf("------------------------------------------------------------------------\n");if(n>0){printf("请输入插入位置的,将新记录插入在该名字前:\n");scanf("%s",s); //输入插入位置的getchar();i=find_name(t,n,s); //调用find_name,确定插入位置}elsei=0;for(j=n-1;j>=i;j--) //从最后一个结点开始向后移动一条{strcpy(t[j+1].no,t[j].no); //当前记录的学号拷贝到后一条strcpy(t[j+1].name,t[j].name); //当前记录的拷贝到后一条strcpy(t[j+1].sex,t[j].sex); //当前记录的性别拷贝到后一条strcpy(t[j+1].classes,t[j].classes); //当前记录的班号拷贝到后一条strcpy(t[j+1].subject,t[j].subject); //当前记录的学院专业拷贝到后一条}strcpy(t[i].no,temp.no); //将新插入记录的学号拷贝到第i 个位置strcpy(t[i].name,); //将新插入记录的拷贝到第i个位置strcpy(t[i].sex,temp.sex); //将新插入记录的性别拷贝到第i个位置strcpy(t[i].classes,temp.classes);strcpy(t[i].subject,temp.subject); //将新插入记录的年龄拷贝到第i个位置n++; //记录数加1return n; //返回记录数}//保存函数,参数为结构体数组和记录数 ..................................void save(STUDENTS t[],int n){int i;FILE *fp; //指向文件的指针if((fp=fopen("record.txt","wb"))==NULL) //打开文件,并判断打开是否正常{printf("无法打开学生记录文件!\n"); //打开失败exit(1); //退出}printf("\n正在保存中\n");fprintf(fp,"%d",n); //将记录数写入文件fprintf(fp,"\r\n"); //将换行符号写入文件for(i=0;i<n;i++){fprintf(fp,"%-20s%-30s%-10s%-10s%-10s",t[i].no,t[i].name,t[i].sex,t[i].clas ses,t[i].subject);//格式写入记录fprintf(fp,"\r\n"); //将换行符号写入文件}fclose(fp); //关闭文件printf("****保存成功***\n"); //显示保存成功}//读入函数,参数为结构体数组 .............................int load(STUDENTS t[]){int i,n;FILE *fp; //指向文件的指针if((fp=fopen("record.txt","rb"))==NULL) //打开文件{printf("无法打开学生记录文件!\n"); //打开失败exit(1); //退出}fscanf(fp,"%d",&n); //读入记录数for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s%10s%10s",t[i].no,t[i].name,t[i].sex,t[i].classes,t[ i].subject);//按格式读入记录fclose(fp); //关闭文件printf("已经成功加载学生记录文件到存!\n"); //显示保存成功return n; //返回记录数}//按班号显示记录函数 .................................void display(STUDENTS t[],int n){int i;char s[20];printf("请输入班号:\n");scanf("%s",s); //输入班号getchar();i=find_classes(t,n,s);if(i>n-1)printf("没有班号为%d的班级\n",s);else{printf("\n********************学生清单************************\n");printf("学号性别班号学院专业\n");printf("------------------------------------------------------------------------\n-");for(i=0;i<n;i++){if(strcmp(s,t[i].classes)==0){printf("%-20s%-20s%-10s%-10s%-10s\n",t[i].no,t[i].name,t[i].sex,t[i].classes,t[ i].subject);}}printf("------------------------------------------------------------------------\n-");}}//按班号统计人数........void classcount(STUDENTS t[],int n){int i;char s[20];printf("请输入班号:\n");scanf("%s",s); //输入班号getchar();i=find_classes(t,n,s);if(i>n-1)printf("没有班号为%d的班级\n",s);else{int j=0;for(i=0;i<n;i++)if(strcmp(s,t[i].classes)==0)j++;printf("该班一共有%d人\n",j);}}//显示指定的一条记录void print(STUDENTS temp){printf("\n****************************************************\n");printf("学号性别班号学院专业\n");printf("------------------------------------------------------------------------\n");printf("%-20s%-20s%-10s%-10s%-10s\n",temp.no,,temp.sex,temp.classe s,temp.subject);printf("------------------------------------------------------------------------\n");}//按查找函数,参数为记录数组和记录条数以及s ...................................int find_name(STUDENTS t[],int n,char *s){int i;for(i=0;i<n;i++) //记录开始,直到最后一条{if(strcmp(s,t[i].name)==0) //记录中的和待比较的是否相等return i; //相等,则返回该记录的下标号,程序提前结束}return i; //返回i值}//按班号查找函数,参数为记录数组和记录条数以及s ...................................int find_classes(STUDENTS t[],int n,char *s){int i;for(i=0;i<n;i++) //记录开始,直到最后一条{if(strcmp(s,t[i].classes)==0) //记录中的和待比较的是否相等return i; //相等,则返回该记录的下标号,程序提前结束}return i; //返回i值}//按学号查找函数,参数为记录数组和记录条数以及学号no ..........................int find_no(STUDENTS t[],int n,char *no){int i;for(i=0;i<n;i++) //从第一条记录开始,直到最后一条{if(strcmp(no,t[i].no)==0) //记录中的学号和待比较的学号是否相等return i; //相等,则返回该记录的下标号,程序提前结束}return i; //返回i值}//修改函数,按照输入学号修改void modify(STUDENTS t[],int n){char no[20]; //要修改记录的学号int ch=0;int i;printf("请输入要修改的学生学号:\n");scanf("%s",no); //输入学号getchar();i=find_no(t,n,no); //调用find_no函数if(i==n)printf("没有找到学号为%s的学生!\n",no);else{printf("学号为%s的学生修改前:\n",no);print(t[i]);printf("请输入修改后学生记录:\n");printf("学号性别班号学院专业\n");printf("------------------------------------------------------------------------\n");scanf("%s",t[i].no);scanf("%s",t[i].name);scanf("%s",t[i].sex);scanf("%s",t[i].classes);scanf("%s",t[i].subject);getchar();printf("学号为%s的学生修改后:\n",no);print(t[i]);}}//main.cpp//主函数开始void main(){STUDENTS stu[M]; //定义结构体数组int length; //保存记录长度for(;;) //无限循环{system("cls"); //清屏switch(menu_select()) //调用主菜单函数,返回值作为开关语句的条件{case 0:length=enter(stu);break; //输入记录case 1:list(stu,length);break; //显示全部记录case 2:search(stu,length);break; //按学号查找记录case 3:length=del(stu,length);break; //按学号删除记录case 4:modify(stu,length);break; //按学号修改记录case 5:length=add(stu,length);break; //插入记录case 6:save(stu,length);break; //保存文件case 7:length=load(stu);break; //加载文件到存case 8:display(stu,length);break; //按班号显示记录case 9:classcount(stu,length);break; //统计班级人数case 10:exit(0); //程序结束}printf("按回车键返回主菜单...\n"); //提示信息getchar();}return;}。