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个学生的班级所选课程成绩统一进行管理。

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

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

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用和重要性。

2. 学生掌握C语言中的基本数据类型、运算符、控制结构等基础知识,并能运用到成绩管理系统的设计与实现中。

3. 学生能掌握文件操作、数组、结构体等C语言高级特性,用以存储、查询和管理学生成绩。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的学生成绩管理系统。

2. 学生通过实际操作,培养解决问题的能力,包括分析需求、设计算法、编写程序和测试代码。

3. 学生通过小组合作,提升团队协作能力和项目管理的实践技能。

情感态度价值观目标:1. 学生在学习过程中培养对编程的兴趣和热情,增强对信息技术的认同感。

2. 学生通过解决实际问题,体会编程带来的成就感,激发进一步学习的动力。

3. 学生在团队合作中学会相互尊重、倾听和沟通,培养积极向上的情感态度。

课程性质:本课程是计算机科学与技术学科的一门实践性课程,强调理论与实践相结合,注重培养学生的实际操作能力和创新思维。

学生特点:高年级学生对C语言有一定的基础知识,具备一定的编程能力和问题解决能力。

教学要求:课程要求学生在理解基本概念的基础上,通过项目驱动的教学方式,动手实践,将理论知识转化为实际应用。

通过课程学习,学生应达到以上设定的知识、技能和情感态度价值观目标,为后续的深入学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、运算符、控制结构等,确保学生具备扎实的编程基础。

2. 文件操作:文件打开、关闭、读写等操作,为成绩管理系统中的数据持久化提供支持。

3. 数组与字符串:数组的使用、字符串处理,用于存储和管理学生成绩信息。

4. 结构体:自定义结构体类型,用于表示学生信息和成绩。

5. 函数:模块化编程,提高代码可读性和可维护性。

6. 项目实践:设计并实现一个学生成绩管理系统,涵盖以下功能:- 录入学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 成绩排名- 成绩统计分析7. 教学大纲:- 第一周:C语言基础知识回顾,数组与字符串操作- 第二周:结构体、函数,文件操作- 第三周:项目需求分析,设计系统框架- 第四周:编写代码,实现各功能模块- 第五周:系统测试,优化代码,撰写项目报告教学内容与教材关联性:本课程教学内容紧密结合教材中的相关章节,如数据类型、控制结构、文件操作等,确保学生所学知识的系统性和科学性。

C语言课程设计报告(学生成绩管理系统)

C语言课程设计报告(学生成绩管理系统)

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语言课程设计_学生成绩管理系统_完整版

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

#include<stdio.h>#include<stdlib.h>#include<io.h>#include<string.h>/* 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(charame[]);/*按查找*/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("stu.dat",0)) /*判断文件是否存在*/newfile(); /*若不存在,新建数据文件*/elseread1(); /*若存在,读取数据*/}void newfile() /*建立新的数据文件 */{int i;FILE *fp;if((fp=fopen("stu.dat","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("stu.dat","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 1.C 语言 \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.4.5.9):\n");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].p ro,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() /*删除学生信息函数*/{charo[11];int i,j;printf("请输入要删除的学生学号:"); /*"请输入要删除的学生学号"*/gets(cno);i=find(cno);if(i!=-1){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;switch(c2){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 1.C 语言 \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.4.5.9):\n");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;charo[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(charame[]) /*按查找*/{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("stu.dat","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");/*"选择有误,请重选!"*/ }}}。

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

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

c语言学生成绩管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言学生成绩管理系统的开发方法,培养学生的编程能力和实际应用能力。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、函数、文件操作等编程知识,了解学生成绩管理系统的需求分析和系统设计方法。

2.技能目标:学生能够运用C语言独立完成一个学生成绩管理系统的设计和实现,具备一定的编程实践能力和问题解决能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对技术改变生活的认识,培养学生的创新精神和团队合作意识。

二、教学内容教学内容以教材《C语言程序设计》为主线,结合实际应用需求,安排如下:1.C语言基础知识:数据类型、运算符、控制结构、数组、字符串等。

2.函数与模块化编程:函数定义与调用、局部变量与全局变量、递归、文件操作等。

3.数据结构:链表、栈、队列、树等。

4.学生成绩管理系统设计:需求分析、系统设计、模块划分、编程实现等。

5.调试与优化:调试方法、性能分析、代码优化等。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。

1.讲授法:用于传授C语言基本语法和编程原理,帮助学生建立扎实的理论基础。

