C语言学生证管理系统课程设计报告

合集下载

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

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语言中,使用函数来实现不同的功能模块。

c语言学生管理系统课程设计报告

c语言学生管理系统课程设计报告

C语言学生管理系统课程设计报告一、引言学生管理系统是一种用来管理学生信息的软件系统。

C语言学生管理系统课程设计旨在帮助学生掌握C语言的基本语法和编程能力,同时熟悉软件开发过程中的分析、设计和实现等环节。

本报告将详细介绍C语言学生管理系统的设计和实现过程。

二、需求分析为了明确系统的功能需求,在进行系统设计之前,我们需要进行需求分析。

对于一个学生管理系统,常见的功能包括学生信息录入、查找学生信息、修改学生信息和删除学生信息等。

2.1 学生信息录入学生信息录入是系统的基本功能之一。

管理员可以通过系统按照一定的格式输入学生的基本信息,包括学号、姓名、性别、年龄、班级等。

2.2 查找学生信息系统应提供根据学号或姓名快速查找学生信息的功能。

用户可以输入学号或姓名进行查询,并显示该学生的详细信息。

2.3 修改学生信息管理员可以通过系统修改学生的基本信息。

用户可以选择指定要修改的学生的学号,并对学生的姓名、班级、年龄等信息进行修改。

2.4 删除学生信息管理员可以通过系统删除指定学生的信息。

用户可以输入学号或姓名进行查询,并选择删除该学生的信息。

三、系统设计在需求分析的基础上,进行系统设计是为了明确系统的整体架构和各个模块之间的关系。

本章将对C语言学生管理系统的设计进行详细介绍。

3.1 系统架构C语言学生管理系统采用单层架构,将所有功能模块整合在一个程序中。

系统采用面向过程的设计思路,通过函数的调用和参数传递实现不同模块之间的交互。

3.2 数据结构设计系统的核心数据结构是学生信息结构体。

学生信息结构体包括学号、姓名、性别、年龄、班级等字段。

为了方便管理学生的信息,可以使用链表来存储学生信息。

链表的每个节点代表一个学生,通过指针连接起来形成一个链表。

3.3 模块设计系统的功能可以划分为若干个模块,包括学生信息录入模块、查找学生信息模块、修改学生信息模块和删除学生信息模块。

3.3.1 学生信息录入模块学生信息录入模块通过从键盘读取用户输入的信息,并将输入的信息保存到链表中。

C语言程序设计课设报告_学生证管理系统

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()函数,首先引导用户确定录入人数,之后通过循环语句判断,一次录入每个学生的学生卡信息,包括姓名,性别,学院,以及学号。

c学生管理系统课程设计报告

c学生管理系统课程设计报告

c学生管理系统课程设计报告一、课程目标知识目标:1. 理解学生管理系统的基本概念,掌握其功能模块和工作原理。

2. 学习数据库的基本操作,如创建、查询、更新和删除数据。

3. 掌握使用编程语言(如Python)结合数据库进行学生信息管理的方法。

技能目标:1. 能够独立设计并实现一个简单的学生管理系统,包括学生信息的增删改查功能。

2. 学会使用数据库存储和管理数据,提高数据处理能力。

3. 培养问题分析、解决方案设计和编程实现的能力。

情感态度价值观目标:1. 培养学生对信息技术的兴趣和爱好,提高学习积极性。

2. 培养学生的团队协作精神,学会在项目中分工合作、共同解决问题。

3. 增强学生的责任感和使命感,认识到信息技术在学生管理系统中的重要作用。

课程性质:本课程属于信息技术学科,结合数据库和编程知识,注重实践操作,培养学生的动手能力和实际应用能力。

学生特点:学生处于高年级阶段,具备一定的信息技术基础和编程能力,对实际应用项目有较高的兴趣。

教学要求:结合学生实际情况,注重理论与实践相结合,充分调动学生的主观能动性,提高学生的实际操作能力和解决问题的能力。

