C语言班级管理系统程序
- 格式:docx
- 大小:10.60 KB
- 文档页数:9
*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");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(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。
课程设计报告课程名称C语言程序设计课题名称班级成绩管理系统专业班级学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称C语言程序设计课题班级成绩管理系统专业班级学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日目录一、引言 (1)二、总体设计 (2)三、详细设计 (4)四、问题分析及总结 (13)五、参考文献 (15)六、附件 (15)一、设计内容与设计要求1. 设计内容:班级成绩管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观;各项显示数据均要求以表格的形式输出;在各功能子模块中应设计相应的二级菜单。
2) 建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;3) 班级成绩管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)学生成绩显示:完成班级全部学生成绩的显示,显示时按表格的形式,且应有表头;(3)学生成绩追加:完成新增一个(或多个)学生的成绩记录,要求在追加过程中有相应的提示信息,完成追加后能重新计算学生平均成绩并显示;(4)学生成绩修改:要求能按学号和按姓名两种定位方式,且可以按用户要求修改记录中除学号和姓名以外的指定内容,并重新计算学生的平均成绩;(5)学生成绩信息的查询;要示系统能按学号、按姓名查询以及能查总分在某一指定范围内的学生信息,且能显示符合条件的所的记录,若所需查询的信息不存在时应有相应的提示信息。
学籍管理系统一、系统简介设计一个基于结构体数组的学生学籍管理系统,能实现对学生学籍信息进行录入,修改,删除,查询和输出等基本操作二、需求分析学籍管理系统应该实现以下功能:1、能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。
2、能根据输入的学号查询学生,进行信息的修改。
3、能根据输入的学号从结构体数组中删除学生的记录。
4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。
5、能在屏幕上以列表的方式输出所有学生的信息。
三、概要设计1、系统功能根据项目的开发要求,本系统划分成六个主要功能模块:录入学生信息模块、修改学生信息模块、删除学生信息模块、查询学生信息模块、输出模块和推出模块。
系统功能机构图如下:2、重要数据的数据结构设计学生学籍的记录项用结构体Stu message表示,包括6个属性,stuno,name、spec、grade、sex、birthday 分另U代表学生的学号、专业、年级、性另U和出生日期,其中birthday 类型为自定义的结构体类型Date.Struct stumessage {Char stuno[11]: // 学号Char name[9]: // 姓名Char spec[2]: // 专业Char grade: // 年级Char sex : // 性别Stuct date birthday: // 出生日期};日期类型date包括三个属性,分别代表年、月、日Struct date{int year : // 年Int month: //Int day: // H};3、函数设计学籍管理系统程序采用了结构化程序设计的思想,由1个.h 头文件和3个C源文件组成。
程序中除了主函数外,共设计了以下14个函数,分别包含在3个.c源文件中。
以下是这些函数原型及功能设计。
(1) void sysinfo(void)函数功能:在屏幕上输入系统及信息并等待用户响应。
学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。
本文将介绍如何使用C语言编写一个简单的学生管理系统。
功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。
我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
C语言程序设计实习报告学生信息管理系统C 语言课程设计题目:学生信息管理系统设计者:梁天江专业:机械设计制造及其自动化班级学号: 072084-31所属院系:机电学院指导教师:吴湘宁7月17日1.题目和要求:1.1问题提出与要求:学生成绩管理系统[要求]设计一个学生成绩管理系统,对在校某班学生几门课程的考试成绩进行统一管理。
每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。
(1)一个文件按以班为单位存储学生记录。
(2)将允许的操作分为六种A:插入一个新的学生记录(录入学生信息)B:修改学生记录C:删除一个学生记录D:登记成绩E:修改成绩F:浏览全班成绩(3)计算学生的总成绩(4)输出全班成绩表1.2需求分析.根据题目要求,由于学生信息是存放在文件中,因此应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.2.功能实现设计:2.1总体设计:分析系统:根据题目的需求分析,可将这个系统设计为六大模块(见下图):插入学生信息,修改,删除,登记,浏览,统计。
2.2详细设计:1、主函数主函数设计得比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;其流程图如下:[程序]void main(){int a;do{printf("\t\t\t\t\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t作者:梁天江班级:072084-31 学号: 1004528\n"); printf("\t\t\t-------------------------------------------\n\n");printf("\t 1.插入新的学生记录\n");printf("\t 2.修改学生记录\n");printf("\t 3.删除学生记录\n");printf("\t 4.显示学生成绩和总分\n");printf("\t 5.浏览全班成绩\n");printf("\t 6.退出\n\n");。
#include <stdio.h>#include <stdlib.h>#include <string.h>#define FUNC_NEW 1 /* 建立新的班级学生数据*/#define FUNC_SA VE 2 /*把数据写入文件并保存*/#define FUNC_OPEN 3 /*打开文件并从里读入数据*/#define FUNC_INSERT 4 /*插入一个学生的信息*/#define FUNC_SEARCH 5 /*查找学生的信息*/#define FUNC_CHANGE 6 /*修改学生的信息*/#define FUNC_DELETE 7 /*删除学生的信息*/#define FUNC_DISPLAY 8 /*展示学生的信息*/#define FUNC_CENSUS 9 /*分段统计学生总分人数并打印*/ #define FUNG_EXIT 10/*结束程序*/#define FUNC_CLOSE 10#define MAX_NUM 45#define MAX_NAME_STRLEN 30void DoSave();void DoOpen();void DoNew();void DoInsert();void DoDisplay();void DoDelete();void DoSearch();void DoChange();void Docensus();void DoExit();//用户定义的类型声明struct _student{int id;char name[MAX_NAME_STRLEN];int Math;int English;int Chinese;int Physics;int Chemistry;float averScore;int sum;};typedef struct _student STUD;struct _studTb{STUD stud[MAX_NUM];int length;};//全局变量的定义struct _studTb si;char strClassId[15];int main(){int iUserSelect;int MainMenu();system("color 20");for(;;){iUserSelect = MainMenu();if(FUNC_CLOSE == iUserSelect)break;switch(iUserSelect){case FUNC_NEW:DoNew();break;case FUNC_OPEN:DoSave();break;case FUNC_SA VE:DoOpen();break;case FUNC_INSERT:DoInsert();break;case FUNC_SEARCH:DoSearch();break;case FUNC_CHANGE:DoChange();break;case FUNC_DELETE:DoDelete();break;case FUNC_DISPLAY:DoDisplay();break;case FUNC_CENSUS:Docensus();break;case FUNC_CLOSE :DoExit();break;default:break;}}}int MainMenu(){int iUserSelect;system("cls");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(" | ****** 8> 展示学生信息的成绩排名****** | \n");printf(" | ****** 9> 分段统计学生信息****** | \n");printf(" | ****** 10> 退出学生系统****** | \n");printf(" | *****Please select a function id(1..9) to execute:***** | \n");printf(" --------------------------------------------------------------------- \n");scanf("%d",&iUserSelect);if(iUserSelect<1&&iUserSelect>9)printf("请正确输入指令\n");elsereturn iUserSelect;}void DoNew(){int number,i;system("cls");printf("\t\tFUNCION: 新建一个班级:\n");printf("\t\t请输入班级序号(string):");scanf("%s",strClassId);printf("\t\t请输入这个班有多少人:");scanf("%d",&number);for (i = 0; i < number; i++){printf("\t\t请输入学生学号:");scanf("%d",&si.stud[i].id);printf("\t\t请输入学生姓名:");scanf("%s",si.stud[i].name);printf("\t\t请输入学生成绩:\n");printf("\t\tMath English Chinese Physics Chemistry\n");scanf("%4d %4d %4d %4d %4d",\& si.stud[i].Math,& si.stud[i].English,& si.stud[i].Chinese,& si.stud[i].Physics,& si.stud[i].Chemistry);}si.length = number;}//保存学生信息void DoSave(){FILE *fp;int i;system("cls");if((fp=fopen("stu-list.txt","wb"))==NULL){printf("打开文件失败\n");return;}for(i=0;i<si.length;i++){if(fwrite(&si.stud[i],sizeof(si),1,fp)==1)printf("保存成功\n");}fclose(fp);}//开文件读取学生信息void DoOpen(){FILE *fp;int i=0;system("cls");if((fp=fopen("stu-list.txt","ab+"))==NULL){printf("打开文件失败\n");return;}while(!feof(fp)){if(fread(&si.stud[i],sizeof(si),1,fp)==1)i++;}fclose(fp);for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s 数学:%d 英语:%d 语文:%d 物理:%d 化学:%d\n",si.stud[i].id,si.stud[i].name,si.stud[i].Math,si.stud[i].English,si.stud[i].Chinese,si.stud[i].Physics,si.stud[i].Chemistry);}//插入学生信息void DoInsert(){FILE *fp;int j,INid,sid;int m=0,i=0,k=0;system("cls");if((fp=fopen("stu-list.txt","ab+"))==NULL){ printf("\t文件打开失败!");getchar();return;}while(!feof(fp)){if(fread(&si.stud[i],sizeof(si),1,fp)==1)m++;i++;}/*if(m==0){printf("没有学生记录!");fclose(fp);return;}*/printf("\t请输入要插入信息在那个学号之后:\n");scanf("%d",&INid);for(i=0;i<m;i++)if(INid==si.stud[i].id)break;for(j=m-1;j>i;j--)si.stud[j+1]=si.stud[j];stare1:printf("\t请输入要插入的学生的信息:\n");printf("\t请输入要插入的学号");scanf("%d",&sid);while(k<m){if(si.stud[k].id==sid){printf("\t 该学号已经存在,不允许重复插入!\n");goto stare1;}k++;}si.stud[i+1].id=sid;printf("\t请输入你想输入的姓名");scanf("%s",si.stud[i+1].name);printf(" Math English Chinese Physics Chemistry\n");scanf("%d %d %d %d %d",& si.stud[i+1].Math,& si.stud[i+1].English,& si.stud[i+1].Chinese,& si.stud[i+1].Physics,& si.stud[i+1].Chemistry);si.length=si.length+1;DoSave();}//在文件中查找学生信息,支持姓名学号查找void DoSearch(){int i=0,choice,Sid;char sname[MAX_NAME_STRLEN];int flag=0;system("cls");DoOpen();printf("\n1按姓名查找:\n2按学号查找:");scanf("%d",&choice);switch(choice){case 1: printf("请你输入要查找的姓名");scanf("%s",sname);while(i<si.length){if(strcmp(si.stud[i].name,sname)==0){flag=1;printf("学号:%d 姓名:%s 数学成绩:%d 英语成绩:%d 语文成绩:%d 物理成绩:%d 化学成绩:%d\n",si.stud[i].id,si.stud[i].name ,si.stud[i].Math,si.stud[i].English,si.stud[i].Chinese,si.stud[i].Physics,si.stud[i].Chemistry);}i++;}if(flag==0)printf("你输入的姓名不存在,请确认后再输入");break;case 2: printf("请你输入要查找的学号");scanf("%d",&Sid);while(i<si.length){if(Sid==si.stud[i].id){flag=1;printf("学号:%d 姓名:%s 数学成绩:%d 英语成绩:%d 语文成绩:%d 物理成绩:%d 化学成绩:%d\n",si.stud[i].id,si.stud[i].name ,si.stud[i].Math,si.stud[i].English,si.stud[i].Chinese,si.stud[i].Physics,si.stud[i].Chemistry);}i++;}if(flag==0)printf("你输入的学号不存在,请确认后再输入");break;}printf(" Please input a number to continue!");scanf("%d",&i);return;}//对学生信息进行修改void DoChange(){int choice1;int i=0;int onum;char choice2;system("cls");DoOpen();printf("你想对那个学生进行操作,请输入学号\n");scanf("%d",&onum);while(onum!=si.stud[i].id)i++;if(onum==si.stud[i].id){printf("\n你要修改哪一项");printf("1学号\n2姓名\n3数学成绩\n4英语成绩\n5语文成绩\n6物理成绩\n7化学成绩");printf("请选择");scanf("%d",&choice1);switch(choice1){case 1: printf("\n请输入修改后的学号");scanf("%d",&si.stud[i].id);break;case 2: printf("\n输入你要修改的姓名");scanf("%s",&si.stud[i].name);break;case 3: printf("\n请输入要修改的成绩");scanf("%d",&si.stud[i].Math);break;case 4: printf("\n请输入要修改的成绩");scanf("%d",&si.stud[i].English);break;case 5: printf("\n请输入要修改的成绩");scanf("%d",&si.stud[i].Chinese);break;case 6: printf("\n请输入要修改的成绩");scanf("%d",&si.stud[i].Physics);break;case 7: printf("\n请输入要修改的成绩");scanf("%d",&si.stud[i].Chemistry);break; }}elseprintf("没有该同学信息");printf(" Please input a number(0..9) to continue!");scanf("%d",&i);}//删除学生信息void DoDelete(){int i,id;char fname[MAX_NAME_STRLEN];system("cls");DoOpen();printf("请输入学生学号");scanf("%d",&id);i=0;while(si.stud[i].id!=id)i++;if(si.stud[i].id==id){while(i<si.length-1){si.stud[i]=si.stud[i+1];i++;}si.length=si.length-1;for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s 数学:%d 英语:%d 语文:%d 物理:%d 化学:%d \n",si.stud[i].id,si.stud[i].name,si.stud[i].Math,si.stud[i].English,si.stud[i].Chinese,si.stud[i].Physics,si.stud[i].Chemistry);}elseprintf("没有该同学信息");printf(" Please input a number(0..9) to continue!");scanf("%d",&i);}//展示学生信息void DoDisplay(){struct _studTb m;int i,j,n;system("cls");DoOpen();printf("请选择\n1.数学排名2.英语排名3.语文排名 4.物理排名 5.化学排名 6.学生总分并排序7.学生平均分并排序\n");scanf("%d",&n);if(n==1){for(j=0;j<si.length-1;j++){for(i=0;i<si.length-j-1;i++)if(si.stud[i].Math<si.stud[i+1].Math){m.stud[1]=si.stud[i];si.stud[i]=si.stud[i+1];si.stud[i+1]=m.stud[1];}}for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s 数学成绩排名:%d\n", si.stud[i].id, si.stud[i].name ,si.stud[i].Math);}else if(n==2){for(j=0;j<si.length-1;j++){for(i=0;i<si.length-j;i++)if(si.stud[i].English<si.stud[i+1].English){m.stud[1]=si.stud[i];si.stud[i]=si.stud[i+1];si.stud[i+1]=m.stud[1];}}for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s 英语成绩排名:%d\n", si.stud[i].id, si.stud[i].name ,si.stud[i].English);}else if(n==3){for(j=0;j<si.length-1;j++){for(i=0;i<si.length-j;i++)if(si.stud[i].Chinese<si.stud[i+1].Chinese){m.stud[1]=si.stud[i];si.stud[i]=si.stud[i+1];si.stud[i+1]=m.stud[1];}}for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s 语文成绩排名:%d\n", si.stud[i].id, si.stud[i].name, si.stud[i].Chinese);}else if(n==4){for(j=0;j<si.length-1;j++){for(i=0;i<si.length-j;i++)if(si.stud[i].Physics<si.stud[i+1].Physics){m.stud[1]=si.stud[i];si.stud[i]=si.stud[i+1];si.stud[i+1]=m.stud[1];}}for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s OS成绩排名:%d\n", si.stud[i].id, si.stud[i].name, si.stud[i].Physics);}else if(n==5){for(j=0;j<si.length-1;j++){for(i=0;i<si.length-j;i++)if(si.stud[i].Chemistry<si.stud[i+1].Chemistry){m.stud[1]=si.stud[i];si.stud[i]=si.stud[i+1];si.stud[i+1]=m.stud[1];}}for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s C语言成绩排名:%d\n", si.stud[i].id, si.stud[i].name,si.stud[i].Chemistry);}else if(n==6){for(i=0;i<si.length;i++)si.stud[i].sum=si.stud[i].Math+si.stud[i].English+si.stud[i].Chinese+si.stud[i].Physics+si.stud [i].Chemistry;for(j=0;j<si.length-1;j++){for(i=0;i<si.length-j;i++)if(si.stud[i].sum<si.stud[i+1].sum){m.stud[1]=si.stud[i];si.stud[i]=si.stud[i+1];si.stud[i+1]=m.stud[1];}}for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s 总分成绩排名:%f\n", si.stud[i].id, si.stud[i].name, si.stud[i].sum);}else if(n==7){for(i=0;i<si.length;i++){si.stud[i].sum=si.stud[i].Math+si.stud[i].English+si.stud[i].Chinese+si.stud[i].Physics+si.stud [i].Chemistry;si.stud[i].averScore=(float)si.stud[i].sum/si.length;}for(j=0;j<si.length-1;j++){for(i=0;i<si.length-j;i++)if(si.stud[i].averScore<si.stud[i+1].averScore){m.stud[1]=si.stud[i];si.stud[i]=si.stud[i+1];si.stud[i+1]=m.stud[1];}}for(i=0;i<si.length;i++)printf("学号:%d 姓名:%s 平均成绩排名:%f\n", si.stud[i].id, si.stud[i].name, si.stud[i].averScore);}printf(" Please input a number(0..9) to continue!");scanf("%d",&i);}//统计学生信息void Docensus(){struct _studTb sen;int mark;int sum=0;int i=0;system("cls");DoOpen();printf("请输入要统计多少分以上的学生信息");scanf("%d",&mark);while(i<si.length){ if(si.stud[i].Math>mark){sen.stud[sum]=si.stud[i];sum++;}i++;}printf("一共有:%d人\n",sum);for(i=0;i<sum;i++)printf("他的学号%4d姓名%s数学成绩%4d英语成绩%4d 语文成绩%4d 物理成绩%4d 化学成绩%4d\n ",sen.stud[i].id,sen.stud[i].name,sen.stud[i].Math,sen.stud[i].English,sen.stud[i].Chinese,sen.stud[i].Physics,sen.stud[i].Chemistry);printf(" Please input a number(0..9) to continue:");scanf("%d",&i);}void DoExit(){printf("\t\t 谢谢使用!\n");printf("\t\t");system("pause");exit(0);}。
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语言程序设计》课题名称班级成绩管理系统专业信息管理与信息系统班级信管1401学号201403110118姓名杨宁馨指导教师曾赛峰、赵锦元、李峰2015年7 月2 日湖南工程学院课程设计任务书课程名称《C语言程序设》课题班级成绩管理系统专业班级信管1401学生姓名杨宁馨学号201403110118指导老师曾赛峰、赵锦元、李峰审批任务书下达日期2015 年6月9 日任务完成日期2015 年7 月2日设计课题一:班级成绩管理系统一、问题描述:对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
二、功能要求:1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
2、本系统显示这样的菜单:请选择系统功能项:a、成绩录入b、成绩显示c、成绩保存d、成绩排序e、成绩修改(要求先输入密码)f、成绩统计(1)显示每门课程成绩最高的学生的基本信息(2)显示每门课程的平均成绩(3)显示超过某门课程平均成绩的学生人数g、退出系统3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。
三、算法提示:1、数据结构:结构体类型数组。
2、数据库结构:下表构成该系统的基本数据库。
四、测试数据:学生人数N=10课程门数M=4课程名:数学、语文、英语、政治五、其它对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
课程设计报告规范一、需求分析1、程序的功能。
2、输入输出的要求。
二、概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。
2、课题的总体数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
三、详细设计1、采用C语言定义相关的数据类型。
2、写出各模块的类C码算法。
3、画出函数的调用关系图。
四、程序测试及运行效果1、测试数据:准备典型的测试数据和测试方案2、程序运行的效果截图及说明五、小结1、程序调试中遇到的问题以及解决问题的方法。
#include"stdio.h"#include"stdlib.h"#include"string.h"struct stu_info1{char num[13];//学号char name[10];//姓名char sex[5];//性别char cls[20];//班级}stu1[6];struct stu_info2{char counum[6];//课程号char counam[20];//课程名称int credit;//学分}stu2[6];struct stu_info3{char num[13];//学号char counum[6];//课程号float results;//分数}stu3[12];struct stu_info4{char num[13];//学号char counum[6];//课程号float results;//分数}stu4[12];int n=11;void main(){void gengxin();void input1();void input2();void input3();void output();void xianshi();void chaxun();void printf1();void printf2();input1();input2();output();int i;loop: ;printf("*************欢迎使用分数查询系统*************\n");printf("** 请选择**\n");printf("** 1.录入2.删除无用信息(管理员功能) **\n");printf("** 3.显示4.查询(学生功能) **\n");printf("** 5.显示学生信息6.显示课程信息**\n");printf("** 7.退出**\n");printf("**********************************************\n");scanf("%d",&i);switch(i){case 1: input3();break;case 2:gengxin();break;case 3:xianshi();goto loop;case 4: chaxun();goto loop;case 5: printf1();goto loop;case 6: printf2();goto loop;case 7:break;default:printf("error");break;}}void input1()//录入结构体stu1[]{int i;FILE *fp;if((fp=fopen("A.txt","r"))==NULL){printf("can not open file\n");exit(0);}/* printf(" 学号姓名性别班级\n");*/for(i=0;i<=5;i++){fscanf(fp,"%s%s%s%s",&stu1[i].num,&stu1[i].name,&stu1[i].sex,&stu1[i].cls);/*printf("%-13s %-10s %-5s %-20s\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i] .cls);*/}fclose(fp);}void input2()//录入结构体stu2[]{int i;FILE *fp;if((fp=fopen("B.txt","r"))==NULL){printf("can not open file\n");exit(0);}for(i=0;i<=5;i++){fscanf(fp,"%s%s%d",&stu2[i].counum,&stu2[i].counam,&stu2[i].credit);}fclose(fp);}void input3()//录入成绩{FILE *fp;fp=fopen("C.txt","w");int a,i,j,k;float cetss;char number[13],cnum[6],mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){printf("请输入要录入学生成绩的个数\n");scanf("%d",&a);for(i=1;i<=a;i++){printf("请输入要录入的第%d同学的学号:",i);scanf("%s",number);printf("请输入要录入的第%d同学的课程号:",i);scanf("%s",cnum);for(j=0;j<=5;j++)//学号{if((strcmp(number,stu1[j].num)==0))break;}if(j<=5){for(k=0;k<=5;k++)//课程号{if(strcmp(cnum,stu2[k].counum)==0){printf("请输入要录入同学的成绩:");scanf("%f",&cetss);fprintf(fp,"%s %s %f\n",number,cnum,cetss);break;}}}if(j>5||k>5){printf("Error,please input again");i=i-1;}printf("录入成功\n");}}else{printf("密码错误\n");}}void output()// 录入结构体stu3[]{int i;FILE *fp=fopen("C.txt","r");for(i=0;i<n;i++){fscanf(fp,"%s%s%f",&stu3[i].num,&stu3[i].counum,&stu3[i].results);/*printf("%s%s%f\n",stu3[i].num,stu3[i].counum,stu3[i].results);*/ }fclose(fp);}void xianshi()// 显示成绩{int i,j;for(i=0;i<n;i++){for(j=0;j<6;j++){if((strcmp(stu3[i].num,stu1[j].num))==0)printf("%s\t",stu1[j].name);}for(j=0;j<6;j++){if(strcmp(stu3[i].counum,stu2[j].counum)==0)printf("%s\t",stu2[j].counam);}printf("%3.1f\n",stu3[i].results);}}void chaxun()//查询功能{char number[13],c;int i,j,k,a,b,d;while((c=getchar())!='Q'){a=0,b=0;//a记录学分b记录学科printf("请输入要查询同学的学号\n");scanf("%s",number);for(i=0;i<n;i++){if(strcmp(number,stu3[i].num)==0){printf("学号:%s\t",stu3[i].num);for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){printf("姓名:%s\n",stu1[j].name);}}break;}}d=i;for(i=0;i<n;i++)if(strcmp(number,stu3[i].num)==0){b=b+1;for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<6;k++){if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;}break;}}if(stu3[i].results>=60){a=a+stu2[k].credit;printf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,stu2[k].credit);}elseprintf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,0);}if(d<n){printf("共修%d科\t\t实得总学分:%d\n",b,a);}else{printf("学号输入错误\n");}getchar();printf("退出请按Q+回车,继续查询请按回车键");}}void gengxin()//更新信息,删除C.txt中无用信息{FILE *fp;int i,j,k;char mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){fp=fopen("C.txt","w");for(i=0;i<n;i++){for(j=0;j<6;j++)if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<=5;k++)if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;if(k<=5){fprintf(fp,"%s %s %f\n",stu3[i].num,stu3[i].counum,stu3[i].results);}}}printf("更新C.txt成功\n");fclose(fp);}else{printf("密码错误\n");}}void printf1()//显示学生信息{int i;printf(" 学号姓名性别班级\n");for(i=0;i<=5;i++){printf("%-13s%-10s%-5s %-20s\n\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i].cls);}}void printf2()//显示课程信息{int i;printf(" 课程编号课程名称学分\n");for(i=0;i<=5;i++){printf("%-6s%-20s %-4d\n\n",stu2[i].counum,stu2[i].counam,stu2[i].credit);}}。
#i n c l u d e<s t d i o.h>#include <string.h>#include <conio.h>#define N 100struct student{ char XUEHAO[10];char BANJI[6];char XINGMING[6];char XINGBIE[2];char SHENGRI[8];char JIGUAN[10];char XUEYUAN[10];char TIANHUA[10];};void CAIDAN();void LURU();void SHAXUN();void sch_XUEHAO(FILE *fp);void sch_XINGMING(FILE *fp);void SHANCHU();void del_XUEHAO(FILE *fp);void del_XINGMING(FILE *fp);void TIANJIA();void XIUGAI();void XIANZHI();void TONGJI();main(){ char choose,yes_no;do{ CAIDAN();printf("\n 请输入序号: (1~8) ");choose=getch();switch(choose){ case'1': printf(" %c",choose);LURU();break;case'2': printf(" %c",choose);SHAXUN();break;case'3': printf(" %c",choose);SHANCHU();break;case'4': printf(" %c",choose);TIANJIA();break;case'5': printf(" %c",choose);XIUGAI();break;case'6': printf(" %c",choose);XIANZHI();break;case'7': printf(" %c",choose);TONGJI();break;case'8': break;default:printf("\n %c 序号不对!\n",choose);}if(choose=='8')break;printf("\n 要继续选择吗? (Y/N) \n");do{ yes_no=getch(); printf(" %c",yes_no);}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no=='Y'||yes_no=='y');}void CAIDAN(){printf("\n\n\n");printf(" **************************************** \n ");printf(" * 请输入序号: (1~ 8) * \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(" **************************************** \n ");}/*定义录入学生信息的函数*/void LURU(){ int i=1;struct student temp;FILE *fp;fp=fopen("123.dat","w");if(fp==NULL){ printf("\n 打开文件失败! \n");return; }printf("\n 请输入第1个学生信息:\n");printf(" 学号(用#结束输入): ");do{ gets(temp.XUEHAO);}while(strcmp(temp.XUEHAO," ")==0);printf(" 班级(用#结束输入): ");gets(temp.BANJI);printf(" 姓名(用#结束输入): ");gets(temp.XINGMING);printf(" 性别(用#结束输入): ");gets(temp.XINGBIE);printf(" 生日(用#结束输入): ");gets(temp.SHENGRI);printf(" 籍贯(用#结束输入): ");gets(temp.JIGUAN);printf(" 学院(用#结束输入): ");gets(temp.XUEYUAN);printf(" 电话(用#结束输入): ");gets(temp.TIANHUA);while(temp.XUEHAO[0]!='#'&&temp.BANJI[0]!='#'&&temp.XINGMING[0]!='#'&&temp.XINGBIE[0]!='#'&& temp.SHENGRI[0]!='#'&&temp.JIGUAN[0]!='#'&&temp.XUEYUAN[0]!='#'&&temp.TIANHUA[0]!='#'){ fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.BANJI,temp.XINGMING,temp. XINGBIE,temp.SHENGRI,temp.JIGUAN,temp.XUEYUAN,temp.TIANHUA);i++;printf("\n 请输入第%d 个学生信息:\n ",i);printf(" 学号(用#结束输入): ");do{ gets(temp.XUEHAO);}while(strcmp(temp.XUEHAO," ")==0);printf(" 班级(用#结束输入): ");gets(temp.BANJI);printf(" 姓名(用#结束输入): ");gets(temp.XINGMING);printf(" 性别(用#结束输入): ");gets(temp.XINGBIE);printf(" 生日(用#结束输入): ");gets(temp.SHENGRI);printf(" 籍贯(用#结束输入): ");gets(temp.JIGUAN);printf(" 学院(用#结束输入): ");gets(temp.XUEYUAN);printf(" 电话(用#结束输入): ");gets(temp.TIANHUA);}fclose(fp);}/*定义查询学生信息的函数*/void SHAXUN(){ char c;FILE *fp;fp=fopen("123.dat","r");if(fp==NULL){ printf("\n 打开文件失败! \n");return; }printf("\n 按学号查询( 1 ),还是按姓名查询( 2 )? ");c=getch();putch(c);if(c=='1') sch_XUEHAO(fp);else if(c=='2') sch_XINGMING(fp);else printf("\n 非法字符!\n");fclose(fp);}/*定义按学号查询学生信息的函数*/void sch_XUEHAO(FILE *fp){ int flag=0,n=0;char tempXUEHAO[10];struct student temp;printf("\n 请输入要查询学生信息的学号: ");gets(tempXUEHAO);while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO,&temp.BANJI,&temp.XINGMING, &temp.XINGBIE,&temp.SHENGRI,&temp.JIGUAN,&temp.XUEYUAN,&temp.TIANHUA);if(strcmp(tempXUEHAO,temp.XUEHAO)==0){ if(flag==0)printf(" 学号班级姓名性别生日籍贯学院电话\n");printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.BANJI,temp.XINGMING,temp.XIN GBIE,temp.SHENGRI,temp.JIGUAN,temp.XUEYUAN,temp.TIANHUA);flag=1;}n++;}if(n==0) printf("\n 文件中无此信息!\n");else if(flag==0) printf("\n 文件中无此人!\n");}/*定义按姓名查询学生信息的函数*/void sch_XINGMING(FILE *fp){ int flag=0,n=0;char tempXINGMING[6];struct student temp;printf("\n 请输入要查询学生信息的姓名: ");gets(tempXINGMING);while(feof(fp)==0){ fscanf(fp, "%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO,&temp.BANJI,&temp.XINGMING,&temp.XI NGBIE,&temp.SHENGRI,&temp.JIGUAN,&temp.XUEYUAN,&temp.TIANHUA);if(strcmp(tempXINGMING,temp.XINGMING)==0){ if(flag==0) printf(" 学号班级姓名性别生日籍贯学院电话\n");printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.BANJI,temp.XINGMING,temp.XIN GBIE,temp.SHENGRI,temp.JIGUAN,temp.XUEYUAN,temp.TIANHUA);flag=1;}n++;}if(n==0) printf("\n 文件中无此信息!\n");else if(flag==0) printf("\n 文件中无此人!\n");}/*定义删除学生信息的函数*/void SHANCHU(){ char c;FILE *fp;fp=fopen("123.dat","r");if(fp==NULL){ printf("\n 文件打开失败!\n ");return; }printf("\n 按学号删除( 1 ),还是按姓名删除( 2 )? ");c=getch();putch(c);if(c=='1') del_XUEHAO(fp);else if(c=='2') del_XINGMING(fp);else printf("\n 非法字符!\n");fclose(fp);}/*定义按学号删除学生信息的函数*/void del_XUEHAO(FILE *fp){ char tempXUEHAO[10];int n=0,i=0,k;struct student stu[N];while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i] .XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);i++;n++;} fclose(fp);printf("\n 请输入要删除的学生信息的学号:");scanf("%s",tempXUEHAO);for(i=0;i<n;i++)if(strcmp(tempXUEHAO,stu[i].XUEHAO)==0)break;if(i<n)for(k=i;k<n;k++)stu[k]=stu[k+1];else printf("\n 无此人!\n");fp=fopen("123.dat","w");if(fp==NULL){ printf("\n 文件打开失败!\n");return; }for(i=0;i<n-1;i++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i]. XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);}/*定义按姓名删除学生信息的函数*/void del_XINGMING(FILE *fp){ char tempXINGMING[6];int n=0,i=0,k;struct student stu[N];while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i] .XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);i++;n++;} fclose(fp);printf("\n 请输入要删除的学生信息的姓名:");scanf("%s",tempXINGMING);for(i=0;i<n;i++)if(strcmp(tempXINGMING,stu[i].XINGMING)==0)break;if(i<n)for(k=i;k<n;k++)stu[k]=stu[k+1];else printf("\n 无此人!\n");fp=fopen("123.dat","w");if(fp==NULL){ printf("\n 文件打开失败!\n");return;}for(i=0;i<n-1;i++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i]. XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);}/*定义添加学生信息的函数*/void TIANJIA(){ char c;int n=0,i=0;struct student temp,stu[N];FILE *fp;fp=fopen("123.dat","r");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i] .XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);i++;n++;} fclose(fp);for(i=0;i<n;i++)printf("\n %s %s %s %s %s %s %s %s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XIN GMING,stu[i].XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);do{ printf("\n 请输入新学生信息的学号:");do{ scanf("%s",temp.XUEHAO); }while(strcmp(temp.XUEHAO," ")==0);printf(" 请输入新学生信息的班级:");scanf("%s",temp.BANJI);printf(" 请输入新学生信息的姓名:");scanf("%s",temp.XINGMING);printf(" 请输入新学生信息的性别:");scanf("%s",temp.XINGBIE);printf(" 请输入新学生信息的生日:");scanf("%s",temp.SHENGRI);printf(" 请输入新学生信息的籍贯:");scanf("%s",temp.JIGUAN);printf(" 请输入新学生信息的学院:");scanf("%s",temp.XUEYUAN);printf(" 请输入新学生信息的电话:");scanf("%s",temp.TIANHUA);for(i=0;i<n;i++)if(strcmp(temp.XUEHAO,stu[i].XUEHAO)==0){ printf("\n 学号重复,要重新输入吗(Y/N)?");do{ c=getch(); putch(c);}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');putchar('\n');break;}if(i==n) { stu[i]=temp; break; }}while(c=='Y'||c=='y');fp=fopen("123.dat","w");if(fp==NULL){ printf("\n 文件打开失败!\n"); return; }for(i=0;i<=n;i++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i]. XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);fclose(fp);}/*定义修改学生信息的函数*/void XIUGAI(){ char c;int n=0,i=0;struct student *find,temp,stu[N],*p;FILE *fp;fp=fopen("123.dat","rb");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i] .XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);i++;n++;} fclose(fp);if(n==0){ printf("\n 文件中无此信息!\n");return;}printf("\n 请输入要修改的学生信息的学号: ");scanf("%s",temp.XUEHAO);for(p=stu;p<stu+n;p++)if(strcmp(temp.XUEHAO,p->XUEHAO)==0){ find=p; break; }if(p==stu+n){ printf("\n 无此信息!\n");return; }do{ printf("\n 请输入新学生信息的学号:");do{ scanf("%s",temp.XUEHAO); }while(strcmp(temp.XUEHAO," ")==0);printf(" 请输入新学生信息的班级:");scanf("%s",temp.BANJI);printf(" 请输入新学生信息的姓名:");scanf("%s",temp.XINGMING);printf(" 请输入新学生信息的性别:");scanf("%s",temp.XINGBIE);printf(" 请输入新学生信息的生日:");scanf("%s",temp.SHENGRI);printf(" 请输入新学生信息的籍贯:");scanf("%s",temp.JIGUAN);printf(" 请输入新学生信息的学院:");scanf("%s",temp.XUEYUAN);printf(" 请输入新学生信息的电话:");scanf("%s",temp.TIANHUA);for(p=stu;p<stu+n;p++)if(strcmp(temp.XUEHAO,p->XUEHAO)==0&&p!=find){ printf("\n 学号重复,要重新输入吗(Y/n)?");do{ c=getch();putch(c);}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');putchar('\n');break;}if(p==stu+n){ *find=temp; break; }}while(c=='Y'||c=='y');fp=fopen("123.dat","wb");if(fp==NULL) { printf("\n 打开文件失败!\n "); return; }for(p=stu;p<stu+n;p++)fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",p->XUEHAO,p->BANJI,p->XINGMING,p->XINGBIE ,p->SHENGRI,p->JIGUAN,p->XUEYUAN,p->TIANHUA);fclose(fp);}/*定义显示学生信息的函数*/void XIANZHI(){ int n=0,i=0;struct student stu[N];FILE *fp;fp=fopen("123.dat","r");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }printf("\n\n 学号班级姓名性别生日籍贯学院电话\n");while(feof(fp)==0){ fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i] .XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA); ++i; ++n; }if(n==0)printf("\n 文件中无此信息!\n");else { for(i=0;i<n;i++)printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i].XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);printf("\n\n 文件中共有%d 个信息!\n",n);}fclose(fp);}/*定义在同一个学院的学生人数的函数*/void TONGJI(){ int i=0,n=0,k=0;char tempXUEYUAN[10];struct student stu[N];FILE *fp;fp=fopen("123.dat","r");if(fp==NULL){ printf("\n 打开文件失败!\n"); return; }while(feof(fp)==0){fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&stu[i].XUEHAO,&stu[i].BANJI,&stu[i].XINGMING, &stu[i].XINGBIE,&stu[i].SHENGRI,&stu[i].JIGUAN,&stu[i].XUEYUAN,&stu[i].TIANHUA);i++;n++; } fclose(fp);printf("\n\n 请输入学院名称: ");scanf("%s",tempXUEYUAN);printf("\n\n 学号班级姓名性别生日籍贯学院电话\n");for(i=0;i<n;i++)if(strcmp(tempXUEYUAN,stu[i].XUEYUAN)==0){printf("\n%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].BANJI,stu[i].XINGMING,stu[i]. XINGBIE,stu[i].SHENGRI,stu[i].JIGUAN,stu[i].XUEYUAN,stu[i].TIANHUA);k++;}printf("\n\n 共有%d个学生在这个学院!\n",k);}。