欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

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

    • 资源ID:3155356       资源大小:41.38KB        全文页数:15页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    C语言课程设计 学生成绩管理系统C语言课程设计报告: 学生成绩管理系统 系统需求 一、 当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息. 二、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。 三、新生插入 :通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。 四、输出全部学生信息和全部学生成绩。 五、退出系统. 六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。 总体设计 一、 仔细阅读系统要求,首先将此系统化分为如下模块 1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。 2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。 3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。 4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage 、maverage 、eaverage 和comaverage 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。 5、退出系统:可用一个函数exit来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。 二、系统主模块结构图: 详细设计 一、 界面设计 此系统界面采用图形和数字化菜单设计。 主界面设计如下: 学生成绩管理系统 请选择相应的数字执行相应的功能: 1:是否输入其他数据 2:查看数据 3:插入数据 4:查找数据 5:更新数据 6:保留数据 7:显示或打印数据 8:语文成绩状况 9:数学成绩状况 10:英语成绩状况 11:计算机成绩状况 12:? 13:退出系统 二、 数据结构设计: 程序设计中用到的结构体类型: 学生信息结构体类型: typedef struct student char nameMAX; int numMAX; char sexMAX; int chinese; int mathematic; int english; int computer; struct student *next; 程序代码: /原始密码是123456 #include"stdio.h" #include"stddef.h" #include"stddef.h" #include"string.h" #define MAX 10 typedef struct student /*定义结构体*/ char nameMAX; /*姓名*/ int numMAX; /* 学号*/ char sexMAX; /*性别*/ int chinese; /*语文*/ int mathematic; /* 数学*/ int english; /*英语*/ int computer; /*计算机*/ struct student *next; /*结构体指针*/ stu; stu *head; /*头指针*/ void print /*显示或打印函数*/ system("cls"); printf("tttScore Manage Systemn"); /*成绩管理系统*/ printf("<1>Enter Recordt"); /*输入数据*/ printf("<2>Displayt"); /*显示*/ printf("<3>Insertt"); /*插入数据*/ printf("<4>Questt"); /*访问数据*/ printf("<5>Updatet"); /*以前数据*/ printf("<6>Savet"); /*保留数据*/ printf("<7>Fresht"); /*更新数据*/ printf("<8>Chinese Averaget"); /*语文平均成绩*/ printf("<9>Math Averaget"); /*数学平均成绩*/ printf("<10>English Averaget"); /*英语平均成绩*/ printf("<11>Computer Averaget"); /*计算机平均成绩*/ printf("<12>Quittn"); /*退出*/ void cin(stu *p1) /*输入相关数据的函数*/ printf("Enter name:n"); scanf("%s",&p1->name); printf("Enter num:n"); scanf("%d",&p1->num); printf("Enter sex:n"); scanf("%s",&p1->sex); printf("Enter score:n"); printf("Enter chinese:n"); scanf("%d",&p1->chinese); printf("Enter math:n"); scanf("%d",&p1->mathematic); printf("Enter English:n"); scanf("%d",&p1->english); printf("Enter Computer:n"); scanf("%d",&p1->computer); stu *cindata /*其他数据是否继续输入的函数*/ stu *p1,*p2; int i=1; char ch; p1=(stu *)malloc(sizeof(stu); head=p1; while(i) cin(p1); printf("Do you Want to Continue?yes or no"); /*是否继续输入数据*/ ch=getchar; ch=getchar; if(ch='n'|ch='N') i=0; p1->next=NULL; else p2=p1; p1=(stu *)malloc(sizeof(stu); p2->next=p1; return(p1->next); stu *lookdata(stu *p1) /*查看数据的函数*/ while(p1!=NULL) printf("Num:%dt",p1->num); printf("Name:%st",p1->name); printf("Sex:%st",p1->sex); printf("n"); printf("Chinese:%dt",p1->chinese); printf("Math:%dt",p1->mathematic); printf("English:%dt",p1->english); printf("Computer:%dt",p1->computer); printf("n"); p1=p1->next; return p1; void insert /*通过比较学号来插入数据的函数*/ stu *p1,*p3,*p2; char ch; p1=head; p3=(stu *)malloc(sizeof(stu); p3->next=NULL; if(head=NULL) head=p3; return; cin(p3); while(p1!=NULL&&(p1->num<p3->num) /*通过学号的比较来插入*/ p2=p1;p1=p1->next; if(p2=head) p3->next=head; head=p3; return; p3->next=p1; p2->next=p3; find(stu *p2) /*通过姓名查找查看数据的函数*/ char name20; int b=0; printf("Enter the name of the student you want to find:"); /*通过姓名查看*/ scanf("%s",name); while(p2!=NULL) if(strcmp(name,p2->name)=0) printf("The data you want has be foundn"); printf(" Name:%st",p2->name); printf("Num:%dt",p2->num); printf("sex%st",p2->sex); printf("n"); printf("Chinese:%dt",p2->chinese); printf("Math:%dt",p2->mathematic); printf("English:%dt",p2->english); printf("Computer:%dt",p2->computer); printf("n"); b=1; else if(b=0) printf("sorry not find data!"); p2=p2->next; if(b=1) print; printf("Find onen"); else print; printf("Not findn"); void caverage /*求各学生语文平均分、最高和最低分成绩的函数*/ stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf("not data!"); else for(i=0;p1!=NULL;i+,p1=p1->next) sum+=p1->chinese; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(max<p1->chinese) max=p1->chinese; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(min>p1->chinese) min=p1->chinese; printf("Chinese Average:%f",aver); printf("Chinese Max:%f",max); printf("Chinese Min:%f",min); void maverage /*求各学生数学平均分、最高和最低分成绩的函数*/ stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf("not data!"); else for(i=0;p1!=NULL;i+,p1=p1->next) sum+=p1->mathematic; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(max<p1->mathematic) max=p1->mathematic; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(min>p1->mathematic) min=p1->mathematic; printf("Mathe Average:%f",aver); printf("Mathe Max:%f",max); printf("Mathe Min:%f",min); void eaverage /*求各学生英语平均分、最高和最低分成绩的函数*/ stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf("not data!"); else for(i=0;p1!=NULL;i+,p1=p1->next) sum+=p1->english; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(max<p1->english) max=p1->english; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(min>p1->english) min=p1->english; printf("English Average:%f",aver); printf("English Max:%f",max); printf("English Min:%f",min); void comaverage /*求各学生计算机平均分、最高和最低分成绩的函数*/ stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf("not data!"); else for(i=0;p1!=NULL;i+,p1=p1->next) sum+=p1->computer; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(max<p1->computer) max=p1->computer; p1=head; for(i=0;p1!=NULL;i+,p1=p1->next) if(min>p1->computer) min=p1->computer; printf("Computer Average:%f",aver); printf("Computer Max:%f",max); printf("Computer Min:%f",min); update(stu *p2) /*通过姓名查找来更新数据*/ char name10; /*p2为指向结构体struct student的指针*/ int b=0; printf("Enter The Name"); /*输入姓名*/ scanf("%s",name); while(p2!=NULL) if(strcmp(name,p2->name)=0) printf("Find you datan"); scanf("Name:%s",p2->name); scanf("Num:%s",p2->num); scanf("Sex:%s",p2->sex); scanf("Chinese:%d",p2->chinese); scanf("Math:%d",p2->mathematic); scanf("english:%d",p2->english); scanf("Computer:%d",p2->computer); printf("Success!"); b=1; else if(b=0) printf("Sorry not Find data!"); p2=p2->next; if(b=0) print; printf("Sorry not Find data!"); else print; printf("Finish!"); save(stu *p2) /*保留数据函数*/ FILE *fp; char file10; printf("Enter file name"); /*输入文件名*/ scanf("%s",file); fp=fopen(file,"w"); while(p2!=NULL) fprintf(fp,"%s",p2->name); fprintf(fp,"%s",p2->num); fprintf(fp,"%s",p2->sex); fprintf(fp,"%d",p2->chinese); fprintf(fp,"%d",p2->mathematic); fprintf(fp,"%d",p2->english); fprintf(fp,"%d",p2->computer); p2=p2->next; fclose(fp); char password7="123456" /*定义初始密码*/ void main /*主函数*/ int choice; stu *p2; char s8; int flag=0,i; /*标志项*/ int n=3; do printf("Enter password:n"); scanf("%s",s); if(!strcmp(s,password) /*进行密码匹配验证*/ printf("PASSnnn"); flag=1; break; else printf("Error Enter again:n"); n-; while(n>0); if(!flag) printf("you have Enter 3 times!"); /*输入密码超过了3次!*/ exit(0); /*自动退出*/ /*密码验证成功后进入的界面*/ printf("tttn"); /*操作界面*/ printf("ttWelcom to the Misn"); printf("Author:-tClass:-tNum:-n"); /*作者,班级和号码*/ printf("Adress:HGn"); /*地址*/ printf("%n"); printf("ttEnter OP:n"); printf("nnnn"); printf("=tt=n"); printf("=tt=n"); printf("ttEnter the MIS yes or non"); /*问进入系统与否*/ scanf("%d",&choice); if(choice='n'|choice='N') exit(1); print; while(1) printf("Enter choice:"); scanf("%d",&i); if(i<1|i>13) printf("Enter num from 1 to 13:n"); /*再从1-13中进行选择*/ exit(1); switch(i) case 1: p2=cindata; /*其他数据是否继续输入的函数*/ break; case 2: p2=lookdata(head); /*查看数据的函数*/ break; case 3: insert; /*通过比较学号来插入数据的函数*/ break; case 4: find(head); /*通过姓名查找查看数据的函数*/ break; case 5: update(head); /*通过姓名查找来更新数据*/ break; case 6: save(head); /*保留数据函数*/ break; case 7: print; /*显示或打印函数*/ break; case 8: caverage; /*求各学生语文平均分、最高和最低分成绩的函数*/ break; case 9: maverage; /*求各学生数学平均分、最高和最低分成绩的函数*/ break; case 10: eaverage; /*求各学生英语平均分、最高和最低分成绩的函数*/ break; case 11: comaverage; /*求各学生计算机平均分、最高和最低分成绩的函数*/ break; case 12: ; /*空操作*/ case 13: exit(1); /*退出*/ break; scanf("%d",&i); 程序中出现的问题及解决方法 问题一、学生初始信息模块: 其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。 解决办法及步骤: 1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。 2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错 3、输出用于循环检查语句中的学生信息,发现乱码 4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。 问题二、查询模块: 可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。 解决办法及步骤: 1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。 2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。 问题三、插入模块: 可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。 解决办法及步骤: 1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。 2、检查当我们在输入插入信息时,看是否我们输入的插入信息有

    注意事项

    本文(C语言课程设计 学生成绩管理系统.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开