2.案例分析法:通过分析实际案例,让学生了解学生成绩管理系统的需求分析和设计方法,提高学生的实际应用能力。

3.实验法:安排实验课,让学生动手编写代码,培养学生的编程实践能力和问题解决能力。

四、教学资源教学资源包括教材、多媒体资料、实验设备等,以支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:《C语言程序设计》。

2.多媒体资料:教学PPT、视频教程、在线编程练习等。

3.实验设备:计算机、网络设备、编程环境等。

五、教学评估教学评估是检验学生学习成果的重要手段,主要包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

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

C语言课程设计学生成绩管理系统
安全性:系统采用用户身份验证和权限管理,确保数据的安全性和完整性。
PART THREE
学生信息包括:姓名、学号、性别、班级、成绩等 学生信息录入方式:手动输入、文件导入、数据库查询等 学生信息录入界面设计:简洁明了,易于操作 学生信息录入注意事项:确保信息准确无误,避免重复录入
查询结果:显示学生的基本 信息、成绩、课程等信息
系统故障分类:硬件故障、软件故障、网络故障等 故障处理流程:发现故障、分析原因、采取措施、恢复系统 应急预案:制定应急预案、定期演练、及时更新 数据备份与恢复:定期备份数据、灾难恢复计划
汇报人:
,a click to unlimited possibilities
汇报人:
CONTENTS
PART ONE
PART TWO
目标:实现学 生成绩的高效
管理
功能:学生信 息管理、成绩 录入、成绩查 询、成绩统计、 成绩分析、成
绩排名等
系统用户:学生、教师、管理员
权限设置:学生只能查看自己的成绩,教师可以查看和管理所有学生的成绩,管理员可以管理所有用户和权限
查询和报表的界面设计:简 洁明了,易于操作
查询和报表的数据处理:高效、 准确,保证数据的一致性和完 整性
PART SIX
数据备份:定期备份数据,防止数据丢失 数据恢复:在数据丢失或损坏时,能够快速恢复数据 备份策略:制定合理的备份策略,确保数据的完整性和一致性 备份工具:使用专业的备份工具,提高备份效率和可靠性
删除方式:通过学生ID进行 删除
删除条件:学生信息存在且 未被删除
删除操作:在数据库中执行 删除语句
删除结果:学生信息从数据库 中被删除,系统提示删除成功
PART FOUR

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

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

