欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c语言课程设计网_学生成绩管理系统4(20页).doc

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

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

    c语言课程设计网_学生成绩管理系统4(20页).doc

    -c语言课程设计网_学生成绩管理系统4-第 21 页(一)、 课程设计题目学生成绩管理系统的设计与实现(二)、 课程设计目的1、  进一步掌握和利用C语言进行程设计的能力;2、  进一步理解和运用结构化程设计的思想和方法;3、  初步掌握开发一个小型实用系统的基本方法;4、  学会调试一个较长程序的基本方法;5、  学会利用流程图或N-S图表示算法;6、  掌握书写程设计开发文档的能力(书写课程设计报告);(三)、 设计内容1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。2、输入功能:可以一次完成若干条记录的输入。3、显示功能:完成全部学生记录的显示。4、查找功能:完成按姓名查找学生记录,并显示。5、排序功能:按学生平均成绩进行排序。6、插入功能:按平均成绩高低插入一条学生记录。7、将学生记录存在文件score中。8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!(四)、 设计要求1、  用C语言实现系统;2、  利用结构体数组实现学生成绩的数据结构设计;3、  系统具有增加,查询,插入,排序等基本功能;4、  系统的各个功能模块要求用函数的形式实现;5、  完成设计任务并书写课程设计报告。6、  将学生成绩信息存在文件中。(五)、提交材料1、课程设计报告1)课程设计题目、内容、要求。2)总体设计(包含几大功能模块)。3)详细设计(各功能模块的具体实现算法流程图)4)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。5)调试分析(包含各模块的测试用例,及测试结果。)6)总结(课程设计完成了哪些功能,还有哪些地方需要改进,及通过一周的课程设计有何收获,调试程序的体会等)二:本程序共有八个功能与数据结构说明:学生记录的输入(一次性输入,输入个数由用户决定,最大可容纳80记录,最大数可以在源程序中改) 。追加学生记录。(追加后不能超过最在值80)。修改记录。删除记录。浏览全部记录。查找记录(按姓名查找)。插入记录。对记录进行排序(按平均成绩排序)。退出。10数据结构是这样的:学号只能由数字字符组成,最大可以个字符;姓名由字符组成,最大可以个字符;三门科目分数都是整型;平均成绩是实型。11程序中定义了学生的容量为个。容量可以在源程序宏定义中改,本程序宏定义#define N 50#include<string.h>#include<stdio.h>/*控制学生记录的容量*/#define N 50struct studentchar num11; char name20; int score3; float ave;stuN;/*全新保存函数*/save(int n)                      /*保存函数,保存n个记录*/FILE *fp; int i; if(fp=fopen("score.txt","wb")=NULL)    /*以输出打开方式,在此前的记录被覆盖*/  printf("nCannot open filen");   return NULL;   for(i=0;i<n;i+)   if(stui.ave!=0)            /*stui.ave=0表此记录已删除*/     if(fwrite(&stui,sizeof(struct student),1,fp)!=1)       printf("file write errorn"); fclose(fp); /*加载记录或可以计算记录个数的函数*/load()                       /*加载记录或可以计算记录个数的函数*/FILE *fp; int i; if(fp=fopen("score.txt","rb")=NULL)    /*以输出打开方式,在此前的记录被覆盖*/  printf("nCannot open filen");   return NULL;   for(i=0;!feof(fp);i+)  fread(&stui,sizeof(struct student),1,fp); fclose(fp); return(i-1);                /*返回记录个数*/*一个任务结束时的选择浏览还是返回的函数*/void printf_back()              /*一个任务结束时的选择浏览还是返回*/int k,w; printf("nntSuccessful. _nn"); printf("What do you want to do? nnt1).Browse all nowt2).Back:  bb"); scanf("%d",&w); if(w=1) browse(); else menu();/*显示数据结构项目函数*/void printf_face()            /*显示数据结构项目*/printf("ntNO.  name                 score1   score2   score3  averagen");average(int i)                    /*对第i个记录的分数求平均值*/int j,sum; for(sum=0,j=0;j<3;j+)   sum+=stui.scorej; stui.ave=sum/3.0;/*学号输入函数*/no_input(int i,int n)                  /*i表示第i个的学生信息,n表示比较到第n个学生*/int j,k,w1;  do  w1=0;   printf("NO.:");   scanf("%s",stui.num);   for(j=0;stui.numj!='0'j+)          /*学号输入函数,作了严格规定*/     if(stui.numj<'0'|stui.numj>'9')     /*判断学号是否为数字*/       puts("Input error! Only be made up of (0-9).Please reinput!n");        w1=1;break;          if(w1!=1)    for(k=0;k<n;k+)                /*比较到第n个学生*/      /*排除第i个学生记录即你要修改的*/      if(k!=i&&strcmp(stuk.num,stui.num)=0)    /*判断学号是否有雷同*/       puts("This record is exist. please reinput!n");        w1=1;break;           while(w1=1);/*对分数输入*/score_input(int i)int j; for(j=0;j<3;j+)  printf("score %d:",j+1);   scanf("%d",&stui.scorej);   /*输入一个记录函数*/input(int i)                           /*输入一个记录函数*/ no_input(i,i);                      /*调用学号输入函数*/ printf("name:"); scanf("%s",stui.name); score_input(i);           /*调用分数输入函数*/ average(i);               /*调用求平均值函数*/ /*显示一个记录的函数*/printf_one(int i)                              /*显示一个记录的函数*/int j; printf("%11s  %-17s",stui.num,stui.name); for(j=0;j<3;j+)   printf("%9d",stui.scorej); printf("%n",stui.ave);void puts_()     /*显出-函数*/puts("n-");/*修改记录函数*/modify_data(int i,int n)          /*修改数据函数,修改第i个记录*/int c,w1;  do                              /*输入选择作个判断*/   puts("nmodify by =>nn  1).NO.  2.name  3).score1  4).score2n  5).score3  6).all score  7).all data  8).cancel and back");    printf("Which you needed?: bb");    scanf("%d",&c);    if(c>8|c<1)            puts("nChoice error! Please again!");   /*判断选择是否错误,若是则重新选择性*/             getchar();    /*当输入是字符时可以防止死循环*/                  while(c>8|c<1);  do   switch(c)                     /*选择要修改的项目*/    case 1:no_input(i,n);break;    /*调用学号输入函数*/     case 2:printf("name:");scanf("%s",stui.name);break;     case 3:printf("score1:");scanf("%d",&stui.score0);break;     case 4:printf("score2:");scanf("%d",&stui.score1);break;     case 5:printf("score3:");scanf("%d",&stui.score2);break;     case 6:score_input(i);break; /*调用分数输入函数*/     case 7:input(i);break;   /*调用输入整条学生记录*/     case 8:menu();   /*直接返回主介面*/        if(c>2&&c<7)      average(i);                  /*调用求平均值函数*/    puts("nNow:n");    printf_face();                         /*调用显示数据结构项目函数*/    printf_one(i);                 /*修改后的记录让用户确认*/    printf("nAre you sure?nnt1).Sure  2).No and remodify   3).Back without save in this time   bb");  /*是否确定*/    scanf("%d",&w1);   /*选择2则表示这次修改错误要重新修改*/      while(w1=2);  return(w1);        /*返回控制值*/ /*输入模块*/enter()                           /*输入模块*/int i,n; printf("How many students(0-%d)?:",N); scanf("%d",&n);                  /*要输入的记录个数*/ printf("nEnter data nownn"); for(i=0;i<n;i+)   printf("nInput %dth student record.n",i+1);    input(i);                        /*调用输入函数*/    if(i!=0) save(n);                            /*调用保存函数*/ printf_back();                       /*一个任务结束时让用户选择是浏览还是返回*/ /*追加模块*/add()                             /*追加模块*/int i,n,m,k; FILE *fp; n=load(); printf("How many students are you want to add(0-%d)?:",N-n); scanf("%d",&m);               /*输入要追加的记录个数*/ k=m+n; for(i=n;i<k;i+)   printf("nInput %dth student record.n",i-n+1);    input(i);                        /*调用输入函数*/    if(fp=fopen("score.txt","ab")=NULL)  /*以ab方式打开文件,追加保存*/  printf("cannot open filen");   return;   for(i=n;i<k;i+)                   /*输入出到文件*/   if(fwrite(&stui,sizeof(struct student),1,fp)!=1)     printf("file write errorn"); fclose(fp); printf_back();                       /*一个任务结束时的选择浏览还是返回*/ /*修改模块*/modify()                         /*修改模块*/struct student s; FILE *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do clrscr();  k=-1;  /*给用户看全部记录以便确认要修改的记录*/  puts_();             /*显示-*/  printf_face();                /*调用显示数据结构项目函数*/  for(i=0;i<n;i+)    if(i!=0)&&(i%10=0)     /*目的是分屏显示*/       printf("nnRemember NO.which needed modify. pass any key to contiune  . . .");        getch();        puts("nn");            printf_one(i);                  /*调用显示一个记录的函数*/      puts_();  do   printf("nnEnter NO. that you want to modify!    NO.:");    scanf("%s",s.num);                /*输入要修改的数据的学号*/    for(i=0;i<n;i+)                  /*查找要修改的数据*/     if(strcmp(s.num,stui.num)=0)       k=i;                      /*找到要修改的记录*/        s=stui;                /*把stui(即当次修改的学生记录)备份给s,以便用户反悔时恢复名誉*/           if(k=-1) printf("nnNO exist! please again");      while(k=-1);            /*当K=-1表示没有找到*/  printf_face();               /*调用显示数据结构项目函数*/  printf_one(k);                  /*调用显示一个记录的函数*/  w1=modify_data(k,n);          /*修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改*/  if(w1=1)       /*W1等于1时则表示用户确定这次修改*/    printf("nSuccessful _.nnAre you modify another?nnt1).Yes  2).Back with savet bb");     scanf("%d",&w0);     w2=1;         /*来控制保存,使w2=1是标记已有过修改*/      else    w0=0;     if(w2=1)       stuk=s;          /*走到这里是由于用户没有确认这次修改(在调用修改函数w1=modify_data(k,n);时没有确认).  使W0=0,为了让终止循环,  stuk=s,则把备份的s恢复给stuk(即当次修改的),这样的好处是确保在此之前修改过的成功保存,而本次(用户没有确认的)不修改*/  if(w0!=1&&w2=1)     /*W0不等于1则表示正常返回,w2=1表示在此之前有过修改,这时就保存用户已确认修改的并返回*/        save(n);       /*w2不等于1表示在此次之前没有修改过(即:第一次),而又反悔这次修改,则不保存返回*/    while(w0=1); menu();/*删除模块*/del()                             /*删除模块*/struct student s; FILE *fp; int i,j,n,k,c,w0=1; n=load(); do clrscr();  k=-1;  /*给用户看全部记录以便确认要删除的记录*/  puts_();  printf_face();                /*调用显示数据结构项目函数*/  for(i=0;i<n;i+)    if(stui.ave!=0)     if(i!=0)&&(i%10=0)     /*目的是分屏显示,每10个一屏*/       printf("nnRemember NO. which needed del. pass any key to contiune  . . .");        getch();        puts("nn");             printf_one(i);                   /*调用显示一个记录的函数*/       puts_();  do   printf("nnEnter NO. that you want to Delete!    NO.:");    scanf("%s",s.num);                /*输入要修改的数据的学号*/    for(i=0;i<n;i+)                  /*查找要修改的数据*/     if(strcmp(s.num,stui.num)=0)       k=i;                      /*找到要修改的记录的下标赋给K*/        s=stui;           if(k=-1) printf("nnNO exist! please again"); /*K=-1,表示没有找到相同之的*/      while(k=-1);  puts("n");  printf_face();                /*调用显示数据结构项目函数*/  printf_one(k);                  /*调用显示一个记录的函数*/  printf("nAre you sure?nt1).sure   2).no and del another   3).back without save all  bb");  scanf("%d",&c);  if(c=1)    stuk.ave=0;         /*stuk.ave=0用来标识这个记录是要删除的.保存时则不保存stuk.ave=0的数据*/     printf("nnSuccessful _.nnAre you again?nt1).again  2).back to menut bb");   /*问是否继续*/     scanf("%d",&w0);      if(c=3) w0=0;           /*w0=0不删除直接返回*/  if(w0!=1&&c!=3)           /*只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录*/     save(n);    while(w0=1); menu();              /*返回主介面*/*浏览(全部)模块*/browse()                          /*浏览(全部)模块*/int i,j,n; n=load();         /*加载记录*/ clrscr(); puts_(); printf_face();                  /*调用显示数据结构项目函数*/ for(i=0;i<n;i+)   if(i!=0)&&(i%10=0)               /*目的是分屏显示*/     printf("nnPass any key to contiune  . . .");      getch();      puts("nn");         printf_one(i);                 /*调用显示一个记录的函数*/    puts_();  printf("tThere are  %d record.n",n); printf("nPass any key to back  . . ."); getch();                          /*按任意健*/ menu(); /*查找模块*/search()                          /*查找模块*/int i,n,k,w1=1,w2,w3,w4; struct student s; n=load(); do  do    k=-1;     printf("nnEnter name that you want to search!    name:");     scanf("%s",s.name);                /*输入要修改的数据的学号*/     printf_face();                 /*调用显示数据结构项目函数*/     for(i=0;i<n;i+)                  /*查找要修改的数据*/       if(strcmp(s.name,stui.name)=0)         k=i;                      /*找到要修改的记录*/          printf_one(k);break;                  /*调用显示一个记录的函数*/              if(k=-1)       printf("nnNO exist! please");        printf("nnAre you again?nt1).again   2).NO and back   bb");        scanf("%d",&w1);               while(k=-1&&w1=1);              /*如果w1不等于1则直接返回*/   w4=0;w3=0;   if(k!=-1)                           /*k不等于-1表示找到,如果找到则选择操作*/       printf("nnWhat do you want to do?nt1).Search another   2).Modify   3).Delete   4).Back menu   bb");        scanf("%d",&w2);        switch(w2)          case 2:w3=modify_data(k,n);break; /*调用修改数据函数*/           case 3:printf("nAre you sure?nt1).Sure   2).No and back   bb");                   scanf("%d",&w4);                   if(w4=1)                     stuk.ave=0;     /*表示删除*/                   break;                                    if(w3=1|w4=1)           save(n);            printf("nnSuccessful. _.");            printf("nnWhat do you want to do?nt1).Search another   2).Back   bb");            scanf("%d",&w2);                        while(w2=1); menu();/*插入模块*/insert()                           /*插入模块*/int i,j,n,c; struct student s; n=load(); puts("nInput one data.n"); do  input(n);       /*输入到第n个记录,即插入到最后*/   printf_face();   printf_one(n);   printf("nnAre you sure?nnt1).Suret2).cancel snd againt3).Back withuot save  bb");   scanf("%d",&c);   if(c=1)     for(j=0;j<n;j+)                    /*用起泡法排序*/        for(i=n;i>j;i-)          if(stui.ave>stui-1.ave)            s=stui-1;stui-1=stui;stui=s;      save(n+1);      printf_back();        else if(c!=2) menu();    while(c=2); /*排序模块(按平均成绩)*/order()                           /*排序模块(按平均成绩)*/int i,j,k,n; struct student s; n=load(); for(i=0;i<n-1;i+)              /*选择法排序*/   k=i;    for(j=i+1;j<n;j+)      if(stuj.ave>stuk.ave) k=j;    s=stui;stui=stuk;stuk=s;    save(n); puts("nn"); printf_back(); /*主界面*/menu()                            /*主界面*/int n,w1; do  clrscr();                   /*清屏*/   puts("nttt   Copy right by CHEN LIN BIN!");   puts("tttt  24/06/2005!nn");   puts("tt*MENU*nn");   puts("tttt1.Enter new data");   puts("tttt2.Addition data");   puts("tttt3.Modify data");   puts("tttt4.Delete data");   puts("tttt5.Browse all");   puts("tttt6.Search by name");   puts("tttt7.Insert data");   puts("tttt8.Order by average");   puts("tttt9.Exit");   puts("nntt*n");   printf("Choice your number(1-9): bb");   scanf("%d",&n);   if(n<1|n>9)                                  /*对选择的数字作判断*/     w1=1;getchar();   else  w1=0;    while(w1=1); /*选择功能*/ switch(n)  case 1:enter();break;      /*输入模块*/   case 2:add();break;        /*追加模块*/   case 3:modify();break;     /*修改模块*/   case 4:del();break;        /*删除模块*/   case 5:browse();break;     /*浏览模块*/   case 6:search();break;     /*查找模块*/   case 7:insert();break;     /*插入模块*/   case 8:order();break;      /*排序模块*/   case 9:exit(0);            /*退出*/  /*主函数*/main()menu();点击此处下载报告

    注意事项

    本文(c语言课程设计网_学生成绩管理系统4(20页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开