学生成绩管理系统(c语言)
- 格式:docx
- 大小:258.30 KB
- 文档页数:7
C语言程序设计报告目录———学生成绩管理程系题目要求 (3)需求分析 (3)总体设计 (4)详细设计 (4)上机操作 (11)源程序 (13)总结 (19)学生成绩管理程序一.题目要求1.问题描述:对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.2.要求:(1):一个文件按以班为单位存储学生记录.(2)将允许的操作分为四种,以A,B ,C,D,E,F为标志:A:插入一个学生记录;B:修改学生记录;C:删除一个学生记录;D:查找一个学生记录;E:浏览学生成绩:F:退出3.计算学生的总成绩.4.按学号排序输出全班学生成绩表.二.需求分析根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三.总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删1.主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.流程图:[程序]:main(){while(1){clrscr();printf("*************welcome to use student manage******************\n"); printf("*************************menu********************************\n"); printf("* ========================================================= * \n"); printf("* A>shuru B>xiugai * \n");printf("* C>shanchu D>chazhao * \n");printf("*E>xianshi F>exit * \n");printf("* * \n");printf("* --------------------------------------------------------- * \n"); printf(" Please input which you want(A-F):");ch=getch();switch(ch){case 'A':shuru();break;case 'B':xiugai(); break;case 'C':shanchu(); break;case 'D':chazhao(); break;case 'E':xianshi(); break;case 'F':exit(0);default: continue;}}}2.输入模块:[分析]:单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.如果要存放若干学生信息就用结构体数组:struct score /*结构体score*/{int mingci;char xuehao[8];char mingzi[20];char nianling[3];float score[6];}data,info[1000];int i,j,k=0;char temp[20],ch;FILE *fp,*fp1;[程序]:void shuru(){if((fp=fopen("s_score.txt","ab+"))==NULL) /*以读写方式打开名为s_score的文件*/ {printf("cannot open this file.\n");getch();exit(0);}for(i=0;i<=1000;i++){printf("\nPlease shuru xuehao:");gets(data.xuehao);printf("Please shuru mingzi:");gets(data.mingzi);printf("please shuru nianling:");gets(data.nianling);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please shuru wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];fwrite(&data,sizeof(data),1,fp);printf("another?y/n");ch=getch();if(ch=='n'||ch=='N')break;} fclose(fp);}3.修改模块:[分析]:用户输入要修改学生的学号,根据学生的学号查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.[[程序]:{/*{}printf("\nPLease shuru xiugai xuehao:");scanf("%d",&i); getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("xuehao:%s\nmingzi:%s\nnianling:%s\n",data.xuehao,data.mingzi,data.nianl ing);printf("Please shuru mingzi:");gets(data.mingzi);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please input wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];} fwrite(&data,sizeof(data),1,fp1);}fseek(fp,0L,0); /*将位置指针移到离头文件0个字节处*/fseek(fp1,0L,0);while((fread(&data,sizeof(data),1,fp1))==1){fwrite(&data,sizeof(data),1,fp);}fclose(fp);fclose(fp1);}4.删除模块:[分析]:该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除.[流程图[程序]:{{}printf("\nPlease input ID which you want to del:");scanf("%d",&i);getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("Anykey will delet it.\n");getch();continue;}fwrite(&data,sizeof(data),1,fp1);}fclose(fp);fclose(fp1);remove("s_score.txt");rename("temp.txt","s_score.txt");printf("Data delet was succesful!\n");printf("Anykey will return to main.");getch();}5.查找模块:[需求分析]:该模块的功能是根据输入的学生的姓名查找对应的记录,找到以后,显示相应的学生信息.[流程图]:[{{}{{printf("xuehao:%s mingzi:%s\n nianling:%s\n shuxue:%f\n yingyu:%f\n wuli:%f\n zongfen:%f\n",data.xuehao,data.mingzi,data.nianling,data.score[0],data.score[1] ,data.score[2],data.score[3]);}getch();}}6.显示模块:[需求分析]:该模块的功能是显示所有学生记录信息.[程序]:void xianshi(){float s;int n;if((fp=fopen("s_score.txt","rb+"))==NULL) /*以读写方式打开名为s_score的文件*/ {printf("Cannot reading this file.\n"); /*先检查打开的操作是否出错*/exit(0);}for(i=0;i<=1000;i++){if((fread(&info[i],sizeof(info[i]),1,fp))!=1) /*检查是否出错*/break; /*指针要读写字节数要读写size字节的数据项文件型指针*/}printf("\nxuehao mingzi nianling shuxue yingyu wuli zongfen\n");for(j=0,k=1;j<i;j++,k++){info[j].mingci=k;printf("%6s %8s %3s %3.1f %3.1f %3.1f %3.1f \n",info[j].xuehao,info[j].mingzi,info[j].nianling,info[j].score[0],info[j].sco re[1],info[j].score[2],info[j].score[3]);}getch();fclose(fp);}五.上机操作下面是各个模块的界面图:(1): 主菜单函数:(2): 输入模块:(3): 显示模块:(包含了按学号排序功能)(4): 删除模块:(5): 查找模块:(6): 修改模块:六.源程序#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#include "string.h" /*字符串函数*/#include "conio.h" /*屏幕操作函数*/#include "mem.h" /*内存操作函数*/#include "ctype.h" /*字符操作函数*/#include "alloc.h" /*动态地址分配函数*/struct score /*结构体score*/{int mingci;char xuehao[8];char mingzi[20];char nianling[3];float score[6];}data,info[1000];int i,j,k=0;char temp[20],ch;FILE *fp,*fp1;void shuru(){if((fp=fopen("s_score.txt","ab+"))==NULL) /*以读写方式打开名为s_score的文件*/{printf("cannot open this file.\n");getch();exit(0);}for(i=0;i<=1000;i++){printf("\nPlease shuru xuehao:");gets(data.xuehao);printf("Please shuru mingzi:");gets(data.mingzi);printf("please shuru nianling:");gets(data.nianling);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please shuru wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];fwrite(&data,sizeof(data),1,fp);printf("another?y/n");ch=getch();if(ch=='n'||ch=='N')break;} fclose(fp); /*读文件结束*/}void xianshi(){float s;int n;if((fp=fopen("s_score.txt","rb+"))==NULL) /*以读写方式打开名为s_score的文件*/ {printf("Cannot reading this file.\n"); /*先检查打开的操作是否出错*/exit(0);}for(i=0;i<=1000;i++){if((fread(&info[i],sizeof(info[i]),1,fp))!=1) /*检查是否出错*/break; /*指针要读写字节数要读写size字节的数据项文件型指针*/}printf("\nxuehao mingzi nianling shuxue yingyu wuli zongfen\n");for(j=0,k=1;j<i;j++,k++){info[j].mingci=k;printf("%6s %8s %3s %3.1f %3.1f %3.1f %3.1f \n",info[j].xuehao,info[j].mingzi,info[j].nianling,info[j].score[0],info[j].sco re[1],info[j].score[2],info[j].score[3]);}getch();fclose(fp);}void xiugai(){if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL) /*检查是否出错*/{printf("Cannot open this file.\n");exit(0);}printf("\nPLease shuru xiugai xuehao:");scanf("%d",&i); getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("xuehao:%s\nmingzi:%s\nnianling:%s\n",data.xuehao,data.mingzi,data.nianl ing);printf("Please shuru mingzi:");gets(data.mingzi);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please input wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];} fwrite(&data,sizeof(data),1,fp1);}fseek(fp,0L,0); /*将位置指针移到离头文件0个字节处*/fseek(fp1,0L,0);while((fread(&data,sizeof(data),1,fp1))==1){fwrite(&data,sizeof(data),1,fp);}fclose(fp);fclose(fp1);}void chazhao(){if((fp=fopen("s_score.txt","rb"))==NULL){printf("\nCannot open this file.\n");exit(0);}printf("\nPLease shuru xuehao chakan:");scanf("%d",&i);while(fread(&data,sizeof(data),1,fp)==1){j=atoi(data.xuehao);if(i==j){printf("xuehao:%s mingzi:%s\n nianling:%s\n shuxue:%f\n yingyu:%f\n wuli:%f\n zongfen:%f\n",data.xuehao,data.mingzi,data.nianling,data.score[0],data.score[1] ,data.score[2],data.score[3]);}getch();}}void shanchu(){if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL) {printf("\nopen score.txt was failed!");getch();exit(0);}printf("\nPlease input ID which you want to del:");scanf("%d",&i);getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("Anykey will delet it.\n");getch();continue;}fwrite(&data,sizeof(data),1,fp1);}fclose(fp);fclose(fp1);remove("s_score.txt");rename("temp.txt","s_score.txt");printf("Data delet was succesful!\n");printf("Anykey will return to main.");getch();}main(){while(1){clrscr();printf("*************welcome to use student manage******************\n"); printf("*************************menu********************************\n"); printf("* ========================================================= * \n"); printf("* A>shuru B>xiugai * \n");printf("* C>shanchu D>chazhao * \n");printf("*E>xianshi F>exit * \n");printf("* * \n");printf("* --------------------------------------------------------- * \n"); printf(" Please input which you want(A-F):");ch=getch();switch(ch){case 'A':shuru();break;case 'B':xiugai(); break;case 'C':shanchu(); break;case 'D':chazhao(); break;case 'E':xianshi(); break;case 'F':exit(0);default: continue;}}}···············································································。
#include<stdio.h>struct student(int num;char name[20];char sex[10];int age;float computer;float math;float English;float sum_score;};int max(struct student a[]Jnt n)(int kJ;float m;m=a[0].sum_score;k=0;for(i=l;i<3;i++){if(m<a[i].sum_score){k=i;m=a[i].sum_score;)}return k;)void paixiul(struct student a[]Jnt n)(int i,j;for(i=0;i<n-l;i++){for(j=i+l;j<n-l;j++){if(a[i].sum_score>a[j].sum-score){a[n]=a[i];a[i]=aUl;aU]=a[n];)void paixiu2(struct student a[],int n)(int i,j;for(i=0;i<n-l;i++){for(j=i+l;j<n-l;j++){if(a[i].computer>a[j].computer) {a[n]=a[i];a[i]=aUl;aU]=a[n];))})void paixiu3(struct student a[],int n)(int i,j;for(i=0;i<n-l;i++){for(j=i+l;j<n-l;j++){if(a[i].math>a[j].math){a[n]=a[i];a[i]=aUl;aU]=a[n];))})void paixiu4(struct student a[],int n)(int i,j;for(i=0;i<n-l;i++){for(j=i+l;j<n-l;j++){if(a[i].English>a[j].English){a[n]=a[i];a[i]=aUl;a[j]=a[n];)〃学生成绩管理系统的设计与实现〃学生信息:〃学号num〃姓名name〃性别sex〃年龄age〃计算机成绩computer〃数学成绩math〃英语成绩English〃总成绩sum_score〃要求:void main()(int i/n/mJ/t=3/a[100]={100}/k=l;float max_sum;struct student stu[100]={{1001;,zhangsan";'g",21,98,75,SeiJlOOZ/'lisi'V'b",20,78,63/92}/{1003;'wangwu"/"g",2 1,90,88,70}};printf("请选择:1:输出2:求学生总分3:求总分最高分学生的基本信息4:按总分排序5:按计算机成绩排序6战数学成绩排序7:按英语成绩排序8:按学号查找某位同学9:从键盘输入某位学生信息,插入到数组中10:从键盘输入学号,删除该学号的学生信息0:退出:\n");scanf(“%d”,&m);for(i=0;i<t;i++)stu[i].sum_score=stu[i].computer+stu[i].math+stu[i].English;while(m!=0){switch(m){case 1:{for(j=0;j<t;j++)(if(j!=a[k-l])printf("%d %s %s%d %f %f %f %f\n",stu[j].num,stu[j].name z stu[j].sex,stu[j].age z stu[j].compu ter,stu[j].math z stu[j].English/stu[j].sum_score);)}break;case 2:for(j=0;j<t;j++)if(j!=a[k-l])printf(H%s %f\n,,/stu[j].name/stuO].sum_score);)}break;case 3:{n=max(stu,t);printf("%d %s %s %d %f %f %f %f\n"/stu[n].num/stu[n].name/stu[n].sex/stu[n].age/stu[n].co mputeostu[n].math/stu[n].English/stu[n].sum_score);}break;case 4:{paixiul(stu z t+l);for(j=0;j<t;j++)(if(j!=a[k-l])printf("%d %s %s%d %f %f %f %f\n",stu[j].num/stu[j].name/stu[j].sex/stu[j].age/stu[j].compu ter/stu[j].math/stu[j].English/stu[j].sum_score);)}break;case 5:{paixiu2(stu z t+l);for(j=0;j<t;j++)(if(j!=a[k-l])printf("%d %s %s%d %f %f %f %f\n",stu[j].num/stu[j].name/stu[j].sex/stu[j].age/stu[j].compu ter/stu[j].math/stu[j].English/stu[j].sum_score);)}break;case 6:{paixiu3(stu z t+l);for(j=0;j<t;j++)(printf("%d %s %s %d %f %f %f %f\n,,/stuO].num/stu[j].name/stuO].sex/stuO].age/stu[j].computer/stu[j].math/stu[j].English/stu[j].sum_score);)}break;case 7:{paixiu4(stu,t+l);for(j=0;j<t;j++)(if(j!=a[k-l])printf("%d %s %s%d %f %f %f %f\n"/stu[j].num/stu[j].name/stu[j].sex z stu[j].age/stu[j].computer/stu[j].math/stu[j].English/stu[j].sum_score);)}break;case 8:{printf(“请输入学号\n“);scanf("%d”,&n);for(i=0;i<t;i++)(if(n==stu[i].num) break;)if(i!=t)printf("%d %s %s %d %f %f %f %f\n',/stu[ij.num/stu[i].name/stu[i].sex/stu[i].age/stu[i].compu ter/stu[i].math z stu[i].English/stu[i].sum_score);elseprintf("查无此人\n");}break;case 9:{t++;printf("请输入学生信息\n”);scanf(H%d %s %s %d %f %f %f,,,&stu[t-l].num/stu[t-l].name/stu[t-l].sex,&stu[t-l].age/&stu[t -l].computer,&stu[t-l].math,&stu[t-l].English);stu[t-l].sum_score=stu[t-l].computer+stu[t-l].math+stu[t-l].English;for(j=0;j<t;j++)(if(stu[t-l].num!=stu[j].num)(for(j=0;j<t;j++)if(j!=a[k-l])printf("%d %s %s%d %f %f %f %f\n"/stu[j].num/stu[j].name/stu[j].sex/stu|j].age/stu[j].compu ter,stu[j].math,stu[j].English,stu[j].sum_score);})elseprintf("学号重合,有误\n");break;)}break;case 10:{printf ("请输入学号\n”);scanf("%d",&n);for(i=0;i<t;i++)(if(n==stu[i].num)break;)a[k]=i;if(a[k]!=t)(for(j=0;j<t;j++)(if(j!=a[k])printf("%d %s %s%d %f %f %f %f\n"/stu[j].num/stu[j].name/stu[j].sex,stu|j].age/stu[j].compu ter,stu[j].math,stu[j].English,stu[j].sum_score);))else(printf("查无此人\n");for(j=0;j<t;j++)printf("%d %s %s%d %f %f %f %f\n"/stu[j].num/stu[j].name/stu[j].sex,stu|j].age/stu[j].compu ter,stu[j].math,stu[j].English,stu[j].sum_score);)k++;}break;}printf("请选择:1:输出2:求学生总分3:求总分最高分学生的基本信息全按总分排序5:按计算机成绩排序6:按数学成绩排序7:按英语成绩排序8:按学号查找某位同学9:从键盘输入某位学生信息,插入到数组中10:从键盘输入学号,删除该学号的学生信息0:退出:\n");scanf("%d",&m);})〃⑴定义结构体数组,并初始化学生信息(总成绩不需要输入)〃(2)输出学生基本信息〃⑶求每位同学的总分〃⑷求总分最高分学生的基本信息〃⑸按总分排序〃⑹按某一个科成绩排序〃⑺按学号查找某位同学〃⑻从键盘输入某位学生信息,插入到数组中〃⑼从键盘输入学号,删除该学号的学生信息〃要求使用菜单完成。
*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(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语言大作业目录一.目的1.1、通过本次大作业,锻炼我们应用C语言的语法规则和已经掌握的算法,自己解决一个较简单的课题,初步积累编程经验。
、通过学习掌握程序设计的方法与编程技术,学会良好的程序设计风格,为计算机在不同领域的应用打下坚实的基础。
、要求我们能利用计算机解决实际问题。
从分析问题入手,设计可行的算法,进而编出相应的C程序。
强调上机实践过程,从实际应用出发,注重程序的实际应用。
二.题目描述和要求题目:学生成绩管理系统应用链表及外部文件,独立设计上述应用系统,并编程实现以下功能:信息录入录入学生信息(包括姓名、学号、各科成绩)。
信息查询输入学号,查询与学号相对应的信息(包括成绩),并按可选的自定义规则进行排序。
按班级查询学生成绩。
按班级统计学科总分、平均分等。
信息删除与修改输入学号,删除该学号对应的成绩信息。
输入学号,查询并显示出该学号信息,并在此基础上进行修改。
计算学生成绩计算每位学生的总分。
计算每位学生的平均分。
成绩排序。
信息保存将学生信息保存在文件中。
根据以上功能需求,定义通讯录信息结构,并采用链表结构对数据进行存储。
提供友好的用户界面,方便用户操作。
三.报告内容需求分析随着当今社会发展,信息化水平逐步提高,对教务管理有了新的要求,因此,编写一个信息管理系统是十分有必要的。
该软件主要是实现对学生信息进行系统化的管理,首先可以对学生基本信息进行输入和读取,其次查找并显示特定学生的相关信息,然后可以插入学生的相关信息,还有就是可按学生相关信息排序,以求达到简易操作的目的。
概要设计1.系统结构图(功能模块图)和数据变量说明2.系统总体流程图详细设计主要源程序代码#include<>#include<>#include <cstdlib>struct Student{char ID[20];char Name[20];float scor_eng;float scor_math;float scor_phy;float Average;};struct Student students[1000];int num=0;float Avg(struct Student stu){return ++/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%%%%\n",students[index].ID,students[index].Name,students[index].scor_eng,students[index].scor_math,students[index].scor_phy,stud ents[index].Average);}void Student_Insert(){while(1){printf("请输入学号:");scanf("%s",&students[num].ID);getchar();printf("请输入姓名:");scanf("%s",&students[num].Name);getchar();printf("请输入英语成绩:");scanf("%f",&students[num].scor_eng);getchar();printf("请输入数学成绩:");scanf("%f",&students[num].scor_math);getchar();printf("请输入物理成绩:");scanf("%f",&students[num].scor_phy);getchar();students[num].Average=Avg(students[num]); num++;printf("是否继续(y/n)");if (getchar()=='n'){break;}}}void Student_Modify(){while(1){char id[20];int index;printf("请输入要修改的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要修改的学生信息为:\n"); Student_DisplaySingle(index);printf("-- 请输入新值--\n");printf("请输入学号:");scanf("%s",&students[index].ID);getchar();printf("请输入姓名:");scanf("%s",&students[index].Name);getchar();printf("请输入英语成绩:");scanf("%f",&students[index].scor_eng);getchar();printf("请输入数学成绩:");scanf("%f",&students[index].scor_math);getchar();printf("请输入物理成绩:");scanf("%f",&students[index].scor_phy);getchar();students[index].Average=Avg(students[index]); }printf("是否继续(y/n)");if (getchar()=='n'){break;}}}void Student_Delete(){int i;while(1){char id[20];int index;printf("请输入要删除的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要删除的学生信息为:\n");Student_DisplaySingle(index);printf("是否真的要删除(y/n)");if (getchar()=='y'){for (i=index;i<num-1;i++){students[i]=students[i+1]; }num--;}getchar();}printf("是否继续(y/n)");if (getchar()=='n'){break;}}}void Student_Select(){while(1){char name[20];int index;printf("请输入要查询的学生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if (index==-1){printf("学生不存在!\n");}else{printf("你要查询的学生信息为:\n"); Student_DisplaySingle(index);}printf("是否继续(y/n)");if (getchar()=='n'){break;}}}void Student_SortByAverage(){int i,j;struct Student tmp;for (i=0;i<num;i++){for (j=1;j<num-i;j++){if (students[j-1].Average<students[j].Average){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}void Student_Display(){int i;printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","英语成绩","数学成绩","物理成绩","平均成绩");printf("-------------------------------------------------------------\n"); for (i=0;i<num;i++){printf("%10s%10s%%%%\n",students[i].ID,students[i].Name,students[i].scor_eng,students[i].scor_math,students[i].scor_phy,students[i].Aver age);}}void IO_ReadInfo(){FILE *fp;int i;if ((fp=fopen("","rb"))==NULL){printf("不能打开文件!\n");return;}if (fread(&num,sizeof(int),1,fp)!=1){num=-1;}else{for(i=0;i<num;i++){fread(&students[i],sizeof(struct Student),1,fp);}}fclose(fp);}void IO_WriteInfo(){FILE *fp;int i;if ((fp=fopen("","wb"))==NULL){printf("不能打开文件!\n");return;}if (fwrite(&num,sizeof(int),1,fp)!=1){printf("写入文件错误!\n");}for (i=0;i<num;i++){if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1) {printf("写入文件错误!\n");}}fclose(fp);}int main(){int choice;IO_ReadInfo();while(1){printf("\n------ 学生成绩管理系统------\n");printf("1. 增加学生记录\n");printf("2. 修改学生记录\n");printf("3. 删除学生记录\n");printf("4. 按姓名查询学生记录\n"); printf("5. 按平均成绩排序\n");printf("6. 保存文件\n");printf("7. 退出\n");printf("请选择(1-7):");scanf("%d",&choice);getchar();switch(choice){case 1:Student_Insert();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Select();break;case 5:Student_SortByAverage();Student_Display();break;case 6:IO_WriteInfo();break;case 7:exit(0);break;}}}测试分析C语言是上学期的学习内容,现在生疏了很多,以致程序运行过程中有许多bug,测试也有很多想不到的错误。
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。
三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。
四、输出全部学生信息和全部学生成绩。
五、退出系统。
六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找.总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩.3、插入模块:可用insert( )函数来实现.其中通过学号的大小来比较的,并且以此来排序。
4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计. 主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h"#include"stddef。
一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计程序要有的功能:1。
输入记录2。
用指定格式显示全部记录3。
根据姓名查找记录4。
根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7。
按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
流程图:四、详细设计源程序:#include ”stdio。
h”#include "stdlib.h”#include "string。
h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。
C语言项目案例分析C语言项目案例:学生成绩管理系统概述:学生成绩管理系统是一个用于管理学生信息和成绩的软件系统。
该系统可以实现添加、删除、修改学生信息和成绩的功能,并且可以按照学生的学号或者姓名进行查找和排序。
功能要求:1. 学生信息管理:可以添加、删除、修改学生的基本信息,包括学号、姓名、性别、年龄等。
2. 成绩管理:可以添加、删除、修改学生的各科成绩,包括语文、数学、英语等。
3. 查找功能:可以根据学生的学号或者姓名查找学生信息和成绩。
4. 排序功能:可以按照学号、总成绩等排序学生信息和成绩。
设计思路:1. 数据结构设计:采用结构体数组来存储学生信息和成绩,结构体中包含学号、姓名、性别、年龄和各科成绩等字段。
2. 功能模块划分:将学生信息管理、成绩管理、查找功能和排序功能分别实现为不同的函数模块,通过调用这些函数来完成相应的功能。
3. 用户界面设计:通过命令行界面来实现用户与系统的交互,可以通过输入数字来选择相应的功能菜单,并根据用户的输入来执行相应的功能。
代码实现:以下是一个简单的学生成绩管理系统的代码示例:#include <stdio.h>#include <string.h>// 学生结构体struct student {int id;char name[20];int age;float chinese;float math;float english;};// 添加学生信息void addStudent(struct student* stu) {printf("请输入学生的学号:");scanf("%d", &stu->id);printf("请输入学生的姓名:");scanf("%s", stu->name);printf("请输入学生的年龄:");scanf("%d", &stu->age);printf("请输入学生的语文成绩:");scanf("%f", &stu->chinese);printf("请输入学生的数学成绩:");scanf("%f", &stu->math);printf("请输入学生的英语成绩:");scanf("%f", &stu->english);}// 删除学生信息void deleteStudent(struct student* stu) { stu->id = 0;strcpy(stu->name, "");stu->age = 0;stu->chinese = 0.0;stu->math = 0.0;stu->english = 0.0;}// 修改学生信息void modifyStudent(struct student* stu) { printf("请输入学生的学号:");scanf("%d", &stu->id);printf("请输入学生的姓名:");scanf("%s", stu->name);printf("请输入学生的年龄:");scanf("%d", &stu->age);printf("请输入学生的语文成绩:"); scanf("%f", &stu->chinese);printf("请输入学生的数学成绩:"); scanf("%f", &stu->math);printf("请输入学生的英语成绩:"); scanf("%f", &stu->english);}// 查找学生信息void findStudent(struct student* stu, int id) {if (stu->id == id) {printf("学号:%d,姓名:%s,年龄:%d,语文成绩:%.1f,数学成绩:%.1f,英语成绩:%.1f\n", stu->id, stu->name, stu->age, stu->chinese, stu->math, stu->english);}}// 排序学生信息void sortStudents(struct student* stu, int count) {// 冒泡排序for (int i = 0; i < count - 1; i++) {for (int j = 0; j < count - i - 1; j++) {if (stu[j].id > stu[j + 1].id) {struct student temp = stu[j];stu[j] = stu[j + 1];stu[j + 1] = temp;}}}}int main() {int choice;int count = 0;struct student students[100];do {printf("学生成绩管理系统\n");printf("1. 添加学生信息\n");printf("2. 删除学生信息\n");printf("3. 修改学生信息\n");printf("4. 查找学生信息\n");printf("5. 排序学生信息\n");printf("0. 退出\n");printf("请选择操作:");scanf("%d", &choice);switch (choice) {case 1:addStudent(&students[count]);count++;break;case 2:deleteStudent(&students[count - 1]);count--;break;case 3:modifyStudent(&students[count - 1]); break;case 4: {int id;printf("请输入要查找的学生学号:"); scanf("%d", &id);for (int i = 0; i < count; i++) {findStudent(&students[i], id);}break;}case 5:sortStudents(students, count);break;case 0:break;default:printf("请输入正确的操作!\n");break;}} while (choice != 0);return 0;}总结:通过以上的案例分析,可以看出,C语言可以实现一些简单的项目,例如学生成绩管理系统。
学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。
本文将介绍如何使用C语言编写一个简单的学生管理系统。
功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。
我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。
h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。
#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 99int n1 = 10, n2 = 40;struct student {char Sname[20];char Sno[10];char gender[5];int age;}stu[N] = { { "ruby","1001","女",19 },{ "夏目","1002","男",19 },{ "钱心一","1003","男",19 },{ "陈西安","1004","男",19 },{ "费渡","1005","男",19 },{ "骆闻舟","1006","男",19 },{ "紫堂幻","1007","男",19 },{ "魏无羡","1008","男",19 },{ "蓝忘机","1009","男",19 } ,{ "喻文州","1010","男",19 } };struct course {char Cname[20];char Cno[5];}co[N] = { { "C++","01" },{ "Database","02" },{ "Math","03" },{ "English","04" } };struct grade {char Sno[10];char Cno[5];int Grade;}gra[N] = { { "1001","01",95 },{ "1001","02",94 },{ "1001","03",96 },{ "1001","04",100 }, { "1002","01",96 },{ "1002","02",91 },{ "1002","03",86 },{ "1002","04",80 }, { "1003","01",76 },{ "1003","02",81 },{ "1003","03",95 },{ "1003","04",79 }, { "1004","01",76 },{ "1004","02",97 },{ "1004","03",75 },{ "1004","04",69 }, { "1005","01",96 },{ "1005","02",93 },{ "1005","03",76 },{ "1005","04",71 }, { "1006","01",96 },{ "1006","02",83 },{ "1006","03",100 },{ "1006","04",92 }, { "1007","01",96 },{ "1007","02",87 },{ "1007","03",98 },{ "1007","04",94 }, { "1008","01",96 },{ "1008","02",95 },{ "1008","03",87 },{ "1008","04",72 }, { "1009","01",96 },{ "1009","02",96 },{ "1009","03",96 },{ "1009","04",99 },{ "1010","01",96 },{ "1010","02",94 },{ "1010","03",76 },{ "1010","04",90 }, };void write_file(struct student stu[], struct course co[], struct grade gra[]); void consult();void add();void dele();void change();void display();int main(){char str[N + 1];int time;write_file(stu, co, gra);printf("\n 学生成绩管理系统 \n");printf("-----------------------\n");printf("consult:学生成绩查询\n");printf("add:追加学生成绩\n");printf("display:显示已有学生\n");printf("delete:删除已有学生\n");printf("change:修改学生成绩\n");printf("q:退出 \n");printf("-----------------------\n");printf("注:课程编号:\n");printf("C++ 01\nDatabase 02\nMath 03\nEnglish 04\n");printf("-----------------------\n");printf("注:已有学生十人\n");printf("-----------------------\n");printf("请输入所需执行功能:");scanf("%s", &str);while (strcmp(str, "q")) {if (!strcmp(str, "consult")) {consult();}else if (!strcmp(str, "add")) {add();}else if (!strcmp(str, "delete")) {dele();}else if (!strcmp(str, "display")) {display();}else if (!strcmp(str, "change")) {change();}else {printf("输入错误,重新输入:");continue;}printf("请输入所需执行功能:");scanf("%s", str);}return 0;}void write_file(struct student stu[], struct course co[], struct grade gra[]){FILE *w1, *w2, *w3;if (w1 = fopen("student information.txt", "w")) {for (int i = 0; stu[i].age != NULL&& i < N; i++) {fprintf(w1, "%s %s %s %d\n", stu[i].Sname, stu[i].Sno, stu[i].gender, stu[i].age);}fclose(w1);}elseprintf("Basic information fail.");if (w2 = fopen("course.txt", "w")) {for (int i = 0; i < N; i++) {fprintf(w2, "%s %s\n", co[i].Cname, co[i].Cno);}fclose(w2);}elseprintf("Course fail.");if (w3 = fopen("grade.txt", "w")) {for (int i = 0; gra[i].Grade != NULL&& i < N; i++) {fprintf(w1, "%s %s %d\n", gra[i].Sno, gra[i].Cno, gra[i].Grade);}fclose(w3);}elseprintf("Grade fail.");}void consult(){char n[N + 1];printf("输入名字或学号:");scanf("%s", n);printf("基础信息:");for (int i = 0; i < N; i++) {if ((!strcmp(stu[i].Sname, n)) || (!strcmp(stu[i].Sno, n))) {printf("%s %s %s %d\n", stu[i].Sname, stu[i].Sno, stu[i].gender,stu[i].age);//输出基本信息printf("各课程成绩:");for (int j = 0; j < N; j++) {if (!strcmp(stu[i].Sno, gra[j].Sno))printf("%s %d ", gra[j].Cno, gra[j].Grade);//输出课程成绩}printf("\n");return 1;}}printf("查无此人\n");}void add(){FILE *fp1, *fp2;printf("输入学生姓名,学号,性别,年龄,课程编号,成绩:");scanf("%s %s %s %d %s %d", &stu[n1].Sname, &stu[n1].Sno, &stu[n1].gender, &stu[n1].age, &gra[n2].Cno, &gra[n2].Grade);strcpy(gra[n2].Sno, stu[n1].Sno);for (int i = 0; i < N; i++) {if (!strcmp(stu[n1].Sno, stu[i].Sno))if (!strcmp(gra[n2].Cno, gra[i].Cno))printf("已经存在");}if (fp1 = fopen("student information.txt", "a")) {//添加基本信息fprintf(fp1, "%s %s %s %d\n", stu[n1].Sname, stu[n1].Sno, stu[n1].gender,stu[n1].age);n1++;fclose(fp1);}elseprintf("不存在student information.txt");if (fp2 = fopen("grade.txt", "a")) {fprintf(fp2, "%s %s %d\n", gra[n2].Sno, gra[n2].Cno, gra[n2].Grade);n2++;fclose(fp2);}elseprintf("不存在grade.txt");}void dele(){char n[N + 1];printf("输入删除的人的学号:");gets(n);for (int i = 0; i < N; i++) {if (!strcmp(n, stu[i].Sno)) {memset(&stu[i], 0, sizeof(struct student));}}for (int j = 0; j < N; j++) {if (!strcmp(n, gra[j].Sno)) {memset(&gra[j], 0, sizeof(struct grade));}}}void change(){char per[N + 1], chan[N + 1];int right = 0;printf("输入修改学生的学号:");//把所有需要的数据读入scanf("%s", per);printf("输入课程编号:");scanf("%s", chan);printf("输入正确成绩:");scanf("%d", &right);for (int i = 0; i < N; i++) {if (!strcmp(per, gra[i].Sno))if (!strcmp(chan, gra[i].Cno))gra[i].Grade = right;}}void display(){printf("显示所有已输入信息(姓名,学号,性别,年龄,各科成绩\n");for (int i = 0; stu[i].age!=0&&i<N; i++) {printf("%s %s %s %d ", stu[i].Sname, stu[i].Sno, stu[i].gender, stu[i].age);for (int j = 0; gra[i].Grade!=0&&j < N; j++) {if (!strcmp(stu[i].Sno, gra[j].Sno))printf("%s %d\t", gra[j].Cno, gra[j].Grade);}printf("\n");}}。