#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>typedef struct student /*定义一个单链表*/ {char sno[10];char name[10];int Chinese;int Math;int English;int sum;float avg;struct student *next;}student1,*grade;grade get_info(grade L) //输入学生信息{student1 *s,*p=NULL,*q;int flag,n,i;char choice='Y';while(choice!='N'&&choice!='n'){printf("\n请输入要录入的学生个数:");scanf("%d",&n);for(i=1;i<=n;i++){s=(student1 *)malloc(sizeof(student1));printf("\n请输入学生的学号:\n");scanf("%s",&s->sno);printf("\n请输入学生的姓名:\n");scanf("%s",&s->name);printf("\n请输入学生的语文成绩:\n");scanf("%d",&s->Chinese);printf("\n请输入学生的数学成绩:\n");scanf("%d",&s->Math);printf("\n请输入学生的英语成绩:\n");scanf("%d",&s->English);s->sum=s->Chinese+s->Math+s->English;s->avg=(float)s->sum/3;if(L!=NULL){q=L;p=L;while(q){flag=strcmp(q->sno,s->sno);if(flag==0){printf("该学生已存在!\n");break;}q=q->next;}if(flag!=0){while(p->next) p=p->next;p->next=s;p=s;s->next=NULL; /*尾结点的指针置空,下同!*/}}else{L=s;s->next=NULL;}}printf("\n是否继续?(Y/N或y/n):");scanf("%s",&choice);system("cls");}return L;}sno_select(grade L) /*按学生学号查找*/{student1 *p=L;char num[10],choice='Y';int i=1,flag;while(choice!='N'&&choice!='n'){printf("\n请输入该学生的学号:");scanf("%s",&num);while(p){flag=strcmp(p->sno,num);if(flag==0){printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);printf("***************************************************************\n");break;}else p=p->next;}if(flag) printf("\n不存在该学号的学生!\n\n");printf("继续查找?(Y/N或y/n):");scanf("%s",&choice);system("cls");}return 0;}grade_select(grade L) /*按分数段查询*/{int n,m,j,k=0,x=0,y=0;char choice='Y';student1 *p=L;while(choice!='N'&&choice!='n'){printf("\n可查找的科目的菜单如下:\n");printf("\t 1.语文 2.数学 3.英语\n");printf("请选择(输入序号即可):");scanf("%d",&j);printf("\n请输入一个分数段,即输入n,m的值(n<m):");scanf("%d%d",&n,&m);printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){if(j==1){x=1;y=1;if(p->Chinese>=n&&p->Chinese<=m){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);k=1;}}if(j==2){k=1;y=1;if(p->Math>=n&&p->Math<=m){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);x=1;}}if(j==3){k=1;x=1;if(p->English>=n&&p->English<=m){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);}}p=p->next;}printf("\n*************************************************************\n");if(L==NULL) printf("该系统还没有存放数据!\n\n");else{if(k==0) printf("没有学生的语文成绩在这个分数段上\n\n");if(x==0) printf("没有学生的数学成绩在这个分数段上\n\n");if(y==0) printf("没有学生的英语成绩在这个分数段上\n\n");}k=0;x=0;y=0;printf("继续查找?(Y/N或y/n):");scanf("%s",&choice);system("cls");}}statistics(grade L) /*统计函数*/{student1 *p=L;int i=0;char choice='N';float all_avg=0;while(choice!='Y'&&choice!='y'){while(p){all_avg=all_avg+p->avg;p=p->next;i++;}printf("\n===================================================\n");printf("该班级总人数为:%d\n",i);if(L==NULL) printf("该班级的平均分为:0\n");else printf("该班级的平均分为:%5.2f\n",all_avg/i);printf("===================================================\n");printf("\n退出?(Y或y):");scanf("%s",&choice);}system("cls");}grade delete_grade(grade L) /*删除指定学生成绩函数*/{student1 *p=L,*q=L;int i=1,flag;char choice='Y',num[10];while(choice!='N'&&choice!='n'){printf("\n===================================================\n");if(L==NULL) printf("该系统中不存在任何数据\n\n");else{printf("\n请输入想要删除的学生学号:");scanf("%s",&num);while(p){flag=strcmp(p->sno,num);if(flag==0){if(q==p){L=q->next;free(q);}else{while(q->next!=p) q=q->next;q->next=p->next;free(p);}break;}p=p->next;}if(flag) printf("\n不存在该学生");else printf("\n删除成功!");printf("\n===================================================\n");}p=L;q=L;printf("继续删除?(Y/N或y/n):");scanf("%s",&choice);system("cls");}return L;}asc_order_grade(grade L) /*升序排序函数*/{int k,x=1,n=0,m,y;float z;student1 *p,*q,*s=L;char t[10],choice;while(s) /*计算链表数据个数n*/{s=s->next;n++;}while(x){choice='N';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("****************************************\n");printf("请选择(输入菜单序号即可):");scanf("%d",&k);system("cls");if(k==1) /*按语文成绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->Chinese>=q->Chinese){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按语文成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==2) /*按数学成绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->Math>=q->Math){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按数学成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==3) /*按英语成绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->English>=q->English){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按英语成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==4) /*按总成绩升序排序*/ {while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->sum>=q->sum){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按总成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==5) /*按平均绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->avg>=q->avg){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按平均成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==6){system("cls");break;}else printf("请输入正确的序号!!\n\n");}}void menu() /*菜单函数*/{printf("\t\t|----------------------------------------|\n");printf("\t\t| 欢迎进入学生成绩管理系统|\n");printf("\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| 5.删除指定学生成绩|\n");printf("\t\t| 6.成绩升序排序|\n");printf("\t\t| 7.退出|\n");printf("\t\t|****************************************|\n"); }int main(){int i=10;grade L=NULL;while(i!=8){menu();printf("根据菜单,请输入想要执行的功能的数字代号:");scanf("%d",&i);system("cls");switch(i){case 1:L=get_info(L);break;case 2:sno_select(L);break;case 3:grade_select(L);break;case 4:statistics(L);break;case 5:L=delete_grade(L);break;case 6:asc_order_grade(L);break;case 7:printf("\n\n\t\t\t谢谢使用!\n\n\t\t\t 再见!\n");break;default:printf("请输入正确的序号!!\n\n");}}}。

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

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