将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。

二、教学内容1. 学生管理系统概述- 系统需求分析- 功能模块设计2. 数据库基础知识- 数据库概念及种类- 关系型数据库(如MySQL)的基本操作3. 编程语言选择与使用- Python编程基础- Python操作数据库(如使用SQLAlchemy)4. 学生管理系统实现- 系统架构设计- 学生信息模块实现(增删改查功能)- 用户权限管理5. 系统测试与优化- 功能测试- 性能测试- 系统优化策略6. 项目实践与展示- 团队合作完成学生管理系统- 系统演示与评价教学内容安排与进度:第一周:学生管理系统概述,数据库基础知识第二周:Python编程基础,Python操作数据库第三周:学生管理系统实现(学生信息模块)第四周:用户权限管理,系统测试与优化第五周:项目实践与展示教学内容与教材关联性:本教学内容与教材中关于数据库操作、Python编程以及实际应用项目开发等内容紧密相关,确保学生在学习过程中掌握学科知识,提高实际操作能力。

学生管理系统c语言课程设计报告

学生管理系统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语言程序课设 学生证管理系统

C语言程序课设 学生证管理系统

C语言程序设计报告书学生证管理程序学号:09021106姓名:SYF2010年 5月一、题目内容的提出与描述.大学学生人数众多,学生信息量巨大。

手工管理十分艰难,且极易出错和丢失信息,并会占用大量的纸张和空间资源。

本款软件就是基于对学生证管理的需求,为学校管理方量身定做,操作容易,快速便捷,并且节约能源。

它不仅符合当今信息化社会的需求,还顺应了当代低碳环保的理念此软件可实现学生信息的录入、输出、查询、修改、统计和删除的功能,查询和统计的功能是本款软件的特色,比较方便。

另外,因为本人笔记本为windows7系统,调试时无法在中文条件下运行,所以本款软件有中英文两个版本。

(英文版为student-english)二、软件的需求分析描述1。

软件应具有的功能:(1).输入学生信息。

(2)。

输出全部学生信息。

(3)。

查询学生信息.输入单个学号以查询一个学生;输入专业以查询一专业学生;输入学院以查询一院学生。

(4).修改学生信息。

输入学生学号以修改信息。

(5)。

统计学生信息。

按性别统计男、女生人数及比例;按户籍统计本地生和外地生人数及比例;(6)。

删除学生信息。

输入学生学号以删除信息.补充:教师有特定验证码(验证码为1),输入正确则可实行以上操作。

2.题目要求:(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2)学生信息应该包含:学号、姓名、年龄、专业、所属学院、户籍所在地。

(3) 为各项操作功能设计一个菜单。

应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

三、开发工具的介绍本软件采用色开发工具为C语言。

C语言Combined Language(组合语言)的中英混合简称。

是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,且具有强大的功能.许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的.用C 语言加上一些汇编语言子程序,就更能显示 C 语言的优势了,像PC—DOS 、WORDSTAR等就是用这种方法编写的。

c语言学生管理系统课程设计报告

c语言学生管理系统课程设计报告

c语言学生管理系统课程设计报告我见过太多关于学生管理系统的课程设计报告,这仅仅只是其中之一、希望对你有所帮助。

一、题目学生管理系统的设计与实现二、设计目的和要求1.根据实际需求,实现一个学生管理系统,包括对学生的基本信息的增删改查功能以及成绩查询功能;2.使用C语言编写代码,实现学生管理系统的核心功能;3.界面友好,操作简便,用户可以通过简单的指令实现对学生信息的管理和查询;4.提供用户权限管理,确保只有具备管理员权限的用户才能进行管理操作;三、系统基本功能1.学生信息的增删改查:学生的基本信息包括学号、姓名、性别、年龄等。

