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

    学生成绩管理系统源程序.doc

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

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

    学生成绩管理系统源程序.doc

    #include <stdio.h>#include <stdlib.h>#include <string.h>#define PF printf#include "time.h " #define LEN sizeof(struct St1)/定义结构体/typedef struct St1 char IDNumber16;/*学号*/ char FamilyName16; /*姓*/ char GivenName16; /*名*/ int sex; /*性别(0代表"女",1代表"男")*/ int BirthYear; /*出生年*/ int BirthMonth; /*出生月*/ int BirthDay; /*出生日*/ float score0,score1,score2,score3; /*成绩*/ float sum; /*总分*/ float average; /*平均分*/ struct St1 *next; StudentNode;int time()struct tm* ptm;long ts;int y,m,d,h,n,s;ts = time(NULL); ptm = localtime(&ts); y = ptm-> tm_year+1900; /年 m = ptm-> tm_mon+1; /月d = ptm-> tm_mday; /日h = ptm-> tm_hour; /时n = ptm-> tm_min; /分s = ptm-> tm_sec; /秒return(y); StudentNode *head=NULL; /全局指针 int n,i=0,c=0,d=0,j=0; /全局变量 j在函数中作数组下标或循环变量 c为总分数组中元素个数 d为平均分数组元素个数float English=0.0,Math=0.0,C=0.0,Mazhe=0.0,Sum100,Avr100; /全局变量/自定义函数/void show_menu(); /显示菜单void menu(); /执行菜单void creat_stu(); /建立链表 void input_stu(); /输入学生信息void print_stu(); /显示链表中所有记录信息void search_NO(); /以学号方式查询信息void search_name(); /以姓方式查询信息void arrage_stu(); /学生成绩排名void del_stu(); /删除学生信息void revise_stu(); /修改学生信息void save(); /保存信息void jisuan(); /计算所有学生的以及各科总分和均分 void search_clas(); /按班级查询显示学生信息 void insert_stu(); /插入学生记录到表中void sort(float x,int n); /对学生按总分进行从高到底排序void search_allscore(); /按学生总成绩查询,用来输出排名信息void jieduan(); /用来输出按平均分阶段输出信息,其中用了按平均分输出信息的程序。void Loadf(); /从文件中读出所有学生记录void main() printf("*"); printf("n");printf(" 欢迎来到学生管理系统 !"); printf("n"); printf("n"); printf(" 制作人:陈志52101610"); creat_stu(); menu();/*创建链表*void creat_stu() FILE *fp; long size; StudentNode *p1,*p2; head=(StudentNode *)malloc(sizeof(StudentNode); head->next=NULL; if(fp=fopen("fname.txt","r")=NULL) printf("这是新表n"); return; fseek(fp,0L,2); size=ftell(fp); if(!size) printf("这是空表n"); return; /开始创建链表 rewind(fp); /移动到文件首 p2=head->next; /找到当前位置 while(!feof(fp) p1=(StudentNode *)malloc(sizeof(StudentNode); fscanf(fp,"%s %s %s %d %d %d %d %f %f %f %f %f %fn",p1->IDNumber,p1->FamilyName,p1->GivenName, &p1->sex,&p1->BirthYear,&p1->BirthMonth,&p1->BirthDay,&p1->score0,&p1->score1,&p1->score2,&p1->score3,&p1->sum, &p1->average); p1->next=NULL; /创建节点完 if(head->next=NULL) head->next=p1; else p2->next=p1; p2=p1; n+; p2->next=NULL; fclose(fp);/*执行菜单*void menu() int c; show_menu(); while(1) scanf("%d",&c); switch(c) getchar();case 1:input_stu();break;case 2:del_stu(); break;case 3:print_stu();break;case 4:search_name(); break;case 5:save();break;case 6:Loadf();break;case 7:jisuan(); break;case 8:search_clas(); break;case 9:insert_stu() ; break;case 10:search_NO(); break;case 11:arrage_stu();break;case 12:revise_stu(); break;case 13:jieduan();break;case 0:exit(0); /执行菜单选项 show_menu(); /*显示菜单*void show_menu() PF("n"); PF("n*菜单*n"); PF("tt* 1.输 入 学 生 信 息 *n"); PF("tt* 2.删 除 学 生 信 息 *n"); PF("tt* 3.显示链表中所有记录信息 *n"); PF("tt* 4.按照学生的姓查找记录 *n"); PF("tt* 5.将链表中记录保存到文件中 *n"); PF("tt* 6.从文件中读入记录 *n"); PF("tt* 7.计算所有学生以及各科总分和均分 *n"); PF("tt* 8.按班级查询显示学生信息 *n"); PF("tt* 9.插入记录到表中 *n"); PF("tt* 10.按学号查询学生信息 *n"); PF("tt* 11.学生成绩排名 *n"); PF("tt* 12.修改学生信息 *n"); PF("tt* 13.按平均分阶段输出学生信息 *n"); PF("tt* 0. 退 出 *n"); PF("*n"); PF("n请选择n");/*输入学生信息*void input_stu() /输入学生信息float a,b; /a,b分别用来存放该生的各科总成绩和平均成绩int y,j;y=time(); n=0; StudentNode *p1=NULL,*p2=NULL; p1=( StudentNode *)malloc(sizeof(StudentNode); PF("n*输入学生信息*n"); /输入学生信息 PF("tt输入学生学号:t"); scanf("%s",p1->IDNumber); /学号 PF("tt输入学生的姓:t"); scanf("%s",p1->FamilyName); /姓 PF("tt输入学生的名:t"); scanf("%s",p1->GivenName); /名 PF("tt输入学生性别(0代表女,1代表男):t"); scanf("%d",&p1->sex); /性别 for(j=0;j+) /判断输入年份是否合理,假设人年龄在0-100岁之间为正常 PF("tt输入学生出生年:t"); scanf("%d",&p1->BirthYear); /出生年 if(y-p1->BirthYear)>100|(p1->BirthYear>y) PF("tt年份输入错误不符合要求,请重新输入出生年份:t"); else break;for(j=0;j+) /判断输入月份是否合理 PF("tt输入学生出生月:t"); scanf("%d",&p1->BirthMonth); /出生月 if(p1->BirthMonth<1|p1->BirthMonth>12) PF("tt月份输入错误不符合要求,请重新输入出生月份:t"); else break;for(j=0;j+) / 判断输入出生日是否合理 PF("tt输入学生出生日:t"); scanf("%d",&p1->BirthDay); /出生日 if(p1->BirthDay<1|p1->BirthDay>31) PF("tt出生日输入错误不符合要求,请重新输入出生日:t"); else break; PF("tt输入学生的外语成绩:t"); scanf("%f",&p1->score0); /各科成绩 PF("tt输入学生的数学成绩:t"); scanf("%f",&p1->score1); PF("tt输入学生的C语言成绩:t"); scanf("%f",&p1->score2); PF("tt输入学生的马哲成绩:t"); scanf("%f",&p1->score3); a=p1->score0+p1->score1+p1->score2+p1->score3; /求该生的各科总成绩 b=(a/4); /求该生的平均成绩 p1->sum=a; p1->average=b; English=English+p1->score0; /求学生英语总分 Math=Math+p1->score1; /求学生数学总分 C=C+p1->score2; /求学生C语言总分 Mazhe=Mazhe+p1->score3; /求学生马哲总分 Sumc+=a; /将各学生的总成绩输入到一个全局数组当中,方便按成绩排序 Avrd+=b; /将个学生的平均分输入到一个全局数组中存放 n+; if(head->next=NULL) head=(StudentNode *)malloc(LEN); head->next=p1; else for(p2=head;p2->next!=NULL;p2=p2->next); /*找到最后的结点,然后 将增加的结点挂在它上面*/ p2->next=p1; p1->next=NULL; save();/保存到文件/*显示链表中所有记录学生信息*void print_stu() /学生信息浏览StudentNode *p=NULL; if(head=NULL) /判断链表是否为空 PF("文档中无记录!n"); return; for(p=head->next;p!=NULL;p=p->next) /读出信息 PF("*查看链表中所有记录学生信息*n"); PF("t学生学号:t%sn",p->IDNumber); PF("t学生姓:t%sn",p->FamilyName); PF("t学生名:t%sn",p->GivenName); PF("t学生性别:t%dn",p->sex); PF("t学生出生年:t%dn",p->BirthYear); PF("t学生出生月:t%dn",p->BirthMonth); PF("t学生出生日:t%dn",p->BirthDay); PF("t学生英语成绩:t%fn",p->score0); PF("t学生数学成绩:t%fn",p->score1); PF("t学生C语言成绩:t%fn",p->score2); PF("t学生马哲成绩:t%fn",p->score3); PF("t学生总成绩:t%fn",p->sum); PF("t学生平均成绩:t%fn",p->average); PF("n"); /输出信息 PF("t各个学生总分分别为:"); for(n=0;n<c;n+) PF("%ft",Sumn); PF("n"); PF("t各个学生平均分分别为:"); for(n=0;n<d;n+) PF("%ft",Avrn); /*按照学生姓查找记录*void search_name() /按照学生姓查找记录int i=0;StudentNode *p=NULL; char FamilyName20; if(head=NULL) /判断链表是否为空 PF("文档中无记录!n"); return; PF("输入学生姓:"); scanf("%s", FamilyName); for(p=head->next;p!=NULL;p=p->next) /读出信息 if(!strcmp(p->FamilyName, FamilyName) PF("tt您查找的学生有:n"); PF("n"); PF("tt学生学号:t%sn",p->IDNumber); PF("tt学生姓:t%sn",p->FamilyName); PF("tt学生名:t%sn",p->GivenName); PF("tt学生性别:t%dn",p->sex); PF("tt学生出生年:t%dn",p->BirthYear); PF("tt学生出生月:t%dn",p->BirthMonth); PF("tt学生出生日:t%dn",p->BirthDay); PF("tt学生英语成绩:t%fn",p->score0); PF("tt学生数学成绩:t%fn",p->score1); PF("tt学生C语言成绩:t%fn",p->score2); PF("tt学生马哲成绩:t%fn",p->score3); PF("tt学生总成绩:t%fn",p->sum); PF("tt学生平均成绩:t%fn",p->average); PF("n"); i=1; /输出信息 if(i!=1) PF("无该姓氏学生信息!请查证:"); /没找到信息时的处理 /*按照学生学号信息查找*void search_NO() /学生学号信息查找int i=0;StudentNode *p=NULL; char IDNumber20; if(head=NULL) /判断链表是否为空 PF("文档中无记录!n"); return; PF("请输入学生学号:"); scanf("%s",IDNumber); for(p=head->next;p!=NULL;p=p->next) /读出信息 if(!strcmp(p->IDNumber,IDNumber) PF("tt您查找的学生是:n"); PF("n"); PF("tt学生学号:t%sn",p->IDNumber); PF("tt学生姓:t%sn",p->FamilyName); PF("tt学生名:t%sn",p->GivenName); PF("tt学生性别:t%dn",p->sex); PF("tt学生出生年:t%dn",p->BirthYear); PF("tt学生出生月:t%dn",p->BirthMonth); PF("tt学生出生日:t%dn",p->BirthDay); PF("tt学生英语成绩:t%fn",p->score0); PF("tt学生数学成绩:t%fn",p->score1); PF("tt学生C语言成绩:t%fn",p->score2); PF("tt学生马哲成绩:t%fn",p->score3); PF("tt学生总成绩:t%fn",p->sum); PF("tt学生平均成绩:t%fn",p->average); PF("n"); i=1; /输出信息 if(!i) PF("无该生信息!请查证:"); /没找到信息时的处理 /*按照学生班级统计并输出总成绩*void search_clas() /学生学号信息查找int i=0,j=0;StudentNode *p=NULL; char a6,b6; if(head=NULL) /判断链表是否为空 PF("文档中无记录!n"); return; PF("请输入学生班级:"); scanf("%s",a); for(p=head->next;p!=NULL;p=p->next) /读出信息 for(j=0;j<6;j+) bj=p->IDNumberj; if(a0=b0&&a1=b1&&a2=b2&&a3=b3&&a4=b4&&a5=b5) PF("tt您查找的班级学生有:n"); PF("n"); PF("tt学生学号:t%sn",p->IDNumber); PF("tt学生姓:t%sn",p->FamilyName); PF("tt学生名:t%sn",p->GivenName); PF("tt学生性别:t%dn",p->sex); PF("tt学生出生年:t%dn",p->BirthYear); PF("tt学生出生月:t%dn",p->BirthMonth); PF("tt学生出生日:t%dn",p->BirthDay); PF("tt学生英语成绩:t%fn",p->score0); PF("tt学生数学成绩:t%fn",p->score1); PF("tt学生C语言成绩:t%fn",p->score2); PF("tt学生马哲成绩:t%fn",p->score3); PF("tt学生总成绩:t%fn",p->sum); PF("tt学生平均成绩:t%fn",p->average); PF("n"); i=1; /输出信息 if(!i) PF("无该班级信息!请查证:"); /没找到信息时的处理 /*修改学生信息*void revise_stu()int y,j,k=0,m=0;int i=0; float a,b; y=time();StudentNode *p=NULL; if(head=NULL) /判断链表是否为空 PF("文档中无记录!n"); return; char IDNumber20; PF("请输入学生的学号:t"); scanf("%s",IDNumber); for(p=head->next;p!=NULL;p=p->next) if(!strcmp(p->IDNumber,IDNumber) /验证信息是否正确 PF("tt你要修改的学生是:n"); PF("n"); PF("tt学生学号:t%sn",p->IDNumber); PF("tt学生姓:t%sn",p->FamilyName); PF("tt学生名:t%sn",p->GivenName); PF("tt学生性别(0代表女,1代表男):t%dn",p->sex); PF("tt学生出生年:t%dn",p->BirthYear); PF("tt学生出生月:t%dn",p->BirthMonth); PF("tt学生出生日:t%dn",p->BirthDay); PF("tt学生英语成绩:t%fn",p->score0); PF("tt学生数学成绩:t%fn",p->score1); PF("tt学生C语言成绩:t%fn",p->score2); PF("tt学生马哲成绩:t%fn",p->score3); PF("tt学生总成绩:t%fn",p->sum); PF("tt学生平均成绩:t%fn",p->average); PF("n"); /输出要修改信息 i=1; for(k=0;k<c;k+) /记录被修改学生总分在数组中的位子 if(p->sum=Sumk) break; for(m=0;m<d;m+) /记录被修改学生平均分在数组中的位子 if(p->average=Avrm) break;English=English-p->score0; /修改学生英语总分 Math=Math-p->score1; /修改学生数学总分 C=C-p->score2; /修改学生C语言总分 Mazhe=Mazhe-p->score3; /修改学生马哲总分 PF("tt您修改学号为%s的学生:n",IDNumber); PF("n"); strcpy(p->IDNumber,IDNumber); PF("tt输入修改学生姓:t"); scanf("%s",p->FamilyName); PF("tt输入修改学生名:t"); scanf("%s",p->GivenName); PF("tt输入修改学生性别(0代表女,1代表男):t"); scanf("%d",&p->sex); for(j=0;j+) /判断输入年份是否合理,假设人年龄在0-100岁之间为正常 PF("tt输入学生出生年:t"); scanf("%d",&p->BirthYear); /出生年 if(y-p->BirthYear)>100|(p->BirthYear>y) PF("tt年份输入错误不符合要求,请重新输入出生年份:t"); else break; for(j=0;j+) /判断输入月份是否合理 PF("tt输入学生出生月:t"); scanf("%d",&p->BirthMonth); /出生月 if(p->BirthMonth<1|p->BirthMonth>12) PF("tt月份输入错误不符合要求,请重新输入出生月份:t"); else break; for(j=0;j+) / 判断输入出生日是否合理 PF("tt输入学生出生日:t"); scanf("%d",&p->BirthDay); /出生日 if(p->BirthDay<1|p->BirthDay>31) PF("tt出生日输入错误不符合要求,请重新输入出生日:t"); else break; PF("tt输入学生的外语成绩:t"); scanf("%f",&p->score0); /修改的各科成绩 PF("tt输入学生的数学成绩:t"); scanf("%f",&p->score1); PF("tt输入学生的C语言成绩:t"); scanf("%f",&p->score2); PF("tt输入学生的马哲成绩:t"); scanf("%f",&p->score3); a=p->score0+p->score1+p->score2+p->score3; /求该生的各科总成绩 b=(a/4); /求该生的平均成绩 p->sum=a; p->average=b; Sumk=p->sum; /将新的总分修改原总分 Avrm=p->average; /将新的平均分修改原平均分 English=English+p->score0; /修改学生英语总分 Math=Math+p->score1; /修改学生数学总分 C=C+p->score2; /修改学生C语言总分 Mazh

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开