中国地质大学C语言课程设计院系:工程学院姓名:、、俊学号:班号: 051163指导老师:日期: 2016-12-4目录一、题目要求二、需求分析三、总体设计四、详细设计1.菜单函数和主函数2.各功能模块设计(1)输入模块(2)追加模块(3)修改模块(4)删除模块(5)修改成绩模块(6)排序模块(7)浏览模块3.公共函数(1)保存函数(2)加载函数(3)学号输入函数(4)输入三科成绩函数(5)求总分函数(6)输入一个记录的函数(7)修改成绩函数(8)修改记录函数(9)显示数据结构项目函数(10)显示一个记录的函数五、上机操作六、总结学生成绩管理系统一.题目要求对在校某班学生几门课程的考试成绩进行统一管理。

每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。

(1)建立一个文件,以班为单位存储学生记录。

(2)将允许的操作分为四种,以A、B、C、D、E、F为标志(若设置菜单操作更佳):A:插入一个新的学生记录(录入学生信息);B:修改学生记录;C:删除一个学生记录;D:登记成绩;E:修改成绩;F:浏览全班成绩。

(3)计算学生的总成绩。

(4)按学号排序输出全班成绩表。

二.需求分析学生记录用文件存储,因而要提供文件的输入、输出等操作;要实现插入一个新生的学生记录,因而要提供文件的插入操作;要实现学生记录的修改和删除,以及登记成绩修改成绩,因而要提供文件记录的修改和删除操作;要浏览全班成绩,故要提供显示操作;计算学生总成绩需要提供简单的统计操作;要按学号排序输出全班成绩表,因而要提供排序操作;另外还应提供键盘式选择菜单实现功能选择。

三.总体设计根据上面的需求分析,可以将这个系统的设计分为8个模块,数据输入,添加数据,修改数四.详细设计1.菜单函数和主函数将各个功能模块设置为菜单选项,方便调用,且执行完每部分功能模块后能够方便返回到系统界面.[流程图]void menu() /*主界面*/{int w1;char n; /*.变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围*/ do{puts("\t\t****************MENU****************\n\n");puts("\t\t\t\tA.Enter new data");puts("\t\t\t\tB.Addition data");puts("\t\t\t\tC.Modify data");puts("\t\t\t\tD.Delete data");puts("\t\t\t\tE.Modify score");puts("\t\t\t\tF.Order by number");puts("\t\t\t\tG.Browse all");puts("\t\t\t\tH.Exit");puts("\n\n\t\t************************************\n");printf("Choice your number(A-H):[ ]\b\b");n=getchar();printf("\n");if(n<'A'||n>'H') w1=1; /*对选择的数字作判断*/else w1=0;}while(w1==1);switch(n) /*选择功能*/{case 'A':enter();break; /*输入模块*/case 'B':add();break; /*添加模块*/case 'C':modify();break; /*修改数据模块*/case 'D':del ();break; /*删除模块*/case 'E':modify_score();break; /*修改成绩模块*/case 'F':order();break; /*排序模块*/case 'G':browse();break; /*浏览模块*/case 'H':exit(0); /*退出模块*/}}main() /*主函数*/{menu();}2.各功能模块设计(1) 输入模块[数据分析]单看各数据信息,学号﹑年龄以及数学﹑英语﹑物理各科成绩和总分均是整型,姓名可以采用字符型数组.数据信息存放在文件中,一条记录对应一个学生,既符合习惯也方便信息管理.把学生的学号﹑姓名﹑年龄﹑各科成绩及总分作为结构体成员,存放若干个学生信息就用结构体数组.struct student{int num;char name[20];int age;int Math;int English;int Physical;long int sum;}stu[N];/*stu[N]中每个数组元素对应一个学生*/[注意]stu[N] 中的N为学生个数,程序中采用宏定义的方式,可以随时在源程序宏定义中修改,本程序宏定义#define N 30[流程图][程序]/**********************输入模块********************/void enter() /*输入模块*/{int i,n;printf("How many students(1-%d)?:",N);scanf("%d",&n); /*要输入的记录个数*/printf("\nEnter data now\n\n");for(i=0;i<n;i++){printf("\n Input %dth student record.\n",i+1);input(i); /*调用输入函数*/}if(i!=0) save(n); /*调用保存函数*/printf_back(); /*一个任务结束时让用户选择是浏览还是返回*/}(2)追加模块[需求分析]该模块的功能是用户需要增加新的学生记录, 请从键盘输入并逐条写到原来的输入文件中.[流程图][程序]/***************************添加模块**************************/void add() /*添加模块*/{int i,n,m,k;FILE *fp;n=load();printf("How many students are you want to add(1-%d)?:",N-n);scanf("%d",&m); /*输入要添加的记录个数*/k=m+n;for(i=n;i<k;i++){printf("\n Input %dth student record.\n",i+1);input(i); /*调用输入函数*/}if((fp=fopen("score.txt","ab"))==NULL) /*以ab方式打开文件,添加保存*/{printf("Cannot open file.\n");}for(i=n;i<k;i++) /*输出到文件*/if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("file write error.\n");fclose(fp);printf_back(); /*一个任务结束时的选择浏览还是返回*/}(3)修改模块[需求分析]该模块的功能是显示所有学生信息,考虑到记录很多,故采用分屏显示。

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

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

