用C语言实现一个简单的学生成绩管理系统
学生成绩管理系统c语言代码(供参考)

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语言)

成
绩
管
理
系
统
printf(" ____________________________ \n"); 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("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n"); printf("请输入您的选择(0,1,2,3,4,5,6,7):"); scanf("%d",&c); switch(c){ case 1:GradeInput(&student); break; case 2:GradeCorrect(student); break; case 3:GradeInquire(student); break; case 4:GradeCollect(student); break; case 5:GradeOutput(student); break; case 6:GradePaixu(student); break; case 7:CodeCorrect(); break; case 0: printf("\n 谢谢使用!\n"); } }while(c!=0); printf("学生成绩管理系统已退出!\n"); } void GradeCode() { FILE *fp; char s[20],yhname[20],mima[20],ch; int i,j=39,flag1=0,flag2=0; do{ system("cls"); printf("\n*************************** 欢 迎 登 陆 学 生 成 绩 管 理 系 统 *****************************\n");
C语言-学生成绩管理系统

在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语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。
为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。
本文将介绍该系统的源代码,并对其进行详细的解释和讲解。
二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。
用C语言实现学生成绩管理系统

int j,i;
printf("\n\n\n\t\t输出按学号排序的成绩表");
headno=(linklist)malloc(sizeof(Nodest));
p->next=q->next;
q->next=p;
}
} p=input_record();
scanf("%s",);
for(i=1;i<=NUM;i++)
{
printf("\t\t %s:",kname[i]);
p=p->next;
if(p!=NULL)
{
p->next=p->next->next;
return hsort;
}
else
}
return head;
}
linklist input_record()
{
linklist p;
student x;
int i;
x.total=0;
p=NULL;
strcpy(s->stu.no,p->stu.no);
for(i=1;i<=NUM;i++)
s->stu.score[i]=p->stu.score[i];
getchar();
}
void del()
{
linklist p,key_delect();
char x[10];
printf("\t删除模块\n");
学生成绩管理系统代码(c语言编写)

C程序学生管理系统/* Note:Your choice is C IDE */#include"stdio.h"#include"stdlib.h"#include"string.h"typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>初始化失败!");return 0;}else{p->next=NULL;p->date.number=0;//头结点存放学生人数 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.number=m;printf("=>请输入性别!\n");gets(p->date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p->date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p->date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p->date.clanguge=m;p->date.average=(p->date.math+p->date.eglish+p->date.clanguge);q=head->next;head->next=p;p->next=q;head->date.number++;}void deletion(unit *head)//删除一名学生{unit *p=head->next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p->,N)==0){q->next=p->next;head->date.number--;printf("=>删除%s成功!\n",p->);free(p);break;}else{p=p->next;q=q->next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}}int display(unit *head)//显示学生信息{unit *p=head->next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("********************************************************* *********************\n");printf("=>请选择你的操作!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m){case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->date.number);p=head->next;printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);p=p->next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head->next;while(p){if(strcmp(p->,N)==0){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!");}}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head->next;while(p){if(p->date.number==m){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!\n");}}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head->next;int n,i,m=head->date.number;printf("********************************************************* **********************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操作!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head->next;while(q->next){if((q->date.average)<(q->next->date.average)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head->next;while(q->next){if((q->date.number)>(q->next->date.number)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;}printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");printf("=>请选择你的操作!\n");}int save(unit *head)//保存{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保存失败!");return 0;}while(p){fwrite(&(p->date),sizeof(student),1,fp);p=p->next;}printf("=>保存成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>开辟空间失败!");exit(1);}else{head->next=NULL;head->date.number=0;//头结点存放学生人数}q=head;if((fp=fopen("d:\\学生","rb"))==NULL){printf("=>系统无学生!\n");return 0;}fread(&(q->date),sizeof(student),1,fp);for(i=0;i<head->date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>读值失败!");exit(1);}fread(&(p->date),sizeof(student),1,fp);p->next=q->next;q->next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("************************************************************* *******************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");printf("\n\t\t\t\t\t\t\t\t编译员:岳英明\n\n");printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();else if(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。
C语言版简单的成绩管理系统

自己编写的一个简单版的 C语言版的成绩管理系统(附代码):可能有些细节问题没处理好,勿怪,有不懂的可以问!1.主菜单:2.排序浏览3.添加:4.删除5.查询代码如下:// fan1.cpp : Defines the entry point for the console application. //#include "stdafx.h"#include <stdio.h>#include <malloc.h>#include<windows.h>#include<process.h>#include<string.h>int cls(){system("cls");return 0;}struct SStud{int numb;char name[20];float English;float Math;};typedef SStud DATA;struct SNode{DATA data;SNode* next;}*head=NULL;SNode* GetTailPosition() ;int Add() ; // 函void AddTail( DATA data ) ;void RemoveAt(int nNum);int Menu(); // 数void RemoveAll();int Search();int Search_Numb( int nNum ); // 声int Search_Name( char str[20]);void Browse() ;void List_Select();void List_English(); // 明void List_Numb();void Load();void Save();void AddHead( DATA data ) // ---------向头部添加节点{SNode *p =(SNode *) malloc (sizeof(SNode));p ->data = data;p ->next = head;head = p;}SNode* GetTailPosition() // 获取尾部节点位置{SNode *p = head;if(!p)return NULL;while(p->next){p = p->next;}return p ;}void AddTail( DATA data ) // 向尾部添加节点{SNode *p = GetTailPosition();if(!p)return;p->next=(SNode*)malloc(sizeof(SNode));p = p->next;p->data =data;p->next=NULL;}int Search( ){printf("学生成绩查询:\n\n");printf(" \t\t********************************\n");printf(" \t\t*\t 1.按学号查询: *\n");printf(" \t\t*\t 2.按姓名查询: *\n");printf(" \t\t*\t 0.返回主菜单: *\n");printf(" \t\t********************************\n");printf(" \t\t请选择:");int i;scanf("%d",&i);cls();switch( i ){case 1:printf("请输入要查询的学号:");int n;scanf("%d",&n);Search_Numb(n);break;case 2:printf("请输入要查询的姓名:");char strname[20];scanf("%s",strname);Search_Name(strname);break;case 0:Menu();break;}return 0;}int Search_Numb( int nNum ) // 按学号查询{SNode *p=head;if(!p){printf("查询失败,这是一个空链表!\n");system("pause");return 0;}while(p){if(p->data.numb==nNum){printf("学号\t\t姓名\t\t英语\t\t数学\n");printf("%-3d%17s%16.1f%16.1f\n",p->data.numb,p->,p->data.English, p->data.Math);system("pause");return 0;}elsep = p->next;}printf("输入的学号不存在!\n");system("pause");return 0;}int Search_Name( char str[20] ) // 按姓名查询{SNode *p=head;if(!p){printf("查询失败,这是一个空链表!\n");system("pause");return 0;}while(p){if(!strcmp(p->,str)){printf("学号\t\t姓名\t\t英语\t\t数学\n");printf("%-3d%17s%16.1f%16.1f\n",p->data.numb,p->,p->data.English,p-> data.Math);system("pause");return 0;}elsep = p->next;}printf("输入的学号不存在!\n");system("pause");return 0;}void List_Select() // 排序.....{printf("学生成绩浏览\n\n");printf(" \t\t********************************\n");printf(" \t\t*\t 1.按学号排序: *\n");printf(" \t\t*\t 2.按英语排序: *\n");printf(" \t\t*\t 0.返回主菜单: *\n");printf(" \t\t********************************\n");printf(" \t\t请选择:");int i;scanf("%d",&i);switch (i){case 1: List_Numb();break;case 2: List_English();break;case 0: Menu();break;}}void List_Numb() // 按学号排序{SNode * p,*q,*min; // .......不可以用small ?p = head;if(!p)return ;while(p){min = p;q = p ->next;while(q){if(q->data.numb<min->data.numb)min = q;q = q->next;}if(min!=p){int temp = p->data.numb;p->data.numb = min->data.numb;min->data.numb = temp;}p = p ->next;}Browse();system("pause");}void List_English() // 按英语成绩排序{SNode * p,*q,*min;p = head;if(!p)return ;while(p){min = p;q = p ->next;while(q){if(q->data.English>min->data.English)min = q;q = q->next;}if(min!=p){float temp = p->data.English;p->data.English = min->data.English;min->data.English = temp;}p = p ->next;}Browse();system("pause");}void Browse() // 遍历...输出{// int data;// SStud stud;SNode* p = head ;printf("学号\t\t姓名\t\t英语\t\t数学\n");if(!p){printf("这是一个空链表!\n");}while (p){printf("%-3d%17s%16.1f%16.1f\n",p->data.numb,p->,p->data.English, p->data.Math);//scanf("%d %s %f %f",&stud.numb,&,&stud.English,&stud.Math);p = p->next; // 增量}// system("pause");}void RemoveAt(int nNum) // 删除指定节点{SNode* p = head ,*q=p;if(!p){printf("删除错误,这是空链表!\n");system("pause");return;}while(p){if(p->data.numb==nNum){//printf("%-3d%17s%16.1f%16.1f\n",p->data.numb,p->,p->data.English,p-> data.Math);// printf("是否真的删除该学生信息(Y/N)?按N返回主菜单: ");// system("pause");// char ch;// scanf("%c",&ch);// if(ch == 'Y')// {q->next = p->next ;free(p);printf("删除成功!");system("pause");return;// return ;// }// else// Menu();}q = p ;p = p->next;}}void RemoveAll() // 删除所有链表{SNode *p=head, *q = p ;while (p){q = p;p ->next =NULL;free(q);}head = NULL;}int Add() //添加节点---调用{SStud stud;stud.English=0.0f;stud.Math=0.0f;cls();// printf("请输入学号,姓名,英语,数学成绩:\n");//scanf("%d %s %f %f",&stud.numb,&,&stud.English,&stud.Math);printf("请选择添加方式: \n\n");printf(" \t\t********************************\n");printf(" \t\t*\t 1.从头部添加: *\n");printf(" \t\t*\t 2.从尾部添加: *\n");printf(" \t\t*\t 0.返回主菜单: *\n");printf(" \t\t********************************\n");printf(" \t\t请选择:");int i=0;scanf("%d",&i);cls();switch(i){case 1:printf("请输入学号,姓名,英语,数学成绩:\n");scanf("%d %s %f %f",&stud.numb,&,&stud.English,&stud.Math);AddHead(stud);break;case 2:printf("请输入学号,姓名,英语,数学成绩:\n");scanf("%d %s %f %f",&stud.numb,&,&stud.English,&stud.Math);AddTail(stud);break;case 0: Menu();break;}printf("继续添加请按1,返回主菜单请按0:");int a=0;scanf("%d",&a);// switch(a)// {// case 1:// case 0:// break;// default :// break;// }if (a==1)return a;elsereturn 0;}void Save(){FILE *fp=fopen("./fjj.txt","wb");if(!fp){printf("保存文件错误!\n");return ;}SNode * p ;p = head; //空链表特征是head是0while(p){//fwrite(&p ->data,1,sizeof(p->data),fp);fwrite(p,1,sizeof(p->data),fp);p=p ->next;}fclose(fp);}void Load() //注意加载过程的循环条件是什么{FILE* fp = fopen("./fjj.txt","rb");if(!fp)return;SStud stud;while(fread(&stud,1,sizeof(stud),fp) > 0){AddHead(stud);}}int Menu() // 主菜单{cls();printf("\n\n");printf("\t\t 学生成绩管理系统主菜单\n\n\n");printf(" \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 4.添加: *\n");printf(" \t\t*\t 0.退出: *\n");printf(" \t\t********************************\n");printf(" \t\t请选择:");int n=0;scanf("%d",&n);while( n<0 || n >4 ){printf("错误,请重新输入!");printf("请选择:");scanf("%d",&n);}switch(n ){case 1: cls();List_Select();break;case 2: cls();Search();break;case 3:cls();Browse();printf("请输入要删除的学号:");int i;scanf("%d",&i);RemoveAt(i);break;case 4: while(Add());break;case 0: printf("\t\t谢谢使用!\n");break;}return n;}int main(int argc, char* argv[]) // 主函数{Load();while(Menu());Save();return 0;}。
c语言学生成绩管理系统

C语言学生成绩管理系统1. 简介本文档介绍了一个基于C语言的学生成绩管理系统的设计和实现。
该系统旨在帮助学校或教育机构管理学生的各项成绩,并提供相应的查询和统计功能。
2. 功能学生成绩管理系统具有以下主要功能:•学生管理:可以添加、删除、修改学生信息,包括学号、姓名、性别等。
•成绩录入:可以录入学生的各个科目的成绩。
•成绩查询:可以根据学号或姓名查询学生的各科成绩。
•成绩统计:可以统计某一科目的平均成绩、最高成绩、最低成绩等。
•成绩排序:可以按照某一科目的成绩对学生进行排序。
•成绩报表:可以生成学生的成绩报表,包括通过率、优秀率等信息。
3. 设计与实现3.1 数据模型学生成绩管理系统的主要数据模型包括:•学生(Student):包含学生的学号、姓名、性别等信息。
•科目(Subject):包含科目的编号、名称等信息。
•成绩(Score):包含学生的学号、科目编号、分数等信息。
这三个数据模型之间存在关联关系,学生和科目通过成绩进行关联。
3.2 界面设计学生成绩管理系统的界面设计应该简洁明了,方便用户操作。
可以通过命令行界面或者图形界面实现。
3.3 数据存储学生成绩管理系统可以使用文件进行数据的持久化存储。
可以使用文本文件、二进制文件或者数据库等方式进行存储。
3.4 算法实现系统需要实现一些算法来支持成绩统计和排序功能。
比如,可以使用冒泡排序、选择排序或者快速排序等算法对成绩进行排序。
4. 使用说明学生成绩管理系统的使用说明如下:•下载并编译源代码。
•运行可执行文件,系统将显示欢迎界面。
•根据提示选择相关功能,进行学生信息管理、成绩录入、成绩查询等操作。
•根据需要生成成绩统计报表或者排序结果。
5. 总结本文档介绍了一个基于C语言的学生成绩管理系统的设计和实现。
该系统提供了学生管理、成绩录入、成绩查询、成绩统计、成绩排序等功能,可以方便地帮助学校或教育机构管理学生的各项成绩。
通过本系统的使用,可以更加高效地管理和分析学生的学习情况。
c语言课程设计学生成绩管理系统代码

学生成绩管理系统是一个常见的C语言入门项目,可以帮助初学者了解循环、条件控制、结构体、文件操作等基本知识。
以下是一个简单的C语言学生成绩管理系统示例,实现了查询、添加、修改和删除学生成绩等功能。
您可以修改和扩展该代码以满足您的需求:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct {int id;char name[20];float score;} Student;void display_menu();void add_student();void find_student();void edit_student();void delete_student();void save_data();void load_data();int student_count = 0;Student students[100];int main() {load_data();while (1) {display_menu();int choice;printf("请输入您的选择:");scanf("%d", &choice);switch (choice) {case 1:find_student();break;case 2:add_student();break;case 3:edit_student();break;case 4:delete_student();break;case 5:save_data();printf("数据已保存。
\n");exit(0);default:printf("无效的选项!\n");}}return 0;}void display_menu() {printf("学生成绩管理系统\n");printf("====================\n");printf("1. 查询学生成绩\n");printf("2. 添加学生成绩\n");printf("3. 修改学生成绩\n");printf("4. 删除学生成绩\n");printf("5. 退出系统\n");printf("====================\n");}void add_student() {printf("请输入学生ID:");scanf("%d", &students[student_count].id); printf("请输入学生姓名:");scanf("%s", students[student_count].name); printf("请输入学生成绩:");scanf("%f", &students[student_count].score); student_count++;printf("学生已添加成功!\n");}void find_student() {int id;printf("请输入要查询的学生ID:");scanf("%d", &id);for (int i = 0; i < student_count; ++i) {if (students[i].id == id) {printf("ID:%d, 姓名:%s, 成绩:%.2f\n", students[i].id, students[i].name, students[i].score);return;}}printf("未找到该学生。
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语言编写的简单的学生成绩管理系统收藏

#include<stdio.h>#include<string.h>struct student{int num;char name[20];int score;}stu[6];int i;void main(){void in();void xianshi();void paixu();void charu();void shanchu();void chaxian();void g(); int n;while(n!=8){printf("\n\t\t\t学生管理系统");printf("\n\t\t1:输入一个班的学生信息\n");printf("\t\t2:显示所有学生的信息\n");printf("\t\t3:按学号对所有学生排序\n");printf("\t\t4:插入一条学生信息按学号排好\n");printf("\t\t5:按姓名查找,并删除一条信息\n");printf("\t\t6:查找并显示一条信息\n");printf("\t\t7:求出全班平均成绩,显示最高分最低分\n");printf("\t\t8:退出系统\n");printf("输入选项代码:");scanf("%d",&n);switch(n){case 1:in();break;case 2:xianshi();break;case 3:paixu();break;case 4:charu();break;case 5:shanchu();break;case 6:chaxian();break;case 7:g();break;case 8:printf("谢谢使用!\n");break;break;}}getchar();}void in() /* 输入一个班的学生信息*/{for(i=0;i<5;i++){ printf("请输入学号姓名成绩:\n");scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].score);}}void xianshi(){ int i;printf("学号姓名成绩\n");for(i=0;i<5;i++)printf("%d%10.2s%10d\n",stu[i].num,stu[i].name,stu[i].score);}void paixu()/* 按学号对所有信息排序*/{ int a[5]={0,1,2,3,4};int i,j,temp;for(i=0;i<4-j;i++)if(stu[a[i]].num>stu[a[i+1]].num){ temp=a[i];a[i]=a[i+1];a[i+1]=temp;}printf("顺序为:\n");printf("学号姓名成绩\n");for(i=0;i<5;i++)printf("%d%10.2s%10d\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].score); printf("\n");}void charu()/*插入一条学生信息按学号排列*/{int i;printf("请输入要插入学生的学号姓名成绩:");scanf("%d%s%d",&stu[5].num,stu[5].name,&stu[5].score);for(i=0;i<5;i++)printf("%d%s%d\n",stu[i].num,stu[i].name,stu[i].score);{int a[6]={0,1,2,3,4,5};int i,j,temp;for(j=0;j<5;j++){ for(i=0;i<5-j;i++)if(stu[a[i]].num>stu[a[i+1]].num){ temp=a[i];a[i]=a[i+1]; a[i+1]=temp; }}printf("顺序为:\n");printf("学号姓名成绩\n");for(i=0;i<6;i++)printf("%d%10.2s%10d\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].score); printf("\n");}}void shanchu() /*按姓名查找,并删除一条信息*/{ int j=0,i=0,flag=0;char a[20];printf("请输入要删除学生的姓名:");scanf("%s",&a);for(i=0;i<5;i++){ if(strcmp((stu[i].name),a)==0){ flag=i; break;;}}for(j=flag;j<5;j++){ stu[j].num=stu[j+1].num; strcpy(stu[j].name,stu[j+1].name); stu[j].score=stu[j+1].score;}printf("学号姓名成绩\n");for(i=0;i<5;i++)printf("%d%10.2s%10d\n",stu[i].num,stu[i].name,stu[i].score); }void chaxian()/* 查找并显示一条信息*/{int j=0,i=0,flag=0;char a[20];printf("请输入要查找学生的姓名:");scanf("%s",&a);for(i=0;i<5;i++){if(strcmp((stu[i].name),a)==0){ flag=i; break; }}printf("您要查找的学生信息为:\n");printf("学号姓名成绩\n");printf("%d%11.2s%11d\n",stu[i].num,stu[i].name,stu[i].score);}void g()/* 求出全班平均成绩,显示最高分最低分信息*/{ int a[5]={0,1,2,3,4};int i,j,temp;float total=0;double ave;for(i=0;i<5;i++){total=total+stu[i].score;}ave=total/5.0;printf("ave=%f\n",ave);for(j=0;j<4;j++){ for(i=0;i<4-j;i++)if(stu[a[i]].num>stu[a[i+1]].num){ temp=a[i];a[i]=a[i+1]; a[i+1]=temp; } }printf("最高成绩为:\n");printf("学号姓名成绩\n");printf("%d%11.2s%11d\n",stu[a[4]].num,stu[a[4]].name,stu[a[4]].score); printf("最低成绩为:\n");printf("学号姓名成绩\n");printf("%d%11.2s%11d\n",stu[a[0]].num,stu[a[0]].name,stu[a[0]].score); }。
C语言写的简易成绩管理系统

#include <stdlib.h>
#include <string.h>
struct Data //数据结构
{
int number;
char name[16];
float kemu1;
float kemu2;
float kemu3;
data[i].number,data[i].name,data[i].kemu1,data[i].kemu2,data[i].kemu3,data[i].kemu4,data[i].kemu5,data[i].zongfen);
}
}
void output4()//输出各科补考学生的学号和成绩
{
case 1:input();
break;
case 2:output1();
break;
case 3:output2();
return choise;
}
void input()
{
while(1)
{
if(id < 10)
{
printf("输入学号:");
scanf("%d",&data[id].number);
printf("输入名字:");
scanf("%s",data[id].name);
printf("输入科目1成绩:");
scanf("%f", &data[id].kemu1 );
printf("输入科目2成绩:");
c语言编写的简单的学生成绩管理系统

#include <string.h>#include <stdio.h>#include <stdlib.h>struct xuesheng{int id;char name[20];float yuwen;float shuxue;float pinjun;};typedef struct xuesheng XUE;int daxiao=sizeof(XUE);int tiqu(XUE*a){FILE *fp1;int i=0;fp1=fopen("wenjian.txt","r+");while(!feof(fp1)){if(5==fscanf(fp1,"%d%s%f%f%f",&a[i].id,a[i].name,&a[i].yuwen,&a[i].shuxue,&a[i].pinjun )){//printf("%d %s %3.2f %3.2f %3.2f\n",a[i].id,a[i].name,a[i].yuwen,a[i].shuxue,a[i].pin jun);i++;}}fclose(fp1);return i;}void xianshi(void){XUE a[100];int j=tiqu(a);int i=0;while(i<j){printf("%d %s %3.2f %3.2f %3.2f\n",a[i].id,a[i].name,a[i].yuwen,a[i].shuxue,a[i].pinju n);i++;}void paixu(void){XUE a[100];int i=tiqu(a);int j=0;int k=0;int t=0;XUE tmp;FILE*fp1;fp1=fopen("wenjian.txt","r+");printf("please input 1,according to the average score loading\nplease input2,according to the id little to big order\n");scanf("%d",&t);if(t==1){for(k=0;k<i-1;k++)for(j=k+1;j<i;j++)if(a[k].pinjun<a[j].pinjun){tmp=a[j];a[j]=a[k];a[k]=tmp;}}if(t==2){for(k=0;k<i-1;k++)for(j=k+1;j<i;j++)if(a[k].id>a[j].id){tmp=a[j];a[j]=a[k];a[k]=tmp;}}fseek(fp1,0,0);j=0;while(j<i){fprintf(fp1,"%d %s %f %f %f\n",a[j].id,a[j].name,a[j].yuwen,a[j].shuxue,a[j].pinjun); j++;}fclose(fp1);}void shanchu(void)char xinmin[20];FILE *fp1;XUE a[100];int i=tiqu(a);int j=0;int t=0;int m=0;printf("please input 1,according to name delete\nplease input 2,according to id delete\n");scanf("%d",&t);if(t==1){fp1=fopen("wenjian.txt","w+");printf("please input delete student's name:\n");scanf("%s",xinmin);for(j=0;j<i;j++)if(strcmp(a[j].name,xinmin)!=0)fprintf(fp1,"%d %s %f %f %f\n",a[j].id,a[j].name,a[j].yuwen,a[j].shuxue,a[j].pinjun); fclose(fp1);}if(t==2){fp1=fopen("wenjian.txt","w+");printf("please input delete student's id:\n");scanf("%d",&m);for(j=0;j<i;j++)if(a[j].id!=m)fprintf(fp1,"%d %s %f %f %f\n",a[j].id,a[j].name,a[j].yuwen,a[j].shuxue,a[j].pinjun); fclose(fp1);}}void charu(){FILE*fp1;XUE a;fp1=fopen("wenjian.txt","r+");fseek(fp1,0,SEEK_END);printf("please input insert student's ID name yuwen shuxue:\n");if(scanf("%d %s %f %f",&a.id,,&a.yuwen,&a.shuxue)==4){a.pinjun=(a.yuwen+a.shuxue)/2;fprintf(fp1,"%d %s %f %f %f\n",a.id,,a.yuwen,a.shuxue,a.pinjun);}fclose(fp1);}int main(int argc,char **argv){int i=0;printf("please input 1, display file informatio\n\n");printf("please input 2, delete student information\n\n");printf("please input 3, insert new student information\n\n"); printf("please input 4, information sorting\n\n");printf("please input 5, exit system\n\n");xiao:printf("please input toexecute command\n\n");scanf("%d",&i);switch(i){case 1: printf("\n");xianshi();printf("\n\n");goto xiao;case 2: printf("\n");shanchu();xianshi();printf("\n\n");goto xiao;case 3: printf("\n");charu();xianshi();printf("\n\n");goto xiao;case 4: printf("\n");paixu();xianshi();printf("\n\n");goto xiao;case 5: break;default: printf("you entered wrong order\n");goto xiao;}return 0;}。
c语言学生成绩管理系统使用说明书

c语言学生成绩管理系统使用说明书
学生成绩管理系统是一个常见的程序,它用于管理学生的成绩。
下面是一个简单的C语言学生成绩管理系统使用说明书:
1. 打开程序:打开学生成绩管理系统程序,您将看到一个主菜单,显示所有可用的选项。
2. 添加学生:使用“添加学生”选项,您可以输入学生的姓名、学号和成绩。
程序将把这些信息存储在一个结构体数组中。
3. 显示所有学生:使用“显示所有学生”选项,程序将打印出所有学生的姓名、学号和成绩。
4. 查找学生:使用“查找学生”选项,您可以输入学生的姓名或学号,程序将查找并打印出该学生的信息。
5. 修改学生成绩:使用“修改学生成绩”选项,您可以输入学生的姓名或学号,然后输入新的成绩。
程序将更新该学生的成绩。
6. 删除学生:使用“删除学生”选项,您可以输入学生的姓名或学号,程序将删除该学生的信息。
7. 保存数据:使用“保存数据”选项,程序将把结构体数组中的数据保存到一个文件中。
8. 退出程序:使用“退出程序”选项,您可以结束程序并退出。
注意事项:
1. 请确保在输入学生信息时输入正确的数据类型。
2. 在修改或删除学生信息之前,请确保您已经备份了原始数据。
3. 在使用“查找学生”选项时,请确保您输入的姓名或学号是正确的。
4. 在使用“保存数据”选项时,请确保您已经关闭了所有其他文件。
5. 如果您想再次使用程序,请确保您已经重新打开数据文件。
学生成绩管理系统(c语言编写)

C程序学生管理系统/* Note:Your choice is C IDE */#include”stdio。
h”#include”stdlib.h"#include"string。
h”typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf(”=〉初始化失败!");return 0;}else{p—〉next=NULL;p->date.number=0;//头结点存放学生人数 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—>date。
name);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程序学生管理系统/* Note:Your choice is C IDE */#include"stdio。
h"#include”stdlib.h"#include”string.h”typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL) { printf(”=〉初始化失败!");return 0;}else{p—>next=NULL;p—>date.number=0;//头结点存放学生人数 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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1 引言 (1)2 系统需求分析 (1)2.1项目背景分析 (1)2.2 系统开发的目标与意义 (1)2.3 项目需求分析 (1)3 系统总体设计 (2)3.1 功能模块分析 (2)3.2 系统功能模块初始化准备 (3)3.2.1 编译预处理 (3)3.2.2 数据结构定义 (3)3.3 具体模块处理函数的实现 (4)3.3.1 菜单函数界面的设计 (4)3.3.2 功能函数设计 (4)4 系统测试与分析 (9)4.1 运行工具介绍 (9)4.2 系统操作 (9)结束语 (10)参考文献 (11)用C语言实现一个简单的学生成绩管理系统摘要:伴随着现代社会的发展,网络技术的不断进步,越来越多的管理工作都从传统的现实社会中发展到了网络上。
高校是使用计算机技术最早的单位,学校的各项管理工作也从现实生活走上了网络空间。
本文对学校的需求进行分析,通过使用C语言设计并实现学生成绩的管理,力求尽量简洁实用地解决学校对学生成绩的管理和学生对成绩的查询问题。
关键字:C语言成绩管理系统程序设计1 引言在信息时代,计算机以其极高的运算速度、巨大的数据存储容量,以及能准确地进行各种算术运算和逻辑运算的能力而成为现代化计算工具,并被广泛应用于社会各个领域。
计算机技术的高速发展已被认为是人类进入信息时代的标志。
成绩管理系统是计算机技术和信息时代的产物,是信息处理或数据处理的核心。
该系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化,以达到提高学生成绩管理效率的目的。
通过运用程序设计软件实现学生成绩管理中的多种功能,如学生成绩信息的添加、删除、查询、修改、显示、排序等。
该系统的设计充分利用计算机作为辅助工具,来实现学生考试成绩从传统的手工管理到计算机管理,并对提高管理效率和节约大量的人力、物力有一定的推动作用。
因此,开发这种管理软件很必要,本文将在分析系统的应用价值以及开发工具的基础上,用C语言来开发成绩管理系统。
2 系统需求分析2.1项目背景分析在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有任何信息管理系统,特别是在西部贫困地区,学校的各类管理依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。
随着社会的发展,信息化是社会进程的必然趋势,学校管理只有快,准,精才能发挥其价值。
2.2 系统开发的目标与意义(1)系统开发目标:本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。
为了使系统在学院的管理中发挥充分发挥其作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:①系统应具有实用性、可靠性和适用性。
②对系统中数据库的信息进行有效处理,防止数据错乱。
②能够按照用户选择的不同的条件进行简单查询。
③方便用户的操作,尽量减少用户的操作。
(2)系统开发的意义:在各大中小学校,用计算机管理学校的信息已经越来越普遍了。
用计算机不但可以提高工作效率,而且还节省了许多人力物力财力。
提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。
2.3 项目需求分析学校工作流程分析:学校工作总体规划由教务人员在学生成绩管理系统中输入学生的基本信息并对其进行维护管理,包括对信息的增加、修改及对信息的各项处理操作等。
新的学年,教务人员首先编排班级,再对在校学生进行基本的信息录入,新生入学后由教务人员在管理系统中完成新学生信息的维护。
在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任,并对各科老师进行安排。
每举行一次考试后由任课老师对成绩进行录入。
班主任对本班的成绩汇总。
并进行排名,并对本年级各科成绩及总成绩进行排名。
教务处、班主任及任课老师跟据实际情况对录入的成绩进行维护管理,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。
3 系统总体设计3.1 功能模块分析学生成绩管理系统是对学生基本信息及成绩的管理。
开发工具主要采用TurboC2.0,主要用于对学生的学号、姓名等自然信息以及各项学科成绩进行增加、删除、修改、查询及保存到文件等操作。
系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
学生成绩管理系统处理流程如图1。
图1 系统处理流程图主要功能设计描述如下:(1)系统主控平台允许用户选择想要的操作,包括输入学生信息、显示学生信息、查询学生信息、修改学生信息、删除学生信息、计算成绩以及成绩的排序等。
通过输入相应的序号选择相应的操作。
(2)学生成绩信息用户根据提示输入学生的学号、姓名、以及三门课的成绩,如语文成绩、英语成绩、数学成绩等。
输入完成一条学生记录,可根据提示信息继续输入下一条学生记录或者继续其他的操作。
允许输入多条学生的成绩信息记录。
输入完的学生记录暂时保持在单链表中,等待下一步的操作。
(3)查询学生信息可以根据学号,姓名,总分从单链表中对学生所有的信息进行查询,如果没有查询到任何信息,系统会给出提示信息。
(4)修改学生信息首先提示用户输入要进行修改的操作的学号,如果单链表中有该学生的信息存在,则提示用户输入要修改的学生的基本信息、各科成绩等,并将修改结果重新存储在单链表中。
如果用户没有找到要修改的学生信息,系统将给出提示。
(5)插入学生信息对已经建立好的信息若还需增加,则对信息进行插入。
首先提示用户输入要进行插入的学号,然后在根据提示对用户信息进行完整输入。
输入完成后系统将对其进行保存。
(6)删除学生信息首先提示用户输入要删除学生的学号,系统根据用户输入的信息在单链表中查找,如果找到,直接删除该学生全部信息,如果没有找到,系统给出提示信息。
(7)计算各科成绩平均分该模块主要进行学生成绩的平均分计算,进入计算界面,系统自动对各科进行平均分计算。
(8)显示学生信息在选择了显示学生信息后,将刚输入的学生信息从单链表中调出来显示,如果没有数据,则提示无学生记录。
(9)学生成绩排序成绩信息输入完整后,根据学生的总分对学生从小到大进行排序,在显示学生信息的时候可以看到学生在班级或校的排列名次。
(10)操作完成后对操作结果进行保存。
运行完毕,退出系统。
3.2 系统功能模块初始化准备3.2.1 编译预处理“编译预处理”是C编译系统的一个组成部分。
在C编译系统对程序进行通常的编译(包括词法和语法分析、代码生成、优化等)之前,先对程序中这些特殊命令进行“预处理”,然后将预处理的结果和源程序一起再进行通常的编译处理,以得到目标代码。
C语言提供的预处理功能主要有:(1)宏定义;(2)文件包含;(3)条件编译。
而本程序使用文件包含的预处理方式进行编译预处理:#include<stdlib.h>/*标准库函数*/#include<stdio.h>/*标准输入、输出函数库*/#include<conio.h>/*屏幕操作函数*/#include<string.h>/*字符串函数*/3.2.2 数据结构定义学生成绩管理系统中的变量有学号,姓名,成绩等,这些数据类型各不相同,无法用简单数据类型来描述,显然要定义结构体类型。
由于学生人数很多,还需要定义数组或者链表。
数组的特点是数据在内存中顺序存放,长度必须事先指定,而学生的人数很难估计。
如果数组长度定的过大,会找出存储空间浪费,如果过小,又无法满足需求。
特别是进行插入,删除等操作时,代价较大而又容易出错。
用链表来管理学生成绩就显得比较妥当,它无需估计学生人数,进行插入删除等操作时代价较小。
C语言中,说明和使用“结构体”之前必须先定义,在编写程序之前应该对学生基本信息进行定义,在这个程序中,使用struct来定义结构体的类型为struct list,然后用它来定义变量,在定义结构体类型的时候定义一个next成员,该成员可以把学生结点进行链接。
并且通过类型定义typedef将已有的各种类型名定义成为新的类型标识符link,经类型定义后,link即可当做原类型名使用。
具体定义如下:struct list{int ID; /*学号*/charname[256]; /*姓名*/int china; /*语文成绩*/int english; /*英语成绩*/int math; /*数学成绩*/float sum; /*总分*/int order; /*排序*/struct list *next; /*指向下一个学生的指针*/};typedef struct list node; /*自定义一个数据结构的结点*/typedef node *link; /*定义结点为link结构*/3.3 具体模块处理函数的实现3.3.1 菜单函数界面的设计系统与用户交换的界面是通过菜单实现的,菜单按预定义格式显示主菜单界面,等待用户输入0-8中的任一数据,系统会根据用户的输入调用相应的功能模块,实现用户所要求的操作。
(1)本程序的菜单界面主要使用屏幕操作函数编写,欢迎界面设置为白底红字,菜单界面设置为绿底蓝字,在欢迎界面中单击任意键进入菜单操作界面。
整个系统都以光标定位函数gotoxy(x,y)固定光标的位置,在对其进行输出,从而可以使显示的文字都出现在设定的窗口内,窗口的界面设置使用画图工具制作周围的边框,边框的设置具体如下:gotoxy(8,2); putch(0xc9); /*输入左上角边框*/for(i=1;i<46;i++) putch(0xcd); /*输出上边框水平线*/putch(0xbb); /*输出右上角边框*/for(i=3;i<23;i++){ gotoxy(8,i); putch(0xba); /*输出左垂直线*/gotoxy(56,i); putch(0xba); } /*输出右垂直线*/gotoxy(8,23); putch(0xc8); /*输出左下角边框*/for(i=1;i<46;i++) putch(0xcd); /*输出下边框水平线*/putch(0xbc); /*输出右下角边框*/window(9,3,55,22);/*制作显示菜单的窗口*/(2)菜单是由menu函数实现,主要通过printf函数显示一些文本选项如:printf("<0>exit the program.\n");构建一个简单的字符界面,系统设置11个模块,用户通过输入关键字key从0-10之间选择相应的操作,函数通过switch调用各功能模块:switch(key){ case0:exit(0);case1:head=init();break;case2:head=creat_list()break;case3:search_chengji(head);break;case4:head=modify_chengji(head,key);break;case5:head=delete_chengji(head,key);break;case6:head=insert_chengji(head,key);break;case7:average(head);break;case8:sort(head);break;}case9:printf_list(head);break;case10:save(head);break;3.3.2 功能函数设计(1)初始化链表学生成绩管理系统使用前要先将系统进行初始化操作,初始化函数init()就是将函数置空。