C语言课程设计-学生成绩管理系统-完整版

合集下载

C语言课程设计--学生成绩管理系统

C语言课程设计--学生成绩管理系统

*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:(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.主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.流程图:显示一系列功能模块N输入n,判断n是否是A--FY根据n的值调用各功能模块函数[程序]:#include "\n");printf(" | 1. 增加学生记录 5.统计信息 |\n");printf(" | 2. 查询学生记录 6.打开文件 |\n");printf(" | 3. 修改学生记录 7.保存文件 |\n");printf(" | 4. 学生纪录排序 8.显示记录 |\n");printf(" | 0. 退出系统 |\n");printf("\n\n");printf("请选择(0-8):");c=getchar();getchar();return (c-'0');}2.输入模块:[分析]:单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.如果要存放若干学生信息就用结构体数组:void addrecord(student stud[]){int i=0,j,num;char str[5];if(numstus!=0){printf("已有记录存在是否覆盖?(yn)\n");gets(str);if(str[0]=='Y'||str[0]=='y')i=0;else i=numstus;}printf("请输入增加的学生信息条目数:");scanf("%d",&num);if(i==0)numstus=num;else numstus+=num;if(numstus>lens){lens+=50;pointer=(student *)realloc(pointer,lens*LEN);}printf("请输入学生信息:\n");for(;i<numstus;i++){getchar();printf("请输入学号:");gets(pointer[i].number);printf("请输入姓名:");gets(pointer[i].name);printf("请输入性别(男女 10):");gets(pointer[i].sex);if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");else strcpy(pointer[i].sex,"男");printf("请输入各科成绩:(按“语文,数学,英语,体育,政治”的顺序):");stud[i].score=0;for(j=0;j<numsubs;j++){scanf("%f",&stud[i].subject[j]); *计算总分*stud[i].score+=stud[i].subject[j];}stud[i].average=stud[i].scorenumsubs; *计算平均分*}count(stud); *附名次*display(stud,0,numstus-1);getchar();}int numstus;int lens;student *pointer;void main(){int i=1;char str[2];lens=100;pointer=(student *)malloc(lens*LEN); *分配内存*numstus=0;welcome(); *欢迎界面*while(i>0){i=menu_select(); *控制菜单*switch(i){case 1:addrecord(pointer);break; *增加学生信息* case 2:findrecord(pointer);break; *查询学生信息* case 3:amendrecord(pointer);break; *修改学生信息* case 4:sort(pointer);break; *学生信息排序*case 5:statistic(pointer);break; *统计信息*case 6:openfile(pointer);break; *打开文件*case 7:writetotext(pointer);break; *保存文件*case 8:display(pointer,0,numstus-1);break; *显示记录*case 0:if(numstus!=0) printf("是否保存当前记录?(yn)");gets(str);if(str[0]=='y'||str[0]=='Y')writetotext(pointer);i=-1;break; *退出系统*default:printf("请输入数字0~8:\n");i=1; *输入错误*}}printf("\t\t欢迎再次使用本系统。

c语言成绩管理系统课程设计

c语言成绩管理系统课程设计

c语言成绩管理系统课程设计一、教学目标本课程的目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的成绩管理系统。

通过本课程的学习,学生将能够理解C语言的基本语法和数据结构,掌握函数的定义和调用,学会使用指针和数组,以及熟练运用条件语句和循环语句。

此外,学生还将培养编程思维和解决问题的能力,提高团队合作和沟通的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、指针、数组、控制语句等。

具体包括以下几个方面的内容:1.C语言的基本语法:包括变量、常量、运算符、表达式等。

2.数据结构:包括整型、浮点型、字符型等基本数据类型,以及数组、结构体、指针等复杂数据类型。

3.函数:包括函数的定义、声明和调用,以及函数的参数传递和返回值。

4.指针:包括指针的概念、指针的运算、指针与数组的关系等。

5.数组:包括一维数组和多维数组的定义和使用。

6.控制语句:包括条件语句和循环语句的语法和应用。

三、教学方法本课程将采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。

1.讲授法:通过教师的讲解,使学生掌握C语言的基本语法和数据结构,理解函数的定义和调用,以及掌握指针和数组的使用方法。

2.案例分析法:通过分析实际案例,使学生学会运用C语言解决实际问题,培养编程思维和解决问题的能力。

3.实验法:通过实验操作,使学生熟练掌握C语言编程的技巧和方法,提高编程能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用《C程序设计语言》作为主要教材,为学生提供系统的C语言知识体系。

2.参考书:提供《C Primer Plus》等参考书,供学生自主学习和拓展知识。

3.多媒体资料:制作PPT课件,通过图片、动画等形式展示C语言编程的概念和实例。

4.实验设备:提供计算机实验室,供学生进行编程实验和实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

C语言课程设计之学生成绩管理系统

C语言课程设计之学生成绩管理系统

C语言课程设计之学生成绩管理系统#include<conio。

h>/*清屏*/#include <stdio.h〉#include <stdlib.h>#include <string。

h>/*字符串函数*/typedef struct student_type Student;void fun(Student *stu);/*student结构体的指针*/void fun1(Student *stu);/*录入成绩*/void fun2(Student *stu);/*按学号成绩查询*/void fun3(Student *stu);/*按姓名成绩查询*/void fun4(Student *stu);/*新增学生记录*/void fun5(Student *stu);/*修改学生记录*/void fun6(Student *stu);/*删除学生记录*/void fun7(Student *stu);/*输出学生记录*/void count(Student *stu);/*统计成绩*/void sort(Student stu[],int n);/*排序*/void save(Student *stu);struct student_type/*录入*/{char num[20];/*学号,数组长度为20*/ char name[20];/*姓名*/float chinesescore; /*语文分数*/float mathscore;/*数学分数*/float englishscore;/*英语分数*/int max[20];int total[20];int ave[20];int sum;int score[4]; /*总成绩及3门课成绩*/}stud[100];int t;int main(){int i;Student stu_table[20];for (i = 0; i<20; i++)fun(&stu_table[i]);for (i = 0;i<20; i++)fun7(&stu_table[i]);printf(”\n");for (i = 0; i<20; i++)save(stu_table);return 0;}void fun(Student *stu){int n;printf(”\n\n\t\t学生档案管理系统");printf("\n\n\t—--——-——--—-—-—-------—---—————-———-----”);printf(”\n\n\t\t1:录入学生信息系统");printf(”\n\n\t\t2:修改学生信息系统");printf(”\n\n\t\t3:删除学生信息系统");printf("\n\n\t\t4:查询学生信息系统”);printf("\n\n\t\t5:输出学生信息系统");printf(”\n\n\t\t6:退出系统");printf("\n\n\t—--——————----—-—-———-——--—-—-——-———————-");printf(”\n\n请选择你要的服务(按数字1~6进入):”);scanf(”%d”,&n);system(”cls”);if (n == 1){printf("\n\n\t\t欢迎进入录入学生系统〉_〈");fun1(stu);}else if (n == 2){printf(”\n\n\t\t欢迎进入修改学生系统>_〈");fun5(stu);}else if (n == 3){printf(”\n\n\t\t欢迎进入删除学生系统〉_〈”);fun6(stu);}else if (n == 4){printf("\n\n\t\t欢迎进入查询学生系统>_〈”);printf("\n\n\t——-----—-————-—--—-----———-——-———---—-—-”);printf(”\n\n\t\t1:按学号查询学生信息系统");printf("\n\n\t\t2:按姓名查询学生信息系统”);printf("\n\n\t——-—---—-———---------——-——-—--—————-----");printf(”\n\n请选择你要的服务(按数字1~2进入):");scanf("%d”,&n);system("cls");if (n == 1){printf("\n\n\t\t1:按学号查询学生信息系统");fun2(stu);}else if (n == 2){printf(”\n\n\t\t1:按姓名查询学生信息系统”);fun3(stu);}else{printf(”\n\n\t\t数据错误");}}else if (n == 5){printf(”\n\n\t\t欢迎进入输出学生系统>_〈\n”);fun7(stu);}else if (n == 6){printf(”\n\n\t\t谢谢使用学生管理系统!〉_〈\n”);printf(”\n\n\t\t请双击Enter键退出系统:");getchar();getchar();exit(0);}elseprintf(”\n\n\t\t数据错误");}void fun1(Student *stu){int i;char d;printf(”\n\n\t请输入学生的数量:");scanf("%d", &t);for (i = 0; i〈t;i++){printf(”\n\t\t请输入学生学号:”);scanf(”%s",stu[i].num);printf("\n\t\t请输入学生姓名:”);scanf(”%s",stu[i]。

C语言课程设计—学生成绩管理系统

C语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。

h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计1. 介绍学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩信息的软件系统。

它能够记录和管理学生的各门课程的成绩,提供成绩查询、统计分析以及生成报表的功能。

在这个项目中,我们将使用C语言来设计和实现一个简单的学生成绩管理系统。

2. 功能需求2.1 学生信息管理•添加学生信息:输入学生的学号、姓名、性别、年龄等基本信息,并将其保存到系统中。

•修改学生信息:根据学生的学号或姓名,找到对应的学生信息,并允许修改其基本信息。

•删除学生信息:根据学生的学号或姓名,找到对应的学生信息,并从系统中删除。

2.2 成绩管理•录入学生成绩:输入学生的学号或姓名,根据学号或姓名找到对应的学生信息,并记录其各门课程的成绩。

•查询学生成绩:根据学生的学号或姓名,找到对应的学生信息,并显示其各门课程的成绩。

•统计学生成绩:计算学生的总分、平均分等统计信息,并按照成绩排名进行排序并显示。

•生成成绩报表:将学生的成绩信息按照一定的格式输出到文件中,以方便查阅和打印。

2.3 界面设计•主菜单:显示系统的功能选项,包括学生信息管理、成绩管理、退出等选项。

•学生信息管理菜单:显示学生信息管理的功能选项,包括添加学生信息、修改学生信息、删除学生信息等选项。

•成绩管理菜单:显示成绩管理的功能选项,包括录入学生成绩、查询学生成绩、统计学生成绩、生成成绩报表等选项。

•输入提示:在功能选项中,根据需要给出相应的输入提示,以引导用户正确地操作系统。

3. 设计思路3.1 数据结构设计为了实现学生成绩管理系统,我们需要设计合适的数据结构来存储学生信息和成绩。

在这个项目中,我们可以使用结构体来表示学生信息,如下所示:struct Student {int id; // 学号char name[20]; // 姓名char gender[10]; // 性别int age; // 年龄float grades[5]; // 各门课程成绩};3.2 模块设计为了实现功能需求中的各项功能,我们需要设计相应的模块来实现。

c语言课程设计---学生成绩管理系统

c语言课程设计---学生成绩管理系统

C语言课程设计报告设计题目:学生成绩管理系统设计任务:C语言课程设计任务书及指导书3题目:学生成绩管理系统功能:学生成绩管理系统,每个学生信息为一个记录,包括学号,姓名,性别,3门课程成绩。

系统要求实现以下功能:1、信息录入:录入成绩学生信息(包括学生学号、姓名、性别、3门课程的成绩等);2、信息查询:可以按照姓名或学号查询学生各门课程的成绩,并显示。

3、排序:按平均成绩或各门课程成绩按由高到低进行排序,并显示。

4、信息删除与修改——输入学号,可删除或修改该学生的成绩信息。

5、保存:将相关数据写入磁盘文件,便于存、取操作。

平时:验收:报告:指导教师签名:总评成绩:一、总体设计1.1. 功能模块设计:1.2. 数据结构设计1)自定义的数据类型:struct student{ char num[10]; /* 学号 */char name[20]; /* 姓名*/char sex[4]; /* 性别*/int computer; /* 计算机成绩 */int English; /* 英语成绩 */int math; /* 高数成绩*/};2)文件:设计了student文件,是为了长期保存学生的学号、姓名、性别、计算机成绩、英语成绩、高数成绩等数据。

1.3. 函数原型设计1》void printgaohongbin1()函数功能:用二维数组输出图案无参函数2》void menu()函数功能:输出程序功能菜单二、详细设计2.1.界面设计2.1.1.开始界面%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%学生成绩管理系统设计者:计算机科学与信息工程学院软件工程11103205 高红斌%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2.1.2登记学生资料的界面2.1.3 删除功能的界面:2.1.3删除学生资料的界面************++++++++++++++***********+++++++++******************* * * +How do you do! * * * * * +1----登记学生资料(register ) * * * * * * +2----删除学生资料(Delete ) * * * * * * +3----查询学生资料(search ) * * * * * * +4----修改学生资料(Update ) * * * * * * +5----保存学生资料(Save ) * * * * * * +6----退出系统 (Exit ) * * * * 欢迎 * * +7----结束语 (good-bye ) * * 欢迎 * ************++++++++++++++***********+++++++++*******************请你选择操作:1请输入学号:11103205 请输入姓名:高红斌 请输入性别:男请输入计算机成绩:86 请输入英语成绩:75 请输入高数成绩:92 请输入学号: (输入0返回上一级菜单)=====》文件已经打开,正在导入记录。

(完整版)C语言毕业课程设计 学生成绩管理系统

(完整版)C语言毕业课程设计 学生成绩管理系统

课程设计报告课程名称 C语言课程设计课题名称成绩管理系统专业班级学号姓名指导教师20``年``月`` 日湖南工程学院课程设计任务书课程名称 C语言课程设计课题成绩管理系统专业班级学生姓名学号指导老师任务书下达日期 0000 年0 月0日任务完成日期0000年0月00日C语言课程设计任务书设计课题1:成绩管理系统问题描述:成绩管理系统主要管理学生考试成绩的基本信息。

在系统中,每个学生是一条记录,包括姓名、学号、所选课程,而每个学生对应课程有相应成绩。

系统要对一个有N个学生的班级所选课程成绩统一进行管理。

包括了学生成绩的录入、显示、修改、排序、保存等操作。

1、功能设计要求:1)本系统采用两个结构体数组进行数据存储。

学生结构体应该包括学生的基本信息(学号、姓名、所选课程),课程结构包括各项课程的基本信息(所选的各门课程对应的成绩)2)设计主菜单界面,确定函数个数。