c学生成绩管理系统课程设计一、课程目标知识目标:1. 理解学生成绩管理系统的作用和重要性,掌握其基本功能模块;2. 学习数据库的基本操作,如数据的增、删、改、查;3. 掌握运用编程语言(如Python)实现学生成绩管理系统的基本功能。

技能目标:1. 能够运用所学知识设计并实现一个简单的学生成绩管理系统;2. 学会使用数据库存储和管理数据,提高数据处理能力;3. 培养编程思维,提高问题解决能力。

情感态度价值观目标:1. 培养学生对信息技术的兴趣,激发学习积极性;2. 增强学生的团队协作意识,培养合作解决问题的能力;3. 培养学生的创新意识,鼓励敢于尝试、不断探索的精神。

课程性质:本课程属于信息技术学科,旨在让学生通过实践操作,掌握数据库和编程语言的基本知识,提高实际问题解决能力。

学生特点:六年级学生已经具备一定的计算机操作能力,对新鲜事物充满好奇心,善于合作与分享。

教学要求:结合学生特点,注重实践操作,以任务驱动教学,让学生在完成具体任务的过程中,掌握知识技能,培养情感态度价值观。

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

二、教学内容1. 学生成绩管理系统的基本概念与作用- 介绍学生成绩管理系统的定义、功能及其在教育教学中的应用。

2. 数据库基础- 学习数据库的基本概念,如数据表、字段、记录等;- 掌握数据库的基本操作,包括创建、修改、删除数据表,以及数据的增、删、改、查。

3. 编程语言入门- 介绍Python编程语言的基本语法和结构;- 学习使用Python进行简单的数据处理和文件操作。

4. 学生成绩管理系统设计与实现- 分析学生成绩管理系统的需求,设计系统功能模块;- 运用所学知识,实现一个简单的学生成绩管理系统。

教学大纲安排:第一课时:学生成绩管理系统基本概念与作用第二课时:数据库基础(一)—— 数据表与字段第三课时:数据库基础(二)—— 数据操作第四课时:Python编程语言入门第五课时:学生成绩管理系统设计与实现(一)第六课时:学生成绩管理系统设计与实现(二)教学内容与教材关联性:本教学内容与教材中关于数据库、编程语言以及信息系统设计的相关章节紧密关联,确保教学内容的科学性和系统性。

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)学生成绩管理系统C语言(附完整源代码)课程设计报告学生成绩管理系统院系:专业:班级:完成日期: 2009年1月03日设计题目:学生成绩管理系统目录1、题目描述2、算法设计/设计思想3、结构框图、各模块的功能描述4、主体思想:5、程序的,,,流程图6、源代码1.题目描述设计一个简单的学生成绩管理系统,要求有简单的界面,程序段要分清模块,该程序应该:(1)输入学生成绩,求总分,平均分,以及排序。

(2)查询学生单科成绩,总分和平均成绩;(3)添加、修改学生成绩具有下列功能:(4)实现保存与查看功能2.算法设计/设计思想利用二维数组——定义stu[][]存储学生学号、各科成绩,总分,平均分,名次,利用文件来存储,读取数据。

详细合作是::负责inputx(),print1(),input();:卖力文件的储备和读取,main(),System(),Idea()和各挪用函数之间的连;:卖力find1(),find2(),find3(),find31(),Find();:负责del(),add(),change1(),Change();前期调试由小组配合卖力。

3.结构框图、各模块的功能描述3.1建立成就表3.1.1 input()功用是输退学生的信息,便于当前的查询、欣赏。

3.2增加3.2.1 add( )功用是向inputy()增加新的内容。

3.3.2 chance( )对单科成绩进行修改。

3.3查询3.3.1可根据学号,科目,名次,进行查询。

3.3.2查询内容包孕:该学生的各课成就、、均匀分。

3.4删除3.4.1能够输退学号删除一逻辑学生的一课成就。

3.5浏览成绩单3.5.1通过此print1()可以查看所有学生的各课成绩、总分、平均分和名次。