管理员可以对这些信息进行增加、删除、修改和查询的操作,方便学生信息的管理;2.成绩查询功能:管理员可以根据学号查询学生的成绩,系统将返回相应的成绩信息;3.用户权限管理:系统将设置管理员账号和密码,只有拥有管理员权限的用户才能进行学生信息的管理操作。

四、系统设计思路1.确定数据结构:创建一个学生结构体,包含学号、姓名、性别、年龄和成绩等信息;2.确定主要函数:设计主菜单函数,用户可以通过选择功能选项来进行不同的操作,如增加学生信息、删除学生信息、修改学生信息、查询学生信息和查询成绩等功能;3.设计增删改查函数:通过逐步引导用户输入信息或选择操作,实现相应功能;4.设计用户权限函数:管理员通过输入正确的用户名和密码,才能登录进入管理界面,否则无法进行管理操作;5.进行函数间的调试和优化,确保代码的完整性和稳定性;6.设计简易界面:通过打印相应的信息和提示,实现用户友好的界面设计。

五、实际实现效果和展示1.用户界面友好,简单易懂,用户能够通过选择相应的功能来实现对学生信息的管理和查询。

2.数据操作准确,能够准确地增加、删除、修改和查询学生信息以及查询学生成绩。

3.用户权限管理严密,只允许管理员进行管理操作,保证了学生信息的安全性。

六、总结和展望通过本次学生管理系统的设计与实现,我深刻感受到了系统设计的重要性和挑战性。

C语言课程设计报告-学生学籍管理系统

C语言课程设计报告-学生学籍管理系统

信息学院课程设计I报告课程名称C语言程序设计_____ 题目名称学生学籍管理系统学生学院一信息学院______专业班级_ 计科12 _________ 学号___________________________ 学生姓名________________________指导教师______________________2013 年 12 月 26 日目录一、设计目的与要求 .... 错误! 未定义书签题目与设计要求 ........ 错误! 未定义书签本程序设计的知识点 ..... 错误! 未定义书签二、功能设计 .......... 错误! 未定义书签总体设计 .............. 错误! 未定义书签详细设计 .............. 错误! 未定义书签测试结果及分析 ........ 错误! 未定义书签五、总结 .............. 错误! 未定义书签六、参考文献错误! 未定义书签........................设计目的与要求题目与设计要求题目:学生学籍管理系统目的: 1、了解和熟悉 Visual C++ 软件编程开发环境2、熟练掌握结构化程序设计的步骤和模块化设计方法3、熟练掌握C语言数据类型,熟记字符型数据和整形数据的定义和使用4、熟练掌握用 while语句、do…while语句和for语句实现循环结构程序设计的方法5、掌握一维数组、二维数组的定义、赋值和输入输出的方法6、掌握与数组有关的算法(特别是排序算法,熟练掌握冒泡排序法)7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握函数的调用方法8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用设计要求:学生学籍信息管理系统设计删除1需求分析学生基本信息、学生成绩基本信息要存入文件当中,因而 要提供文件的输入输出操作;查询功能要求提供查找和显示操 作;删除功能要求实现删除操作;排序功能要求实现排序操作; 另外还应该提供键盘式选择菜单以实现功能选择。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

红河学院工学院课程设计报告专业:年级:姓名:成绩:批改时间:红河学院工学院编制说明1、本报告供学生课程设计时使用。

2、学生应认真阅读课程设计要求。

3、课程设计报告里面的内容要手工填写,以备存档使用(源程序可打印)。

4、课程设计的总评成绩根据课程的性质,按一定比例计入该门课程成绩。

5、课程设计报告中的各模块填写的内容是评分的主要依据,如果不够书写,可以自行添加附页。

6、按规定的时间提交报告给教师评定成绩,由任课教师交到工学院存档。

