c语言程序设计之学生成绩管理系统精华版
C语言课程设计--学生成绩管理系统
![C语言课程设计--学生成绩管理系统](https://img.taocdn.com/s3/m/6332046565ce050877321318.png)
*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(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语言程序设计-学生成绩管理系统](https://img.taocdn.com/s3/m/4ef1a08484868762caaed590.png)
题目学生成绩管理系统一、功能1.每一条记录包括一个学生的学号、姓名、语数外3门成绩、平均成绩2.输入功能:可以一次完成有限(不大于2000)条记录的输入3.显示功能:完成全部学生记录的显示4.查找功能:完成按学号或姓名查找学生记录,并显示5.排序功能:按学生学号或平均成绩进行排序6.保存功能:将学生记录保存在Information.txt文件中7.读取功能:将保存在文件中的学生记录读取出来8.有一个清晰美观界面来调用各个功能二、要求1.整个系统均用C语言实现2.利用指针、结构体数组或链表来实现学生成绩的数据结构设计3.系统具有输入、显示、查询、修改、删除、排序、保存、读取等基本功能4.系统的各个功能模块都用函数的形式来实现5.可以将学生成绩信息保存在文件中6.可以将学生信息从文件中读取出来三、设计内容整个学生成绩管理系统由主函数及12个子函数构成,实现学生成绩录入、显示、查询、排序、修改、保存、读取和删除共8项功能,各函数功能相信说明如下:1.主函数int main()利用无限次循环while和switch实现对各个函数的调用,使用时根据输入的数字来调用相应的函数2. 显示主菜单函数void DispMainMenu()这是一个无参函数,用来显示程序主菜单,用户通过输入对应功能前的数字来实现相应的功能3. 学生成绩录入函数int InformationInput(STUDENT stu[],int cn)这是一个有返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int cn为当前学生人数,返回值为当前学生人数。
其作用是输入有限个学生的成绩信息。
算法:定义3个变量,num用来存放本次录入学生人数,i、j为循环变量。
由键盘输入学生人数赋值给num,判断num是否大于MAX_NUM(2000),若大于,则提示输入人数太多,函数返回值0;若不大于,则依次输入num个学生信息。
c语言程序设计之学生成绩管理系统精华版
![c语言程序设计之学生成绩管理系统精华版](https://img.taocdn.com/s3/m/39f2c3dfad51f01dc281f19e.png)
// 111.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include<stdlib.h>#include<conio.h>#include<string.h>#define A Ls->s[i].kaoshi*0.7+Ls->s[i].pingshi*0.3#define B Ls->s[i].kaoshi1*0.7+Ls->s[i].pingshi1*0.3#define MAX 1000#include <Windows.h>BOOL SetConsoleColor(WORD wAttributes){HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);if (hConsole == INVALID_HANDLE_VALUE)return FALSE;return SetConsoleTextAttribute(hConsole, wAttributes);}//使用色彩typedef struct{char name[20];int num;int classes;int age;char sex[10];int bianhao;char mingcheng[20];int xuefen;int kaoshi;int pingshi;int bianhao1;char mingcheng1[20];int xuefen1;int kaoshi1;int pingshi1;}student;typedef struct{student s[MAX];int length;}Lstudent;void welcome()/*界面函数*/{SetConsoleColor(FOREGROUND_RED);printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇◣\n");printf(" ▇欢迎进入成绩管理系统▇\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇◤\n");printf(" \n"); SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◣\n");printf(" ◢▇▇▇0.读取信息▇▇▇◣\n");printf(" ◢▇▇▇▇ 1.输入成绩▇▇▇▇◣\n");printf(" ◢▇▇▇▇▇ 2.输出成绩▇▇▇▇▇◣\n"); printf(" ◢▇▇ 3.插入成绩▇▇◣\n"); printf(" ◢▇▇▇ 4.删除成绩▇▇▇◣\n"); printf(" ▇▇▇▇ 5.查找成绩▇▇▇▇\n"); printf(" ▇▇▇▇ 6.修改成绩▇▇▇▇\n"); printf(" ◥▇▇▇7.不及格名单▇▇▇◤\n"); printf(" ◥▇▇8.平均成绩及排名▇▇◤\n"); printf(" ◥▇▇▇▇9.存储信息▇▇▇▇◤\n");printf(" ◥▇▇▇10.退出成绩管理系统▇▇▇◤\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◤\n");}void read(Lstudent *Ls,FILE *fp){system("cls");if((fp=fopen("score system.txt","rt+"))==NULL){printf("无法打开此文件\n");printf("请按回车键返回主界面");getchar();}else{while(!feof(fp))putchar(getc(fp));printf("按回车键返回主界面");getchar();getchar();}fclose(fp);}void input(Lstudent *Ls)/*输入学生的成绩*/{ int n;int i;system("cls");printf(" 请输入学生数:");scanf("%d",&n);Ls->length=n;for(i=0;i<n;i++){printf(" 输入第%d个学生的数据:\n",i+1); printf(" 姓名:");scanf("%s",&Ls->s[i].name);printf(" 学号:");scanf("%d",&Ls->s[i].num);printf(" 班级:");scanf("%d",&Ls->s[i].classes);printf(" 年龄:");scanf("%d",&Ls->s[i].age);printf(" 性别:");scanf("%s",&Ls->s[i].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi1);}printf("录入成绩完成,请按回车键返回主界面"); getchar();getchar();}void output(Lstudent *Ls)/*输出学生的成绩信息*/ {int i;system("cls");for(i=0;i<Ls->length;i++){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}printf("请按回车键回到主界面");getchar();getchar();}void insert(Lstudent *Ls)/*插入学生成绩信息*/{int n,i,l;system("cls");l=Ls->length;printf(" 请输入要插入的学生数:");scanf("%d",&n);for(i=0;i<n;i++){printf(" 请输入插入第%d个学生的数据:\n",i+1);printf(" 姓名:");scanf("%s",&Ls->s[i+1].name);printf(" 学号:");scanf("%d",&Ls->s[i+1].num);printf(" 班级:");scanf("%d",&Ls->s[i+1].classes);printf(" 年龄:");scanf("%d",&Ls->s[i+1].age);printf(" 性别:");scanf("%s",&Ls->s[i+1].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi1);}Ls->length+=n;printf("插入成绩完成,请按回车键返回主界面"); getchar();getchar();}void delet(Lstudent *Ls)/*按学号删除*/{int i=0,j,x;system("cls");printf(" 请输入要删除的学生的学号:"); scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){for(j=i;j<Ls->length;j++)Ls->s[j]=Ls->s[j+1];Ls->length--;printf(" 已成功删除");}elseprintf(" 对不起,无此学生成绩,无法删除\n");printf("请按回车键返回主界面");getchar();getchar();}void search(Lstudent *Ls)/*按学号查找*/{int i=0,x;system("cls");printf(" 请输入要查找学生的学号:");scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}elseprintf(" 未找到此学生\n");printf("请按回车键回到主界面");getchar();getchar();}void save(Lstudent *Ls,FILE *fp)/*将学生成绩信息存储在文件score system.txt中*/{int i;system("cls");if((fp=fopen("score system.txt","wt+"))==NULL)printf("无法打开此文件\n");elsefor(i=0;i<Ls->length;i++){fprintf( fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━┳\n");fprintf( fp,"┃姓名┃学号┃班级┃年龄┃性别┃\n");fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━╋\n");fprintf( fp,"┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━┫\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");} //注中括号在循环语句中的使用printf("信息已存储在名为“score system.txt的文件中”,按回车键返回主界面");fclose(fp);getchar();getchar();}void aver(Lstudent *Ls)//计算平均分并排序{int i=0,n,j,k;float a[20],t;for(i=0;i<Ls->length;i++)//逐个赋值,千万不能少{a[i]=(A+B)/2;}system("cls");for(k=0;k<Ls->length;k++) //此处为冒泡排序法for(j=1;j<Ls->length;j++)for(i=0;i<Ls->length-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("┏━━━┳━━━┳━━━━┳\n");printf("┃名次┃姓名┃平均分┃\n");printf("┣━━━╋━━━╋━━━━╋\n");for(i=0;i<Ls->length;i++)// 已输入学生长度为Ls->length{ printf("┃%-4d ┃%-6.6s┃%-4.1f ┃\n",i+1,Ls->s[i].name,a[i]);printf("┣━━━╋━━━╋━━━━╋\n");//注意有调用顺序问题}getchar();getchar();}void nopass(Lstudent *Ls)//? 列出不及格学生清单(学号、姓名、不及格的课程和成绩){int n;system("cls");int i;printf("不及格学生信息\n");for(i=0;i<Ls->length;i++){if(A<60){printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng,A);printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n"); }if(B<60){ printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng1,B);}printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");}printf("请按回车键回到主界面");getchar();getchar();}void change(Lstudent *Ls)//修改成绩{int i=0,n;printf("请输入要修改的学号:");scanf("%d",&n);if(Ls->s[i].num==n){printf("\n 请输入学生姓名:");fflush(stdin);scanf("%s",&Ls->s[i].name);printf("\n 请输入学生班级:");fflush(stdin);scanf("%s",&Ls->s[i].classes);printf("\n 请输入学生年龄:");fflush(stdin);scanf("%d",&Ls->s[i].age);printf("\n 请输入学生性别:");fflush(stdin);scanf("%s",&Ls->s[i].sex);printf("\n 请输入课程1编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi);printf("\n 请输入课程2编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao1);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng1);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen1);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi1);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi1);printf("修改成功!");printf("\n");}elseprintf("未找到该学号\n");printf("请按回车键回到主界面");getchar();getchar();return;}int _tmain(int argc, _TCHAR* argv[]){printf("=====================================================\n");printf(" === 学生成绩管理系统===\n");printf(" === ===\n");printf(" === 设计者:===\n");printf(" === ===\n");printf(" === 指导老师:===\n");printf(" === ===\n");printf(" === 中南大学信息科学与工程学院===\n");printf(" === ===\n");printf(" === 2011级===\n");printf(" === ===\n");printf(" === 2012年6月===\n");printf("=====================================================\n");getchar();int choice;Lstudent Ls;FILE *fp=NULL;while(1){system("cls");welcome();printf("请选择您要的操作:");scanf("%d",&choice);switch(choice){case 0:read(&Ls,fp);break;case 1:input(&Ls);break;case 2:output(&Ls);break;case 3:insert(&Ls);break;case 4:delet(&Ls);break;case 5:search(&Ls);break;case 6: change (&Ls);break;case 7:nopass (&Ls);break;case 8:aver(&Ls);break;case 9:save(&Ls,fp);break;//修改成绩case 10:printf("谢谢使用!\n");exit(0); default:printf("选择有误,请重新输入\n"); }}return 0;}。
C语言课程设计_学生成绩管理系统
![C语言课程设计_学生成绩管理系统](https://img.taocdn.com/s3/m/85c964c385868762caaedd3383c4bb4cf7ecb7ad.png)
部署步骤:安装 操作系统、安装 数据库、安装应 用软件等
维护方案:定期 备份数据、定期 检查系统、定期 更新软件等
系统维护方案
定期备份数据: 确保数据安全, 防止数据丢失
定期更新系统: 确保系统安全, 防止病毒和恶意 软件攻击
定期检查硬件: 确保硬件正常运 行,防止硬件故 障
定期培训员工: 确保员工熟悉系 统操作,提高工 作效率
06 系统测试与优化
单元测试
目的:验证单个模块或功能的正确 性
测试内容:功能测试、性能测试、 兼容性测试、安全性测试
添加标题
添加标题
添加标题
添加标题
测试方法:白盒测试、黑盒测试、 灰盒测试
测 试 工 具 : JU n it 、 Te s t NG 、 Selenium等
集成测试
目的:验证系统各模块间的接口和交互是否正常 测试方法:黑盒测试、白盒测试、灰盒测试 测试内容:功能测试、性能测试、安全测试、兼容性测试 测试工具:JMeter、Selenium、Appium等
系统性能优化
性能测试:使用自 动化工具进行性能 测试,如JMeter、 LoadRunner等
性能瓶颈分析:分 析性能测试结果, 找出性能瓶颈,如 数据库查询、网络 延迟等
性能优化:针对性 能瓶颈进行优化, 如优化数据库查询 、减少网络延迟等
性能监控:建立性 能监控体系,实时 监控系统性能,及 时发现和解决性能 问题
学生成绩管理系统是一个用 于管理学生成绩的软件系统
Байду номын сангаас
系统采用模块化设计,易于 维护和扩展
系统支持多种数据格式,如 Excel、CSV等,方便数据
导入和导出
系统目标
提高学生成绩管理效率 方便教师查询、统计和分析学生成绩 提供个性化学习建议和指导 促进家校沟通,提高家长对学生成绩的了解
学生成绩管理系统c语言代码(供参考)
![学生成绩管理系统c语言代码(供参考)](https://img.taocdn.com/s3/m/557b9927974bcf84b9d528ea81c758f5f61f2924.png)
C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。
h"#include"string。
h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit大head)//增加学生{unit*p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”二〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("二〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q二二NULL)n二1;while(q){if(q->date.number==m){prinTf("二>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL)n=1;}}}p一〉date。
C语言程序设计-学生成绩管理系统
![C语言程序设计-学生成绩管理系统](https://img.taocdn.com/s3/m/7e52e5757f21af45b307e87101f69e314332fa62.png)
C语言程序设计-学生成绩管理系统C语言课程设计报告课题题目:学生信息管理系统班级:信卓11801姓名:**题目一. 题目: (3)二.设计目的 (3)三.总体设计 (3)四.详细设计 (7)1.动态创建链表 (9)2.排序 (10)3.查询信息 (11)4.修改学生信息 (13)6.输出所有学生的所有数据 (15)7.统计各分数段的人数 (16)五.调试与测试 (17)六.课程设计心得与体会 (24)一.题目:学生信息管理系统要求:从文件中读取原始数据,并将修改后的数据保存在一个新的文件当中。
功能:1.浏览所有学生的所有信息2.用姓名和学号查询学生的信息3.用姓名和学号修改学生的信息4.用姓名和学号删除学生5.统计各个课程分数段的人数6.统计总分和各个课程的最高分、最低分以及对应的姓名二.设计目的如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。
随着科学技术的不断提高,计算机科学日渐成熟,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。
所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。
掌握: 1.掌握动态创建链表,并实现对数据的删除,检索,修改。
1.增强工程化意识,提高c语言实践能力。
三.总体设计(1)程序源文件分为:1.student.h 包含所有的头文件以及定义2.function.cpp 实现各个函数的功能3.main.cpp 主函数4.data.txt 学生原始数据(2)主函数实现菜单的选择:使用swicth语句实现菜单的选择1.浏览学生信息2.查询学生信息3.修改学生信息4.删除学生信息5.各科成绩6.最高分最低分以及对应的姓名(3)函数包括:1.struct student * create() //用动态链表建立基础的学生信息库从文件中将学生信息读取出来2.void sort(struct student *head) //排序3.void locatename(struct student *head) //通过姓名查询信息4.void locatenum(struct student *head) //通过学号查询信息5.struct student * delname(struct student *head) //通过姓名删除学生信息6.struct student * delnum(struct student *head) //通过学号删除学生信息7.void changename(struct student *head) //通过姓名去修改学生数据8.void changenum(struct student *head) //通过学号去修改学生数据9.void filein(struct student *head) //保存到文件中10.void print(struct student *head) //打印所有学生信息11.void ABCD(struct student *head) //统计各分段的人数12.void max(struct student * head) //总分以及各个课程的最高分,最低分以及对应的姓名对于创建链表和删除学生这两个函数需要返回head创建链表时返回head:其他函数中都传入了一个参数head那么都可以访问到链表中的所有数据删除学生返回head:当删除第一个学生时,即把头给删了这时需要换头head = delname(head); head= delnum(head);其它函数使用void类型即可四.详细设计使用结构体链表实现上述要求,在头文件中定义结构体,分为数据域和指针域。
C语言课程设计-学生成绩管理系统-完整版
![C语言课程设计-学生成绩管理系统-完整版](https://img.taocdn.com/s3/m/a50b15f1192e45361166f505.png)
#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;/* 入学年 *//* 通过 i 的值,判断信息要查找的信息是否存在 *//* 输出学生成绩函数(公共函数) */ /* 系统初始化函数 */ /* 建立新的数据文件 *//* 从数据文件中读取数据 */ /* 维护界面函数 */ /* 新增一个学生成绩函数 */ /* 修改学生成绩 */ /* 修改成绩 *//* 删除学生信息函数 */ /* 统计界面函数 */ /* 计算每个学生平均分 */ /* 计算每门课程的平均分 */ /* 排序函数 */ /* 按学号排序 */ /* 按平均分排序 */ /* 按单科成绩排序 *//* 交换结构体数组中的两个记录 *//* 选择输出单科成绩 */ /* 查找界面函数 */ /* 按学号查找 */ int findname(char cname[]);/* 按姓名查找 */ void findyear(int cyear); /* 按入学年查找 */ void save(); /* 保存文件 */ void stop(); /* 停顿函数 */void stop()/* 停顿函数 (公共函数) */{printf("Press Any Key To Continue...\n"); getchar();}}stu[N]; int num; void panduani(int); void output(); voidinit(); 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(); voidchange(int,int); void outputx(int); void find1(); int find(char sno[]);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) Jfor(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){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("\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");/* 请选*/printf("\n\n\n\t\t\t* ********************* **\n"); c1=getchar();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(;;){**\n\n"); printf("\t\t\t 成绩 printf("\t\t\t 1.C 语言 printf("\t\t\t 2.高数printf("\t\t\t 3.物理 printf("\t\t\t 4.电路 printf("\t\t\t5.模电 printf("\t\t\t9.返回printf("\n");printf("\t\t\t** ******************************** printf("\t\t\t** ******************************** \n");\n"); /*C 语言 */ \n"); /*高数 */\n"); /* 大学物理 */ \n"); /*电路 */ \n"); /*模电 */ \n\n"); /* 返回上级 */**\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 语言 高数 大物电路模电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("\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;printf("\t\t\t* 统计 *\n");printf("\t\t\t*1. 学生平均分 *\n"); /* 计算学生平均分 */ printf("\t\t\t*2. 课程平均分 *\n"); /* 计算每门课程平均分 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\n\n\n\t\t\t ***************************** **\n"); printf("\t\t\t* **************************** **\n"); /* 统计界面函数 */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");( 按 1.2.3.4.5.9):\n");printf("\t 请选择:c=getchar();getchar();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* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* 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);查找1. 按学号查找2. 按姓名查找3. 按入学年查找 9. 返回************************************\n");*\n");*\n"); /* 按学号查找 */ *\n"); /* 按姓名查找 */ *\n"); /* 按入学年查找 */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)Jfor(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");/* 请选择: */ 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");/*" 选择有误,请重选! "*/printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,****\n"); printf("\n\t\t*************************************************\n");printf("\t\t* 、 t t • I 、/, 主菜单*\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语言程序设计报告 ---学生成绩管理系统
![C语言程序设计报告 ---学生成绩管理系统](https://img.taocdn.com/s3/m/59771fdabb0d4a7302768e9951e79b8968026894.png)
C语言程序设计报告 ---学生成绩管理系统一、背景学生的学习成绩是一起重要的信息,为了管理好学生的学习成绩,学校及老师在教学过程中,需要有一个对学生成绩进行统计与记录,用于注册成绩,查询发放证书等工作,需要一个学生成绩管理系统来进行辅助操作。
本文主要介绍我校用C语言实现的学生成绩管理系统。
二、系统概述学生成绩管理系统主要由三个模块组成,即:数据录入模块、数据处理模块和数据输出模块。
数据录入模块:将每个学生的个人资料、成绩数据及相关信息,用户图形用户界面录入进系统;数据处理模块:利用程序能实现学生的成绩,统一的处理成绩,例如排名、查找,等;数据输出模块:该模块是整个系统的核心模块,将输出内容包括:学生基本信息、每门课程的各项成绩、平均成绩、综合排名等相关信息,通过程序。
三、系统功能介绍1.数据录入:学生的基本信息及考试成绩等信息的输入,用于后续数据处理及学生成绩的查询。
2.成绩查询:具备基本的查询功能,可以根据学生的学号及姓名查询学生的成绩,以及详细的学生考试成绩。
3.信息统计:可以进行全体学生的各项考试成绩信息综合统计,统计分析每个班级、每个专业、每门课程的考试情况,以及学生的排名,让用户知道整体的学习情况及有效管理学生的学习。
4.安全设置:系统具备安全设置功能,确保用户的信息安全,保证用户的登录权限,为系统及用户提供足够的安全保障,确保系统的数据安全。
四、系统分析系统分析阶段主要包含了分析及设计的步骤,为了更好的实现学生成绩管理的功能,系统分析中分析出学生信息、班级信息、考试信息等相关信息,以便为系统设计提供理论依据。
系统设计是系统分析的一个重要环节,通过设计,能够实现系统的功能,系统设计中定义出系统的基本流程及外部接口,使得系统能够正常运行。
五、系统实现六、系统测试学生成绩管理系统在功能测试过程中,通过实际的操作来测试学生成绩管理系统,测试的主要内容是系统的基本功能及系统的数据安全性,通过实际的操作,测试员可以详细的检查系统是否符合预期的功能,以及系统的正确度,从而保证系统的可靠性及安全性。
C语言-学生成绩管理系统
![C语言-学生成绩管理系统](https://img.taocdn.com/s3/m/2985d07da4e9856a561252d380eb6294dc882245.png)
在TC环境下吧,界面是一片的黑。
可以实现成绩的录入、查询、排序、物理删除、永久删除……记不太清楚了,当时我们的报告要求手写的,也没留下什么电子资料。
C语言还是很好学很好用的,希望对大家有帮助!#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct student{int id;char name[10];int age;char sex[10];char birthady[20];char address[50];char tel[15];char E_mail[30];}st[50];int i=0;void shuru() {char a;do{printf("\ninput num:");scanf("%d",&st[i].id);fflush(stdin);printf("\ninput name:");gets(st[i].name);printf("\ninput age:");scanf("%d",&st[i].age);fflush(stdin);printf("\ninput sex:");gets(st[i].sex);fflush(stdin);printf("\ninput birth:");gets(st[i].birthady);fflush(stdin);printf("\ninput address:");gets(st[i].address);printf("\ninput tell:");scanf("%s",&st[i].tel);printf("\ninput E_mail:");scanf("%s",&st[i].E_mail);printf("\nWhether input another student's information ?(y/n)");fflush(stdin);a=getchar();i++;}while(a=='y' && i<=50);}void xianshi(){int j;printf("======================XUESHENGXINXIGUANLIXITONG=============================\n");printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");for(j=0;j<i;j++)printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].address,st[j].tel,st[j].E_mail);printf("============================================ZHI ZUO REN:sunqi=========\n");}void clearscreen(){getchar();system("cls");}void paixu(){int j,k;int temp;for(j=0;j<i;j++){for(k=0;k<i-1-j;k++){if(st[k].age<st[k+1].age){temp=st[k].age;st[k].age=st[k+1].age;st[k+1].age=temp;}}}xianshi();}void chazhao(){int m=0;char name[20],b;do{printf("\ninput name of student:");fflush(stdin);gets(name);for(m=0;m<20;m++){if(strcmp(name,st[m].name)==0){printf("\n\tThe student is found in %d\n",m+1);break;}}if(m>=20)printf("\n\tCan not find this student\n");else{printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].address,st[m].tel,st[m].E_mail); }printf("\nFind another student?(y/n)");fflush(stdin);b=getchar();}while(b=='y');}void shanchu(){char name[20],c;int a,b;do{printf("\nInput the name of delet student:\n");fflush(stdin);gets(name);for(a=0;a<i;a++){if(strcmp(name,st[a].name)==0)break;}for(b=a;b<i;b++)st[b]=st[b+1];if(a>i)printf("\tCan not find this student\n");else{i--;xianshi();}printf("\nContinue delet a student?(y/n) ");fflush(stdin);c=getchar();}while(c=='y');}void charu(){shuru();paixu();}void main(){int change;do{system("cls");printf("*****************XUESHENG XINXI GUANLIXITONG *****************\n"); printf(" 1: shuru xuesheng xingxi\n");printf(" 2: xianshi xuesheng xinxi\n");printf(" 3: chazhao xuesheng xinxi\n");printf(" 4: shanchu xuesheng xinxi\n");printf(" 5: charu xuesheng xinxi\n");printf(" 6: paixu xuesheng xinxi\n");printf(" 7: tuichu chengxu\n");printf("***************************************************************\n"); fflush(stdin);printf("shuru gongneng xuanxiang:");scanf("%d",&change);switch(change){case 1:shuru(); break;case 2:xianshi(); break;case 3:chazhao(); break;case 4:shanchu(); break; case 5:charu(); break; case 6:paixu();break; case 7:break;}getch();}while(change!=7); }。
c语言程序设计学生成绩管理系统
![c语言程序设计学生成绩管理系统](https://img.taocdn.com/s3/m/03b91374cbaedd3383c4bb4cf7ec4afe04a1b107.png)
c语⾔程序设计学⽣成绩管理系统实验题⽬:学⽣成绩管理系统⼀、实验⽬的1.熟悉c语⾔的编译连接和运⾏过程。
2.掌握c语⾔的数据类型,熟悉整型、实型、字符型变量的定义⽅式及如何给它们赋值。
3.掌握if语句及switch语句的运⽤⽅法及嵌套应⽤⽅法。
4.掌握实现循环结构的三种语句while、do-while.、for 的使⽤。
5.掌握函数的定义⽅法和调⽤⽅法。
6.能够采⽤模块化思想调试程序。
⼆.实验内容1.编写程序并进⾏调试运⾏。
2.输⼊学⽣资料,并保存于⽂件。
每个学⽣包含信息如:姓名、学号、性别、物理成绩、数学成绩、英语成绩、计算机成绩。
3.对已存⼊的学⽣信息进⾏更新操作,包括更新学⽣信息信息、删除某个学⽣信息和修改学⽣信息。
4.通过按学⽣姓名的⽅式查询学⽣信息。
5.输⼊某学⽣各门成绩进⾏统计。
6 对学⽣物理成绩排序。
7.最后输出学⽣信息,供需要时打印。
⼆、需求分析1.该程序可⽤于对学⽣的基本信息的存储、更新、查询、输出、统计、排序等操作。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加⼀个或多个学⽣信息,也可对个别学⽣信息进⾏适当的删除或修改。
以便随时更新学⽣信息。
3.程序中设计的查询功能可根据需要从若⼲数据中查询某信息,四、概要设计1、⽅案设计对系统进⾏分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进⾏本系统的设计—⾃顶向下、逐步细化,将系统设计任务分解出许多⼦功能模块进⾏设计结构图如下:五功能模块的说明1 输⼊初始学⽣信息:其中包括学⽣姓名,学号,性别,物理数学英语计算机成绩等相关信息;可⽤函数cin(stu *p1)来实现此操作。
2 查询模块:可⽤stu *lookdata(stu *p1)来实现。
找到就输出此学⽣全部信息包括学⽣物理数学英语计算机的成绩。
3 插⼊模块:可⽤insert()来实现。
其中通过学号的⼤⼩⽐较的,并且以此来排序。
4 输出学⽣的信息及成绩:通过学⽣的姓名来查看学⽣的语⽂数学英语计算机的有关成绩,同时也可以分别通过paverage() maverage() eaverage() comaverage()来输出物理数学英语计算机等成绩的平均分最⾼分最低分。
学生成绩管理系统C语言版
![学生成绩管理系统C语言版](https://img.taocdn.com/s3/m/d3acd85beef9aef8941ea76e58fafab069dc44a9.png)
1、2、编一程序,能计算每个学生的总分和平均分。
3、编一程序,能按输入要求打印各门课程的最高分和最低分的同学。
4、编一程序,能将五个学生的成绩按总分进行降序排序。
5、编一程序,能删除一个学生的记录;6、编一程序,能增加一个学生的记录;建立一个菜单模式的学生信息管理系统,完成功能如下:一、建立主菜单*****学生信息管理系统*****1、输入学生信息2、输出学生信息3、计算每个同学成绩的总分与平均分4、对学生成绩进行排序5、输出每门功课最高分的同学信息6、输出每门功课最低分的同学信息7、退出系统主菜单界面:二、将综合练习一中的程序改写为子程序并能通过主菜单进行调用。
先上图开发环境windows 7,vc 6.0 开始贴代码:/*************** 张海山* 10软件2班* 安庆职业技术学院* QQ:136533295******************/#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include"string.h"typedef struct lode{int id;char name[20];char sex[10];int score[4];struct lode *next;}lode,*linklist;linklist input(linklist head)//输入学生信息{char cmd='y';int t,i,l;char name[10];char sex[2];int score[3]={0};//int sum;linklist p;while(cmd=='y'||cmd=='Y'){p=(linklist)malloc(sizeof(lode));printf("请输入学生的编号\n");fflush(stdin);scanf("%d",&t);p->id=t;printf("请输入学生的姓名:\n");fflush(stdin);scanf("%s",p->name);/* l=strlen(p->name);p->sex[l]='\0';/* for(i=0;i<l;i++){p->name[i]=name[i];}*/printf("请输入学生的性别:\n");fflush(stdin);scanf("%s",p->sex);/* l=strlen(p->sex);p->sex[l]='\0';/* for(i=0;i<l;i++){p->sex[i]=sex[i];}*/fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&score[0]);p->score[0]=score[0];fflush(stdin);scanf("%d",&score[1]);p->score[1]=score[1];fflush(stdin);scanf("%d",&score[2]);p->score[2]=score[2];fflush(stdin);p->next=head->next;head->next=p;printf("是否继续(y)&返回主菜单(n) y&n\n");fflush(stdin);scanf("%c",&cmd);}return head;}linklist print(linklist head){linklist p;int i=1;p=head->next;printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");while(p!=NULL){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);p=p->next;/*if(p==NULL)break;printf("%d\n",i);*/}//printf("%d\n",i);//printf("i=%d\n",i);return 0;}void avg(linklist head){int sum=0;double avg=0;linklist p;p=head->next;while(p!=NULL){sum=0;sum=p->score[1]+p->score[2]+p->score[0];avg=sum/3;printf("%s的总分为:%d\t平均分为:%.2lf\n",p->name,sum,avg);p=p->next;}}void maxmin(linklist head){linklist p;intmax1=0,max1index,min1=head->next->score[0],min1index,max2=0,max2index,min2=head->nex t->score[1],min2index,max3=0,max3index,min3=head->next->score[2],min3index;p=head->next;while(p!=NULL){if(max1<(p->score[0])){max1=p->score[0];max1index=p->id;}if(min1>=(p->score[0])){min1=p->score[0];min1index=p->id;}if(max2<(p->score[1])){max2=p->score[1];max2index=p->id;}if(min2>=(p->score[1])){min2=p->score[1];min2index=p->id;}if(max3<(p->score[2])){max3=p->score[2];max3index=p->id;}if(min3>=(p->score[2])){min3=p->score[2];min3index=p->id;}p=p->next;}printf("英语:\n");p=head->next;while(p!=NULL){if((p->id)==max1index)printf("英语最高分为:%d\t姓名为:%s\n",p->score[0],p->name);if((p->id)==min1index)printf("英语最低分为:%d\t姓名为:%s\n",p->score[0],p->name);p=p->next;}printf("数学:\n");p=head->next;while(p!=NULL){if((p->id)==max2index)printf("数学最高分为:%d\t姓名为:%s\n",p->score[1],p->name);if((p->id)==min2index)printf("数学最低分为:%d\t姓名为:%s\n",p->score[1],p->name);p=p->next;}printf("语文:\n");p=head->next;while(p!=NULL){if((p->id)==max3index)printf("语文最高分为:%d\t姓名为:%s\n",p->score[2],p->name);if((p->id)==min3index)printf("语文最低分为:%d\t姓名为:%s\n",p->score[2],p->name);p=p->next;}}void rank(linklist head){linklist p;int i=0,j,k,n=0;int sum[100];p=head->next;while(p!=NULL){n++;sum[i]=p->score[1]+p->score[2]+p->score[0];i++;p=p->next;}printf("n=%d\n",n);for(i=1;i<6;i++){for(j=0;j<6-i;j++)if(sum[j]<sum[j+1]){k=sum[j];sum[j]=sum[j+1];sum[j+1]=k;}}printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");for(i=0;i<n;i++){p=head->next;while(p!=NULL){if(sum[i]==(p->score[1]+p->score[2]+p->score[0])){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);break;}p=p->next;}}}void add(linklist head){linklist p,q;p=head;q=(linklist)malloc(sizeof(lode));printf("请输入要插入学生的序号:\n");fflush(stdin);scanf("%d",&q->id);fflush(stdin);printf("请输入学生的姓名:\n");scanf("%s",q->name);fflush(stdin);printf("请输入学生性别:\n");scanf("%s",q->sex);fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&q->score[0]);fflush(stdin);scanf("%d",&q->score[1]);fflush(stdin);scanf("%d",&q->score[2]);fflush(stdin);q->next=NULL;while(p->next!=NULL){p=p->next;}p->next=q;//p->next=NULL;}void del(linklist head){linklist p,temp;int j;p=head->next;temp=head;printf("请输入要删除学生记录的序号:\n");scanf("%d",&j);while(p!=NULL){if(p->id!=j){p=p->next;temp=temp->next;}else{temp->next=p->next;free(p);break;}}}void main(){int cmd;linklist head;head=(linklist)malloc(sizeof(lode));head->next=NULL;do{printf("\n\n |***************学生成绩管理程序***************|\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 主菜单|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 请输入选择项目:|\n");printf(" | |\n");printf(" | 1、输入学生成绩|\n");printf(" | |\n");printf(" | 2、输出学生成绩|\n");printf(" | |\n");printf(" | 3、计算总成绩、平均成绩|\n");printf(" | |\n");printf(" | 4、求最高分、最低分|\n");printf(" | |\n");printf(" | 5、排序|\n");printf(" | |\n");printf(" | 6、增加记录|\n");printf(" | |\n");printf(" | 7、删除记录|\n");printf(" | |\n");printf(" | 0、退出系统|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");scanf("%d",&cmd);switch(cmd){case 0:break; //退出系统case 1: input(head);break; //输入学生信息case 2: print(head);break; //输出学生信息case 3: avg(head);break; //求总成绩、平均数case 4: maxmin(head);break; //最高分case 5: rank(head);break; //排序case 6: add(head);break; //增加记录case 7: del(head);break; //删除记录default :printf("您输入错误!\n");}}while(cmd!=0);}因为是C语言版的要严格按照样子输入哦要不然就会出现不可预料的结果。
C语言课程设计学生成绩管理系统
![C语言课程设计学生成绩管理系统](https://img.taocdn.com/s3/m/599543cdbdeb19e8b8f67c1cfad6195f312be8de.png)
PART THREE
学生信息包括:姓名、学号、性别、班级、成绩等 学生信息录入方式:手动输入、文件导入、数据库查询等 学生信息录入界面设计:简洁明了,易于操作 学生信息录入注意事项:确保信息准确无误,避免重复录入
查询结果:显示学生的基本 信息、成绩、课程等信息
系统故障分类:硬件故障、软件故障、网络故障等 故障处理流程:发现故障、分析原因、采取措施、恢复系统 应急预案:制定应急预案、定期演练、及时更新 数据备份与恢复:定期备份数据、灾难恢复计划
汇报人:
,a click to unlimited possibilities
汇报人:
CONTENTS
PART ONE
PART TWO
目标:实现学 生成绩的高效
管理
功能:学生信 息管理、成绩 录入、成绩查 询、成绩统计、 成绩分析、成
绩排名等
系统用户:学生、教师、管理员
权限设置:学生只能查看自己的成绩,教师可以查看和管理所有学生的成绩,管理员可以管理所有用户和权限
查询和报表的界面设计:简 洁明了,易于操作
查询和报表的数据处理:高效、 准确,保证数据的一致性和完 整性
PART SIX
数据备份:定期备份数据,防止数据丢失 数据恢复:在数据丢失或损坏时,能够快速恢复数据 备份策略:制定合理的备份策略,确保数据的完整性和一致性 备份工具:使用专业的备份工具,提高备份效率和可靠性
删除方式:通过学生ID进行 删除
删除条件:学生信息存在且 未被删除
删除操作:在数据库中执行 删除语句
删除结果:学生信息从数据库 中被删除,系统提示删除成功
PART FOUR
学生成绩管理系统(c语言课设)
![学生成绩管理系统(c语言课设)](https://img.taocdn.com/s3/m/a3f94674f46527d3240ce012.png)
for(j1=0;j1<=imax-1;j1++)
if(strcmp(name,stu[j1].name)==0)
{ printf("学号 姓名 C语言成绩 数学成绩 英语成绩 总分 平均分 名次\n ");
printf("*9 output record 0 quit system *\n");
printf("**********************************************************\n");
do { printf("输入c语言成绩:\t"); scanf("%d",&stu[i].cgrade);}while(stu[i].cgrade>100||stu[i].cgrade<0);
do { printf("输入数学成绩:\t"); scanf("%d",&stu[i].mgrade);}while(stu[i].mgrade>100||stu[i].mgrade<0);
else if(i1==0) { }
else if(i1==1)
{
if(im>0&&im<=30)
{
for (i=0;i<=im-1;i++)
{
do { printf("输入学号:\t");scanf("%s",&num);}while(strlen(num)>=10);
学生成绩管理系统的C语言程序设计
![学生成绩管理系统的C语言程序设计](https://img.taocdn.com/s3/m/a240c5c44b73f242326c5f2f.png)
#include ”stdio。
h”/*定义学生结构体*/struct Student{ char ID[20]; /*学号*/char Name[20]; /*姓名*/float Mark1; /*数学成绩*/float Mark2; /*程序设计成绩*/float Mark3; /*总分成绩*/float Average; /*平均分*/};/*声明学生数组及学生数量*/struct Student students[1000];int num=0;/*求平均值*/float Avg(struct Student stu){return (stu.Mark1+stu。
Mark2+stu。
Mark3)/3;}/*通过学号返回数组下标*/int Student_SearchByIndex(char id[]){int i;for (i=0;i<num;i++){if (strcmp(students[i].ID,id)==0){return i;}}return —1;}/*通过姓名返回数组下标*/int Student_SearchByName(char name[]){int i;for (i=0;i<num;i++){if (strcmp(students[i]。
Name,name)==0){return i;}}return —1;}/*显示单条学生记录*/void Student_DisplaySingle(int index){printf(”%10s%10s%8s%8s%8s%10s\n”,”学号",”姓名","成绩",”成绩”,”成绩”,"平均成绩”);printf("-—-———-—————--—-——-----——-—---—----—-—-----—--——-——---——-——--\n");printf(”%10s%10s%8.2f%8。
C语言程序课程设计--学生成绩管理系统
![C语言程序课程设计--学生成绩管理系统](https://img.taocdn.com/s3/m/54cc28f15122aaea998fcc22bcd126fff7055df8.png)
C语言程序课程设计--学生成绩管理系统
学生成绩管理系统是一种利用计算机程序来储存、处理和管理学生成绩信息的系统。
它可以收集、整理学生的相关成绩信息,如学生的学号、姓名、年级及其对应的期末考试
成绩,实现对这些成绩的存储、修改、查询和汇总统计等功能。
它可以不仅可以查询当前
成绩,还可以查询学生在不同学期的前若干学期的成绩状况,方便学校管理者和老师快速
了解到学生的学习状况。
首先,学生成绩管理系统需要建立学生信息数据库,储存学生的基本信息,以及课程、考试成绩的数据表,用以储存和查询学生的考试成绩。
比如有学生信息表:学号,姓名,
班级、学科成绩表:报考科目,期末考试成绩,考试时间等等。
接着,学生成绩管理系统需要实现一些基本功能用于操作这些数据表。
根据学校成绩
管理的需要,系统可以实现新增学生、新增科目成绩、查询学生成绩、修改学生成绩等功能,为学校提供必要的成绩管理支持。
其次,学生成绩管理系统还可以进行学生成绩的统计分析。
可以对学生在各科考试中
的情况进行统计分析,分析学生的表现,以便学校更方便、更全面地了解学生的学习状况。
最后,学生成绩管理系统为管理者和老师提供更便捷、高效的管理效率,减少管理者
管理工作时间,节约学校的人力资源,有助于改善学子的学习水平。
综上所述,学生成绩管理系统对于教育管理者而言,无疑是一个非常重要的系统,为
学校管理者和老师提供了快速准确的学生成绩信息,帮助他们更好地了解学生的成绩状况,进而提高教育管理的精准性和质量。
学生成绩管理系统C语言(附完整源代码)
![学生成绩管理系统C语言(附完整源代码)](https://img.taocdn.com/s3/m/078d7d3a5e0e7cd184254b35eefdc8d376ee1498.png)
学生成绩管理系统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语言程序设计》学生成绩管理系统](https://img.taocdn.com/s3/m/533865097fd5360cbb1adb17.png)
《C语言程序设计》课程设计报告设计题目:学生成绩管理系统计算机与数据科学学院2018年 1月 10 日1 开发背景及意义 (3)1.1开发背景 (3)1.2 开发意义 (3)1.3开发环境 (3)2 系统分析及设计 (4)2.1系统需求分析 (4)2.2系统整体设计 (4)2.2.1 结构体设计 (4)2.2.2 函数设计 (5)3 流程图 (6)3.1 添加信息 (7) (7)3.2 删除信息 (8)3.3 修改信息 (9)3.4按姓名查看信息 (10)4 测试与分析 (12)4.1 测试数据选择 (12)4.3 程序源代码 (15)5 总结5.1收获与体会5.2 参考文献5.3总结1 开发背景及意义1.1开发背景学生成绩管理对于每一个学校来说有着重要的意义,随着科技的发达,学生成绩的管理由原先的手写账本发展到现今的电脑系统输入并统计,不仅大大减少了时间与精力,也是学生成绩管理更系统化,便捷化,清晰化。
学生成绩系统主要对学生的各科成绩进行在计算机上的信息存储和处理,从而简化用户的工作量1.2 开发意义C语言是国内外广泛使用的一种计算机语言,学会使用C语言进行程序设计是计算机工作者的一项基本功。
对于我们大学生来说,学习这样一门“C程序设计教程”更是必要的。
本课程设计“学生成绩管理系统”就是通过学习《C程序设计》采用Visual C++作为编译环境,是程序编译和运行的。
本系统的总体思想基于结构化的程序设计。
应用高级语言程序设计中的基本控制结构,如循环和选择,着重实现管理系统的增、删、改、查等典型的管理功能。
程序设计是一门实践性很强的课程,既要掌握概念,又要动手编译,还要上机调试运行,通过这一次的课程设计我们从实践中更进一步的学习和了解C语言,当然由于个人的技术水平有限,在这途中遇到很多问题,程序也未能做到很完美,望见谅!1.3开发环境本报告设计的学生成绩管理系统主要是负责给教师和学生提供了一个在Windows操作系统上运行的管理平台,学生成绩管理者可以对其学生编号、姓名以及学号、各科成绩构成进行增加、删除、修改,查找等管理操作,还可以对各科合计排序浏览。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// 111.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include<stdlib.h>#include<conio.h>#include<string.h>#define A Ls->s[i].kaoshi*0.7+Ls->s[i].pingshi*0.3#define B Ls->s[i].kaoshi1*0.7+Ls->s[i].pingshi1*0.3#define MAX 1000#include <Windows.h>BOOL SetConsoleColor(WORD wAttributes){HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);if (hConsole == INVALID_HANDLE_VALUE)return FALSE;return SetConsoleTextAttribute(hConsole, wAttributes);}//使用色彩typedef struct{char name[20];int num;int classes;int age;char sex[10];int bianhao;char mingcheng[20];int xuefen;int kaoshi;int pingshi;int bianhao1;char mingcheng1[20];int xuefen1;int kaoshi1;int pingshi1;}student;typedef struct{student s[MAX];int length;}Lstudent;void welcome()/*界面函数*/{SetConsoleColor(FOREGROUND_RED);printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇◣\n");printf(" ▇欢迎进入成绩管理系统▇\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇◤\n");printf(" \n"); SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◣\n");printf(" ◢▇▇▇0.读取信息▇▇▇◣\n");printf(" ◢▇▇▇▇ 1.输入成绩▇▇▇▇◣\n");printf(" ◢▇▇▇▇▇ 2.输出成绩▇▇▇▇▇◣\n"); printf(" ◢▇▇ 3.插入成绩▇▇◣\n"); printf(" ◢▇▇▇ 4.删除成绩▇▇▇◣\n"); printf(" ▇▇▇▇ 5.查找成绩▇▇▇▇\n"); printf(" ▇▇▇▇ 6.修改成绩▇▇▇▇\n"); printf(" ◥▇▇▇7.不及格名单▇▇▇◤\n"); printf(" ◥▇▇8.平均成绩及排名▇▇◤\n"); printf(" ◥▇▇▇▇9.存储信息▇▇▇▇◤\n");printf(" ◥▇▇▇10.退出成绩管理系统▇▇▇◤\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◤\n");}void read(Lstudent *Ls,FILE *fp){system("cls");if((fp=fopen("score system.txt","rt+"))==NULL){printf("无法打开此文件\n");printf("请按回车键返回主界面");getchar();}else{while(!feof(fp))putchar(getc(fp));printf("按回车键返回主界面");getchar();getchar();}fclose(fp);}void input(Lstudent *Ls)/*输入学生的成绩*/{ int n;int i;system("cls");printf(" 请输入学生数:");scanf("%d",&n);Ls->length=n;for(i=0;i<n;i++){printf(" 输入第%d个学生的数据:\n",i+1); printf(" 姓名:");scanf("%s",&Ls->s[i].name);printf(" 学号:");scanf("%d",&Ls->s[i].num);printf(" 班级:");scanf("%d",&Ls->s[i].classes);printf(" 年龄:");scanf("%d",&Ls->s[i].age);printf(" 性别:");scanf("%s",&Ls->s[i].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi1);}printf("录入成绩完成,请按回车键返回主界面"); getchar();getchar();}void output(Lstudent *Ls)/*输出学生的成绩信息*/ {int i;system("cls");for(i=0;i<Ls->length;i++){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}printf("请按回车键回到主界面");getchar();getchar();}void insert(Lstudent *Ls)/*插入学生成绩信息*/{int n,i,l;system("cls");l=Ls->length;printf(" 请输入要插入的学生数:");scanf("%d",&n);for(i=0;i<n;i++){printf(" 请输入插入第%d个学生的数据:\n",i+1);printf(" 姓名:");scanf("%s",&Ls->s[i+1].name);printf(" 学号:");scanf("%d",&Ls->s[i+1].num);printf(" 班级:");scanf("%d",&Ls->s[i+1].classes);printf(" 年龄:");scanf("%d",&Ls->s[i+1].age);printf(" 性别:");scanf("%s",&Ls->s[i+1].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi1);}Ls->length+=n;printf("插入成绩完成,请按回车键返回主界面"); getchar();getchar();}void delet(Lstudent *Ls)/*按学号删除*/{int i=0,j,x;system("cls");printf(" 请输入要删除的学生的学号:"); scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){for(j=i;j<Ls->length;j++)Ls->s[j]=Ls->s[j+1];Ls->length--;printf(" 已成功删除");}elseprintf(" 对不起,无此学生成绩,无法删除\n");printf("请按回车键返回主界面");getchar();getchar();}void search(Lstudent *Ls)/*按学号查找*/{int i=0,x;system("cls");printf(" 请输入要查找学生的学号:");scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}elseprintf(" 未找到此学生\n");printf("请按回车键回到主界面");getchar();getchar();}void save(Lstudent *Ls,FILE *fp)/*将学生成绩信息存储在文件score system.txt中*/{int i;system("cls");if((fp=fopen("score system.txt","wt+"))==NULL)printf("无法打开此文件\n");elsefor(i=0;i<Ls->length;i++){fprintf( fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━┳\n");fprintf( fp,"┃姓名┃学号┃班级┃年龄┃性别┃\n");fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━╋\n");fprintf( fp,"┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━┫\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");} //注中括号在循环语句中的使用printf("信息已存储在名为“score system.txt的文件中”,按回车键返回主界面");fclose(fp);getchar();getchar();}void aver(Lstudent *Ls)//计算平均分并排序{int i=0,n,j,k;float a[20],t;for(i=0;i<Ls->length;i++)//逐个赋值,千万不能少{a[i]=(A+B)/2;}system("cls");for(k=0;k<Ls->length;k++) //此处为冒泡排序法for(j=1;j<Ls->length;j++)for(i=0;i<Ls->length-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("┏━━━┳━━━┳━━━━┳\n");printf("┃名次┃姓名┃平均分┃\n");printf("┣━━━╋━━━╋━━━━╋\n");for(i=0;i<Ls->length;i++)// 已输入学生长度为Ls->length{ printf("┃%-4d ┃%-6.6s┃%-4.1f ┃\n",i+1,Ls->s[i].name,a[i]);printf("┣━━━╋━━━╋━━━━╋\n");//注意有调用顺序问题}getchar();getchar();}void nopass(Lstudent *Ls)//? 列出不及格学生清单(学号、姓名、不及格的课程和成绩){int n;system("cls");int i;printf("不及格学生信息\n");for(i=0;i<Ls->length;i++){if(A<60){printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng,A);printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n"); }if(B<60){ printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng1,B);}printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");}printf("请按回车键回到主界面");getchar();getchar();}void change(Lstudent *Ls)//修改成绩{int i=0,n;printf("请输入要修改的学号:");scanf("%d",&n);if(Ls->s[i].num==n){printf("\n 请输入学生姓名:");fflush(stdin);scanf("%s",&Ls->s[i].name);printf("\n 请输入学生班级:");fflush(stdin);scanf("%s",&Ls->s[i].classes);printf("\n 请输入学生年龄:");fflush(stdin);scanf("%d",&Ls->s[i].age);printf("\n 请输入学生性别:");fflush(stdin);scanf("%s",&Ls->s[i].sex);printf("\n 请输入课程1编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi);printf("\n 请输入课程2编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao1);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng1);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen1);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi1);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi1);printf("修改成功!");printf("\n");}elseprintf("未找到该学号\n");printf("请按回车键回到主界面");getchar();getchar();return;}int _tmain(int argc, _TCHAR* argv[]){printf("=====================================================\n");printf(" === 学生成绩管理系统===\n");printf(" === ===\n");printf(" === 设计者:===\n");printf(" === ===\n");printf(" === 指导老师:===\n");printf(" === ===\n");printf(" === 中南大学信息科学与工程学院===\n");printf(" === ===\n");printf(" === 2011级===\n");printf(" === ===\n");printf(" === 2012年6月===\n");printf("=====================================================\n");getchar();int choice;Lstudent Ls;FILE *fp=NULL;while(1){system("cls");welcome();printf("请选择您要的操作:");scanf("%d",&choice);switch(choice){case 0:read(&Ls,fp);break;case 1:input(&Ls);break;case 2:output(&Ls);break;case 3:insert(&Ls);break;case 4:delet(&Ls);break;case 5:search(&Ls);break;case 6: change (&Ls);break;case 7:nopass (&Ls);break;case 8:aver(&Ls);break;case 9:save(&Ls,fp);break;//修改成绩case 10:printf("谢谢使用!\n");exit(0); default:printf("选择有误,请重新输入\n"); }}return 0;}。