3.6文件()3.6.1保存以上所输入的信息以达到既是关闭窗口信息也不会丢失信息的目的。

3.6.2随时打开,修改文件。

3.7.退出功用是退出主菜单退出系意见评述功能菜单统输入增加及改查找功用退出功用菜单成就功用查输排查找学学添修某某生生加改XXX某成成就绩科绩绩绩成就按按按名学科次号目查查查找找找四、主体思想:1、斟酌到此步伐量大代码多,以是用函数挪用,分几小我去完成。

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

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

c学生成绩管理系统课程设计一、课程目标知识目标:1. 让学生理解学生成绩管理系统的重要性,掌握其基本概念和功能。

2. 使学生掌握数据库的基本操作,如数据录入、查询、更新和删除。

3. 帮助学生掌握数据表之间的关系,了解外键的作用和使用方法。

技能目标:1. 培养学生运用数据库技术设计和实现学生成绩管理系统的能力。

2. 培养学生运用所学知识解决实际问题的能力,如优化数据库性能、处理数据异常等。

3. 提高学生的团队协作能力,学会在项目中分工合作、共同完成任务。

情感态度价值观目标:1. 培养学生对计算机技术的兴趣和热情,提高其学习积极性。

2. 培养学生认真负责的工作态度,养成良好的编程习惯。

3. 增强学生的自信心,使其勇于面对挑战,克服困难。

课程性质分析:本课程属于信息技术学科,结合数据库知识,针对学生成绩管理系统进行设计与实践。

学生特点分析:学生已具备一定的计算机操作能力和编程基础,具有较强的学习能力和探究精神。

教学要求:1. 紧密联系课本知识,注重实践操作,提高学生的实际应用能力。

2. 结合实际案例,引导学生掌握学生成绩管理系统的设计方法和步骤。

3. 注重培养学生的团队协作能力和沟通能力,提高其在项目中的参与度。

二、教学内容1. 学生成绩管理系统概述- 了解学生成绩管理系统的背景和意义- 掌握系统的主要功能和模块划分2. 数据库基础知识- 复习数据库的基本概念和原理- 学习数据库设计的基本步骤和方法3. 数据表设计与操作- 学习创建数据表,定义字段和数据类型- 掌握外键约束的使用,建立数据表之间的关系4. 数据库操作语言- 学习SQL语言的基本语法和操作命令(如SELECT、INSERT、UPDATE、DELETE)- 掌握数据库的查询、插入、更新和删除操作5. 学生成绩管理系统功能实现- 分析系统需求,设计系统功能模块- 学习使用数据库技术实现学生信息、成绩管理等功能6. 系统测试与优化- 掌握系统测试的基本方法,对系统进行功能测试和性能测试- 学习优化数据库性能,提高系统运行效率7. 项目实践与团队协作- 分组进行项目实践,分工合作完成学生成绩管理系统的设计与实现- 学习在项目中沟通协作,解决问题,提高团队工作效率教学内容安排与进度:本课程教学内容分为七个部分,按照以下进度进行:1. 第1周:学生成绩管理系统概述、数据库基础知识2. 第2周:数据表设计与操作3. 第3周:数据库操作语言4. 第4周:学生成绩管理系统功能实现5. 第5周:系统测试与优化6. 第6周:项目实践与团队协作7. 第7周:课程总结与评价教材关联:本教学内容与教材《数据库原理与应用》第3章至第6章内容密切相关,涵盖了数据库设计、数据操作、SQL语言及系统测试等知识点。

C语言课程设计_学生成绩管理系统 完整版·优选.

C语言课程设计_学生成绩管理系统 完整版·优选.

#include<stdio.h>#include<stdlib.h>#include<io.h>#include<string.h>/* 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].pro,stu[i].year) ;for(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /*系统初始化函数*/{if(access("stu.dat",0)) /*判断文件是否存在*/newfile(); /*若不存在,新建数据文件*/elseread1(); /*若存在,读取数据*/}void newfile() /*建立新的数据文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","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("stu.dat","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 1.C 语言\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.4.5.9):\n");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].ye ar);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);if(i!=-1){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;switch(c2){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 1.C 语言\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.4.5.9):\n");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].pro,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("stu.dat","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");/*"选择有误,请重选!"*/}}}最新文件---------------- 仅供参考--------------------已改成word文本--------------------- 方便更改。

  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");/*"选择有误,请重选!"*/ }}}。

相关文档
最新文档