课程设计目录课程名称:高级语言程序设计设计任务二.设计流程图根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子函数;系统功能模块图如下所示:1.主函数模块2.添加模块3.修改模块4.浏览模块开始(fpr=fopen("StuInfo.txt","r"))==NULL读取文件输入学号根据提示输入新信息(fpw=fopen("StuInfo.txt","w"))==NULL保存数据主菜单是否存在该学号的记录否是否是否是5.查询模块6.统计模块7.删出模块三.程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 100struct Class //班级{char Cname[20]; //班名char Cno[20]; //班号};struct Student //学生{char Sname[20]; //姓名char Sex[10]; //性别char Sno[20]; //学号int Age; //年龄struct Class CInfo; //嵌套结构体,表示班级信息}StuInfo[N];void menu(); //主菜单void add(); //添加模块void modify(); //修改模块void Delete(); //删除模块void browse(); //浏览模块void quiry(); //查询模块void stastic(); //统计模块void bySname(); //按姓名查询,子模块void bySno(); //按学号查询,子模块void byCno(); //按班号查询,子模块void StuMsg(); //返回全体学生统计信息,子模块void Female(); //女生统计信息,子模块void Male(); //男生统计信息,子模块int FemaleNum(); //返回女生人数,子函数float FemaleMG(); //返回女生平均年龄,子函数int MaleNum(); //返回男生人数,子函数float MaleMG(); //返回男生平均年龄,子函数int StuNum(); //返回全体学生人数,子函数float MG(); //返回全体学生的平均年龄,子函数void main(){menu();getchar();}void menu() //菜单{int chose;int right;do{system("cls"); //清屏printf("\n\t\t\t\t学生证管理系统\n");printf("········································");printf(" 菜单:\t1-添加\t2-修改\t3-浏览全部\t4-查询\t5-统计\t6-删除\t7-退出\n");printf("········································");printf("请输入数字选择:");scanf("%d",&chose);if(chose<1||chose>7){printf("输入错误,请重新输入!\n");right=1;getchar();}else right=0;}while(right==1);switch(chose){case 1:add(); break;case 2:modify(); break;case 3:browse(); break;case 4:quiry(); break;case 5:stastic(); break;case 6:Delete(); break;case 7:exit(0);}}void add() //添加学生信息,一次添加一条记录{int num;int i;int age;char sno[20];char sex[20];char cno[20];int right;FILE*fp;if((fp=fopen("StuInfo.txt","r+"))==NULL) //以读写方式打开{if((fp=fopen("StuInfo.txt","w"))==NULL) //文件不存在则创建文件{printf("\n文件不存在且创建失败,返回!\n");menu();}printf("\n请按照提示输入学生信息:\n\n");printf("姓名:");scanf("%s",&StuInfo[0].Sname);do{printf("\n性别(男或女):");scanf("%s",sex);if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0)) {printf("输入错误,请输入男或女!\n");right=1;getchar();}else right=0;}while(right==1);strcpy(StuInfo[0].Sex,sex);do{printf("\n学号(11位):");scanf("%s",sno);if(strlen(sno)!=11){printf("输入错误,学号长度应为11位数!\n");right=1;getchar();}else right=0;}while(right==1);strcpy(StuInfo[0].Sno,sno);do{printf("\n年龄:");scanf("%d",&age);if(age<=0||age>100){printf("年龄应在0-100之间,请重新输入年龄!\n");right=1;getchar();}else right=0;}while(right==1);StuInfo[0].Age=age;do{printf("\n班号(6位):");scanf("%s",cno);if(strlen(cno)!=6){printf("输入错误,班号长度应为6位数!\n");right=1;getchar();else right=0;}while(right==1);strcpy(StuInfo[0]o,cno);printf("\n班名:");scanf("%s",&StuInfo[0]ame);fprintf(fp,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[0].Sname,StuInfo[0].Sex,StuInfo[0].Sno,StuInfo[ 0].Age,StuInfo[0]o,StuInfo[0]ame);fclose(fp);printf("\n保存成功!\n");printf("\n请按enter键返回主菜单!\n");getchar();getchar();menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}num=i;if(num==N){printf("\n保存记录数超出结构体数组数的大小,请先修改N的值\n");menu();}printf("\n请按照提示输入学生信息:\n\n");printf("姓名:");scanf("%s",&StuInfo[num].Sname);do{printf("\n性别(男或女):");scanf("%s",sex);if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0)){printf("输入错误,请输入男或女!\n");right=1;getchar();}else right=0;}while(right==1);strcpy(StuInfo[num].Sex,sex);{printf("\n学号(11位):");scanf("%s",sno);if(strlen(sno)!=11){printf("输入错误,学号长度应为11位数!\n");right=1;getchar();}else right=0;for(i=0;i<num;i++){if(strcmp(sno,StuInfo[i].Sno)==0){printf("该学号已经存在,请重新输入!\n");right=1;getchar();}}}while(right==1);strcpy(StuInfo[num].Sno,sno);do{printf("\n年龄:");scanf("%d",&age);if(age<=0||age>100){printf("年龄应在0-100之间,请重新输入年龄!\n");right=1;getchar();}else right=0;}while(right==1);StuInfo[num].Age=age;do{printf("\n班号(6位):");scanf("%s",cno);if(strlen(cno)!=6){printf("输入错误,班号长度应为6位数!\n");right=1;getchar();else right=0;}while(right==1);strcpy(StuInfo[num]o,cno);printf("\n班名:");scanf("%s",&StuInfo[num]ame);//把该记录写到文件末尾fprintf(fp,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[num].Sname,StuInfo[num].Sex,StuInfo[num].Sno ,StuInfo[num].Age,StuInfo[num]o,StuInfo[num]ame);fclose(fp);printf("\n保存成功!\n");printf("\n请按enter键返回主菜单!\n");getchar();getchar();menu();}void modify() //修改学生信息{int num;int i;int right;int age;char sex[20];char cno[20];char sno[20];int found=-1;char StuNO[20];FILE*fpr,*fpw;if((fpr=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fpr);i++) //读取文件{fscanf(fpr,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i]. Age,&StuInfo[i]o,&StuInfo[i]ame);}num=i;fclose(fpr);printf("\n请输入学号选择要修改的记录:");scanf("%s",StuNO);for(i=0;i<num;i++){if(strcmp(StuNO,StuInfo[i].Sno)==0){found=i;printf("\n你要修改的学生信息为:\n\n");printf("姓名性别学号年龄班号班名\n");printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age ,StuInfo[i]o,StuInfo[i]ame);printf("\n请按照提示输入学生的新信息:\n");printf("姓名:");scanf("%s",&StuInfo[found].Sname);do{printf("\n性别(男或女):");scanf("%s",sex);if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0)){printf("输入错误,请输入男或女!\n");right=1;getchar();}else right=0;}while(right==1);strcpy(StuInfo[found].Sex,sex);do{printf("\n学号(11位):");scanf("%s",sno);if(strlen(sno)!=11){printf("输入错误,学号长度应为11位数!\n");right=1;getchar();}else right=0;for(i=0;i<num;i++){if((i!=found)&&(strcmp(sno,StuInfo[i].Sno)==0)){printf("该学号已经存在,请重新输入!\n");right=1;getchar();}}}while(right==1);strcpy(StuInfo[found].Sno,sno);do{printf("\n年龄:");scanf("%d",&age);if(age<=0||age>100){printf("年龄应在0-100之间,请重新输入年龄!\n");right=1;getchar();}else right=0;}while(right==1);StuInfo[found].Age=age;do{printf("\n班号(6位):");scanf("%s",cno);if(strlen(cno)!=6){printf("输入错误,班号长度应为6位数!\n");right=1;getchar();}else right=0;}while(right==1);strcpy(StuInfo[found]o,cno);printf("\n班名:");scanf("%s",&StuInfo[found]ame);if((fpw=fopen("StuInfo.txt","w"))==NULL){printf("文件打不开,保存失败!\n");menu();}for(i=0;i<num;i++) //保存文件{fprintf(fpw,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i ].Age,StuInfo[i]o,StuInfo[i]ame);}fclose(fpw);printf("\n修改成功!\n");printf("\n请按enter键返回主菜单!\n");getchar();getchar();menu();}}if(found<0){printf("\n没有找到该学号的记录:\n");printf("\n请按enter键返回主菜单!\n");getchar();getchar();menu();}}void browse() //显示所有学生信息{int num;int i;FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}fclose(fp);num=i;printf("\n已添加%d个学生信息\n\n",num);printf("姓名性别学号年龄班号班名\n");for(i=0;i<num;i++) //输出{printf("%s %s %s %d %s %s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,St uInfo[i].Age,StuInfo[i]o,StuInfo[i]ame);}printf("\n请按enter键返回主菜单!\n");getchar();getchar();menu();}void quiry(){int chose;int right;do{system("cls");printf("\n\t1-按学号查询\t2-按姓名查询\t3-某班学生信息\t4-返回\n");printf("\n请输入数字选择:");scanf("%d",&chose);if(chose<1||chose>4){right=1;getchar();}else right=0;}while(right==1);switch(chose){case 1:bySno();break;case 2:bySname();break;case 3:byCno();break;case 4:menu();}}void bySno(){int found=-1;int num;int i;char no[20];FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}num=i;fclose(fp);printf("\n请输入学生学号:");scanf("%s",no);for(i=0;i<num;i++){if(strcmp(no,StuInfo[i].Sno)==0){found=i;printf("\n该学生的信息为:\n\n");printf("姓名性别学号年龄班号班名\n");printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sn o,StuInfo[found].Age,StuInfo[found]o,StuInfo[found]ame);}}if(found<0)printf("\n没有找到该班号的记录!\n");printf("\n请按enter键返回上级菜单!\n");getchar();getchar();quiry();}void bySname(){int found=-1;int num;int i;char name[20];FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i]o,&StuInfo[i]ame);}num=i;fclose(fp);printf("\n请输入学生姓名:");scanf("%s",name);printf("\n叫该姓名的学生信息为:\n\n");printf("姓名性别学号年龄班号班名\n");for(i=0;i<num;i++){if(strcmp(name,StuInfo[i].Sname)==0){found=i;printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sn o,StuInfo[found].Age,StuInfo[found]o,StuInfo[found]ame);}}if(found<0)printf("\n没有找到该班号的记录!\n");printf("\n请按enter键返回上级菜单!\n");getchar();getchar();quiry();}void byCno(){int found=-1;int num;int i;char ClaNO[20];FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}num=i;fclose(fp);printf("\n请输入班号:");scanf("%s",ClaNO);printf("\n该班级的学生信息为:\n\n");printf("姓名性别学号年龄班号班名\n");for(i=0;i<num;i++){if(strcmp(ClaNO,StuInfo[i]o)==0){found=i;printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sn o,StuInfo[found].Age,StuInfo[found]o,StuInfo[found]ame);}}if(found<0)printf("\n没有找到该班号的记录!\n");printf("\n请按enter键返回上级菜单!\n");getchar();getchar();quiry();}void stastic(){int chose;int right;do{system("cls");printf("\n\t1-全体男生\t2-全体女生\t3-全体学生\t4-返回\n");printf("\n请输入数字选择:");scanf("%d",&chose);if(chose<1||chose>4){right=1;getchar();}else right=0;}while(right==1);switch(chose){case 1:Male();printf("\n请按enter键返回上级菜单!\n");getchar();getchar();stastic();break;case 2:Female();printf("\n请按enter键返回上级菜单!\n");getchar();getchar();stastic();break;case 3:StuMsg();printf("\n请按enter键返回上级菜单!\n");getchar();getchar();stastic();break;case 4:menu();}}void Male() //男生基本统计信息{int num;float mg;num=MaleNum();mg=MaleMG();printf("\n男生总人数为:%d\n平均年龄为:%f\n",num,mg); }int MaleNum() //男生人数{int num;int count=0;int i;FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}fclose(fp);num=i;for(i=0;i<num;i++){if(strcmp("男",StuInfo[i].Sex)==0){count++;}}return count;}float MaleMG() //男生平均年龄{int num;int count=0;int found;float mAge=0;int i;FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}fclose(fp);num=i;for(i=0;i<num;i++){if(strcmp("男",StuInfo[i].Sex)==0){found=i;count++;mAge+=StuInfo[i].Age;}}if(count>0){mAge/=count;}return mAge;}int FemaleNum() //女生人数{int num;int count=0;int i;FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}fclose(fp);num=i;for(i=0;i<num;i++){if(strcmp("女",StuInfo[i].Sex)==0){count++;}}return count;}void Female() //女生基本统计信息{int num;float mg;num=FemaleNum();mg=FemaleMG();printf("\n女生总人数为:%d\n平均年龄为:%f\n",num,mg);}float FemaleMG() //女生平均年龄{int num;int count=0;int found;float mAge=0;int i;FILE*fp;if((fp=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].A ge,&StuInfo[i]o,&StuInfo[i]ame);}fclose(fp);num=i;for(i=0;i<num;i++){if(strcmp("女",StuInfo[i].Sex)==0){found=i;count++;mAge+=StuInfo[i].Age;}}if(count>0){mAge/=count;}return mAge;}void StuMsg() //全体学生基本统计信息{int num;float mg;num=StuNum();mg=MG();printf("\n学生总人数为:%d\n学生平均年龄为:%f\n",num,mg);Male();Female();}int StuNum() //全体学生人数{int num;num=MaleNum()+FemaleNum();return num;}float MG() //全体学生平均年龄{float mAge;mAge=(MaleNum()*MaleMG()+FemaleNum()*FemaleMG())/(MaleNum()+FemaleNum());return mAge;}void Delete(){int num;int i;int found=-1;char StuNO[20];FILE*fpr,*fpw;if((fpr=fopen("StuInfo.txt","r"))==NULL){printf("文件打不开!\n");menu();}for(i=0;!feof(fpr);i++) //读取文件{fscanf(fpr,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i]. Age,&StuInfo[i]o,&StuInfo[i]ame);}num=i;fclose(fpr);printf("\n请输入学号选择你要删除的记录:");scanf("%s",StuNO);for(i=0;i<num;i++){if(strcmp(StuNO,StuInfo[i].Sno)==0){found=i;printf("\n你删除的学生信息为:\n\n");printf("姓名性别学号年龄班号班名\n");printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sn o,StuInfo[found].Age,StuInfo[found]o,StuInfo[found]ame);if(found<num-1){for(found;found<num-1;found++){strcpy(StuInfo[found].Sname,StuInfo[found+1].Sname);strcpy(StuInfo[found].Sex,StuInfo[found+1].Sex);strcpy(StuInfo[found].Sno,StuInfo[found+1].Sno);StuInfo[found].Age=StuInfo[found+1].Age;strcpy(StuInfo[found]o,StuInfo[found+1]o);strcpy(StuInfo[found]ame,StuInfo[found+1]ame);}}if((fpw=fopen("StuInfo.txt","w"))==NULL){printf("文件打不开!\n");menu();}for(i=0;i<num-1;i++) //保存文件{fprintf(fpw,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i ].Age,StuInfo[i]o,StuInfo[i]ame);}fclose(fpw);printf("\n修改成功!\n");printf("\n请按enter键返回主菜单!\n");getchar();getchar();menu();}}if(found<0){printf("\n没有找到该学号的记录:\n");printf("\n请按enter键返回主菜单!\n");getchar();getchar();menu();}}四.运行结果主界面五、课程设计过程问题讨论(此模块内容请手工填写)课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,C语言设计已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

相关文档
最新文档