设计菜单应包含以下功能:录入信息(学生基本信息录入、课程成绩基本信息录入)显示(显示学生基本情况和所选课程成绩)修改信息(学生基本信息修改、成绩基本信息修改)成绩统计(各科成绩最高分,平均分)退出系统3)要求:建立两个结构体数组(或链表、文件),包括至少3门课程成绩和5个学生的必要信息,能对数据进行补充、修改。

执行一个具体的功能之后,程序将重新显示菜单。

3、要求:1)用C语言实现系统;2)函数功能要划分好(结构化程序设计);3)界面友好(良好的人机交互),加必要的注释;4)提供程序测试方案。

目录一、系统介绍 (1)二、总体设计 (1)2.1程序模块 (1)2.2.函数分析 (1)2.3.总体结构 (2)三.主要模块的实现 (3)四.程序调试 (6)五.总结与体会 (13)六.源程序清单 (14)一、系统介绍成绩管理系统主要管理学生考试成绩的基本信息。

在系统中,每个学生是一条记录,包括姓名、学号、所选课程,而每个学生对应课程有相应成绩。

系统要对一个有N个学生的班级所选课程成绩统一进行管理。

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

#include<>#include<>#include<>#include<>/* strcmp函数原型包含*/#define N 100/*定义最大学生人数为100*/struct student /*学生结构体定义*/{char no[11]; /*学号,10位*/char name[10];/*姓名,3个汉字*/char grade[10];/*班级*/char pro[20];/*专业*/float score[5];/*储存5门功课的成绩*/float ave;/*储存平均分*/int year;/*入学年*/}stu[N];int num;void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/void init(); /*系统初始化函数*/void newfile(); /*建立新的数据文件*/void read1(); /*从数据文件中读取数据*/void weihu(); /*维护界面函数*/void new1(); /*新增一个学生成绩函数*/void xiugai(); /*修改学生成绩*/void xgcj(int); /*修改成绩*/void delete1(); /*删除学生信息函数*/void tongji(); /*统计界面函数*/void tongji1(); /*计算每个学生平均分*/void tongji2(); /*计算每门课程的平均分*/void paixu1(); /*排序函数*/void paino(); /*按学号排序*/void paiave(); /*按平均分排序*/void paidkcj(); /*按单科成绩排序*/void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩*/void find1(); /*查找界面函数*/int find(char sno[]); /*按学号查找*/int findname(char cname[]);/*按姓名查找*/void findyear(int cyear); /*按入学年查找*/void save(); /*保存文件*/void stop(); /*停顿函数*/void stop() /*停顿函数(公共函数)*/{printf("Press Any Key To Continue...\n");getchar();}void output() /*输出学生成绩函数(公共函数)*/{int i,j;printf("===================================================================\n") ;printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;for(i=0;i<num;i++){printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].p ro,stu[i].year);for(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /*系统初始化函数 */{if(access("",0)) /*判断文件是否存在*/newfile(); /*若不存在,新建数据文件*/elseread1(); /*若存在,读取数据*/}void newfile() /*建立新的数据文件 */{int i;FILE *fp;if((fp=fopen("","wb"))==NULL) /*创建二进制文件*/{printf("创建文件失败,请重新运行程序.\n"); /*显示"创建文件失败,请重新运行程序"*/exit(0); /*终止程序*/}printf("初次运行,进行数据初始化...\n");/*显示"初次运行,进行数据初始化..."*/ stop();printf("请输入学生人数:");/*显示"请输入学生人数:"*/scanf("%d",&num);for(i=0;i<num;i++){printf("请输入第 %d个学生的学号:",i+1); /*显示"请输入第i+1个学生的学号:"*/ getchar(); /*吃回车*/gets(stu[i].no);printf("姓名:"); /*显示"姓名:"*/gets(stu[i].name);printf("班级:"); /*显示"班级:"*/gets(stu[i].grade);printf("专业:"); /*显示"专业:"*/gets(stu[i].pro);printf("入学年n:");/*显示"入学年"*/scanf("%d",&stu[i].year);printf("C语言成绩:");/*显示"C语言成绩"*/scanf("%f",&stu[i].score[0]);printf("高数成绩:");/*显示"高数成绩"*/scanf("%f",&stu[i].score[1]);printf("大物成绩:");/*显示"大物成绩"*/scanf("%f",&stu[i].score[2]);printf("电路成绩:");/*显示"电路成绩"*/scanf("%f",&stu[i].score[3]);printf("模电成绩:");/*显示"模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /*把第i+1名学生成绩写入文件*/ }fclose(fp);printf("========================\n");printf(" 刚才输入的 %d 个数据为:\n",num); /*显示"刚才输入的 num 个数据为:"*/ printf("========================\n\n");output();}void read1() /*从数据文件中读取数据 */{FILE *fp;num=0; /*num为数据文件中实际存储的学生人数*/fp=fopen("","r");if(fp==NULL) /*数据文件不存在*/{printf("文件打开失败!重新运行程序\n"); /*显示"文件打开失败!重新运行程序"*/ exit(0);}while(!feof(fp)) /*文件结束检测"*/{fread(&stu[num],1,sizeof(struct student),fp);num++;}num--;fclose(fp);printf("\t\t\t=======================================\n");printf(" \t\t\t现有 %d 个学生的成绩:\n",num); /*显示"现有 NUM个学生的成绩:"*/ printf("\t\t\t=======================================\n\n");output();}void weihu() /*维护界面函数 */{char c1;while(1){printf("\n\n\n\t\t\t************************\n");printf("\t\t\t* 维护 *\n");printf("\t\t\t* 1. 新增 *\n"); /*新增*/printf("\t\t\t* 2. 删除 *\n"); /*删除(按学号)*/printf("\t\t\t* 3. 修改 *\n"); /*修改*/printf("\t\t\t* 9. 返回 *\n"); /*返回*/printf("\t\t\t************************\n");printf("\t\t\t 请选择:\n");/*请选择:*/c1=getchar();getchar();if(c1=='9')break;switch(c1){case '1':new1();break;case '2':delete1();case '3':xiugai();break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/ }}}void new1() /*新增一个学生成绩函数 */{printf("请输入学号:"); /*显示"请输入学号:"*/gets(stu[num].no);printf("姓名:"); /*显示"姓名:"*/gets(stu[num].name);printf("班级:"); /*显示"班级:"*/gets(stu[num].grade);printf("专业:"); /*显示"专业:"*/gets(stu[num].pro);printf("入学年:");/*显示"入学年"*/scanf("%d",&stu[num].year);printf("C语言成绩:");/*显示"C语言成绩"*/scanf("%f",&stu[num].score[0]);printf("高数成绩:");/*显示"高数成绩"*/scanf("%f",&stu[num].score[1]);printf("大物成绩:");/*显示"大物成绩"*/scanf("%f",&stu[num].score[2]);printf("电路成绩:");/*显示"电路成绩"*/scanf("%f",&stu[num].score[3]);printf("模电成绩:");/*显示"模电成绩"*/scanf("%f",&stu[num].score[4]);num++;printf("\n======================================\n");printf("现有 %d个学生的成绩:\n",num); /*显示"现有 NUM个学生的成绩:"*/ printf("======================================\n\n");output();}void xiugai() /*修改学生成绩*/{char xg[11];int i;printf("\n请输入要修改学生的学号:\n\n");gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break;if(i==num){printf("\n数据文件无该生信息!\n\n请重新输入学号.\n\n"); stop();return;}xgcj(i);}void xgcj(int x) /*修改成绩*/{char xueke[5][10]={"C语言","高数","物理","电路","模电"};char (*p)[10],c;int j,k;p=xueke;for(;;){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 成绩 \n");printf("\t\t\t 语言 \n"); /*C语言*/printf("\t\t\t 2.高数 \n"); /*高数*/printf("\t\t\t 3.物理 \n"); /*大学物理*/printf("\t\t\t 4.电路 \n"); /*电路*/printf("\t\t\t 5.模电 \n"); /*模电*/printf("\t\t\t 9.返回 \n\n"); /*返回上级*/printf("\t\t\t************************************\n\n");printf("\t请选择要修改的成绩(按 1.2.3.");c=getchar();getchar();if(c=='9')break;else if (c>='1'&&c<='5'){k=c-49;printf("\n请输入 %s 成绩:\n",p+k);scanf("%f",&stu[x].score[k]);printf("\n修息为:\n");printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].year);for(j=0;j<5;j++)printf(" %.1f",stu[x].score[j]);printf("\n");}else printf("\n选择有误,请重选!\n\n");stop();}}int find(char sno[]) /*按学号查找 */{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /*判断两个字符串相等*/return i;/*查找成功*/return -1;/*查找失败*/}void delete1() /*删除学生信息函数*/{char cno[11];int i,j;printf("请输入要删除的学生学号:"); /*"请输入要删除的学生学号"*/ gets(cno);i=find(cno);{for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf("现有%d 个学生的成绩:\n",num); /*显示"现有 NUM个学生的成绩:"*/ output();}else {printf("请输入正确的学号. \n");stop();}}void tongji() /*统计界面函数 */{int i;char c2;while(1){printf("\n\n\n\t\t\t*******************************\n");printf("\t\t\t* 统计 *\n");printf("\t\t\t* 1. 学生平均分 *\n"); /*计算学生平均分*/printf("\t\t\t* 2. 课程平均分 *\n"); /*计算每门课程平均分*/ printf("\t\t\t* 9. 返回 *\n"); /*返回*/printf("\t\t\t*******************************\n");printf("\t\t\t请选择:\n");/*请选择:*/c2=getchar();getchar();if(c2=='9') break;{case '1':tongji1();printf("\n\n学生平均分为:\n");printf("===========================================\n");printf("学号姓名入学年平均分\n");printf("===========================================\n");for(i=0;i<num;i++)printf("%s %s %d %.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop();break;case '2':tongji2();break;default:printf("选择有误,请重选\n");/*"选择有误,请重选!"*/}}}void tongji1() /*计算每个学生平均分*/{int i,j;for(i=0;i<num;i++){stu[i].ave=0;for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j];stu[i].ave=stu[i].ave/5;}}void tongji2() /*计算每门课程的平均分*/ {int i,j;float sum;float avec[5]; /*储存每门课的平均分*/for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n各科平均分:\n");/*"各科平均分:"*/ printf("===================================\n"); printf("C语言高数大物电路模电\n");printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /*排序界面*/{char c3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t* 排序 * \n");printf("\t\t\t* 1. 按学号排序 * \n"); /*按学号排序*/printf("\t\t\t* 2. 按平均分排序 * \n"); /*按平均分排序*/ printf("\t\t\t* 3. 按单科成绩排序 * \n"); /*按单科成绩排序*/ printf("\t\t\t* 9. 返回 * \n"); /*返回*/printf("\t\t\t***********************************\n\n");printf("\t请选择:(按1.2.3.9):\n");/*请选择:*/c3=getchar();getchar();if(c3=='9') break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break;default:printf("\n选择有误,请重选!\n\n");/*选择有误,请重选!*/stop();}}}void paino() /*按学号排序*/{ /*按学号从低到高冒泡法排序*/int i,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0)change(j,j+1);printf("\n排序后为:\n"); /*"排序后为:"*/output();}void paiave() /*按平均分排序 */{ /*按平均分从高到低冒泡法排序*/int i,j;tongji1(); /*计算平均成绩*/for(i=0;i<num;i++)for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave)change(j,j+1);printf("\n\t排序后为:\n"); /*"排序后为:"*/printf("\t===============================================\n"); printf("\t学号姓名入学年平均分排名\n");printf("\t===============================================\n");for(i=0;i<num;i++)printf("\t%s %s %d %.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1);stop();}void paidkcj() /*按单科成绩排序*/{char c;int i,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 单科成绩 \n");printf("\t\t\t 语言 \n"); /*C语言*/printf("\t\t\t 2.高数 \n"); /*高数*/printf("\t\t\t 3.物理 \n"); /*大学物理*/ printf("\t\t\t 4.电路 \n"); /*电路*/printf("\t\t\t 5.模电 \n"); /*模电*/printf("\t\t\t 9.返回 \n\n"); /*返回上级*/printf("\t\t\t************************************\n\n");printf("\t请选择:(按1.2.3.");c=getchar();getchar();if(c=='9')break;else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\n选择有误,请重选!\n\n");stop();}}void change(int i,int j) /*交换结构体数组中的两个记录*/{struct student temp;temp=stu[i];stu[i]=stu[j];stu[j]=temp;}void outputx(int k) /*选择输出单科成绩*/{char xueke[5][10]={"C语言","高数","物理","电路","模电"};char (*p)[10]; /*定义一个指向包含10个字符型元素的一维数组的指针变量*/int i;p=xueke;printf("\n\t排序后为:\n");printf("\t===============================================\n");printf("\t学号姓名入学年 %s 排名\n",p+k);printf("\t===============================================\n");for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /*查找界面函数*/{char c4;char cno[11],cname[10];int i,cyear;while(1){printf("\t\t\t*************************************\n");printf("\t\t\t* 查找 *\n");printf("\t\t\t* 1. 按学号查找 *\n"); /*按学号查找*/ printf("\t\t\t* 2. 按姓名查找 *\n"); /*按姓名查找*/ printf("\t\t\t* 3. 按入学年查找 *\n"); /*按入学年查找*/ printf("\t\t\t* 9. 返回 *\n"); /*返回*/printf("\t\t\t*************************************\n");printf("\t\t\t请选择:\n");/*请选择:*/c4=getchar();getchar();if(c4==57) break;switch(c4){case '1':printf("输入学号:\n");/*"输入学号:"*/gets(cno);i=find(cno);panduani(i);break;case '2':printf("输入姓名:\n");/*"输入姓名:"*/gets(cname);i=findname(cname);panduani(i);break;case '3':printf("输入入学年:\n");/*"输入入学年"*/scanf("%d",&cyear);findyear(cyear);stop();break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/ }}}int findname(char cname[]) /*按姓名查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /*判断两个字符串相等*/return i; /*查找成功*/return -1; /*查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf("要查找的学生不存在\n");stop(); }else{printf("查找到的学生信息为:\n");/*"查找到的学生信息为:"*/printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;for(i=0;i<num;i++)if(stu[i].year==cyear) /*判断两个数值相等*/{printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro ,stu[i].year);for(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}}}}void panduani(int i) /*通过i的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf("要查找的学生不存在\n");/*要查找的学生不存在*/stop();}else{printf("查找到的学生信息为:\n");/*"查找到的学生信息为:"*/printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].p ro,stu[i].year);for(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");stop();}}void save() /*保存文件*/{int i;FILE *fp;if((fp=fopen("","wb"))==NULL) /*创建二进制文件*/{printf("创建文件失败,请重新运行程序.\n"); /*显示"创建文件失败,请重新运行程序"*/exit(0); /*终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /*将I+1名学生成绩写入文件*/fclose(fp);}void main() /*主控菜单*/{char c;init();while(1){printf("\t\t*************欢迎登陆学生成绩管理系统************\n");printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,任卓辉****\n");printf("\n\t\t*************************************************\n");printf("\t\t* 主菜单 *\n");printf("\t\t* 1. 维护 *\n"); /*维护*/ printf("\t\t* 2. 统计 *\n"); /*统计*/ printf("\t\t* 3. 排序 *\n"); /*排序*/ printf("\t\t* 4. 查找 *\n"); /*排序*/ printf("\t\t* 9. 存盘退出 *\n"); /*存盘退出*/printf("\t\t*************************************************\n");printf("\t\t请选择:\n");/*请选择:*/c=getchar();getchar();switch(c){case '1':weihu();break;case '2':tongji();break;case '3':paixu1();break;case '4':find1();break;case '9':save();exit(0);break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/ }}}。

相关文档
最新文档