好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

c语言课程设计学生成绩管理系统61316.doc

25页
  • 卖家[上传人]:xmg****18
  • 文档编号:266449141
  • 上传时间:2022-03-15
  • 文档格式:DOC
  • 文档大小:88KB
  • / 25 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 目录——学生成绩管理程序题目要求 ··················· 2设计目的···················2总体设计··················· 3详细设计··················· 3调试与测试················· 12源程序 ··················· 14总结 ···················30学生成绩管理程序一. 题目要求 1. 问题描述:对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.2. 要求:<1>一个文件按以班为单位存储学生记录.<2>将允许的操作分为四种,以A,B ,C,D,E,F为标志:A:插入一个学生记录;B:修改学生记录;C:删除一个学生记录;D:查找一个学生记录;E:浏览学生成绩:F:退出3. 计算学生的总成绩.4. 按学号排序输出全班学生成绩表.二. 设计目的根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三. 总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.学生成绩管理系统数据输入数据显示数据修改数据删除数据查找四. 详细设计1. 主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.流程图:显示一系列功能模块 N输入n,判断n是否是A--F Y根据n的值调用各功能模块函数[程序]://#include "head.h" int menu_select<> { char c; printf<"\n\n">; printf<" | 1. 增加学生记录 5.统计信息 |\n">; printf<" | 2. 查询学生记录 6.打开文件 |\n">; printf<" | 3. 修改学生记录 7.保存文件 |\n">; printf<" | 4. 学生纪录排序 8.显示记录 |\n">; printf<" | 0. 退出系统 |\n">; printf<"\n\n">; printf<"请选择<0-8>:">; c=getchar<>; getchar<>; return ; } 2. 输入模块:[分析]:单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.如果要存放若干学生信息就用结构体数组:void addrecord { int i=0,j,num; char str[5]; if { printf<"已有记录存在是否覆盖?\n">; gets; if i=0; else i=numstus; } printf<"请输入增加的学生信息条目数:">; scanf<"%d",&num>; if numstus=num; else numstus+=num; iflens> { lens+=50; pointer=realloc; } printf<"请输入学生信息:\n">; for<;i { getchar<>; printf<"请输入学号:">; gets; printf<"请输入姓名:">; gets; printf<"请输入性别<男/女 1/0>:">; gets; if strcpy; else strcpy; printf<"请输入各科成绩:<按"语文,数学,英语,历史,政治"的顺序>:">; stud[i].score=0; for { scanf<"%f",&stud[i].subject[j]>; /*计算总分*/ stud[i].score+=stud[i].subject[j]; } stud[i].average=stud[i].score/numsubs; /*计算平均分*/ } count; /*附名次*/ display; getchar<>; }int numstus; int lens; student *pointer; void main<> { int i=1; char str[2]; lens=100; pointer=malloc; /*分配内存*/ numstus=0; welcome<>; /*欢迎界面*/ while0> { i=menu_select<>; /*控制菜单*/ switch { case 1:addrecord;break; /*增加学生信息*/ case 2:findrecord;break; /*查询学生信息*/ case 3:amendrecord;break; /*修改学生信息*/ case 4:sort;break; /*学生信息排序*/ case 5:statistic;break; /*统计信息*/ case 6:openfile;break; /*打开文件*/ case 7:writetotext;break; /*保存文件*/ case 8:display;break; /*显示记录*/ case 0: if printf<"是否保存当前记录?">; gets; if writetotext; i=-1;break; /*退出系统*/ default:printf<"请输入数字0~8:\n">;i=1; /*输入错误*/ } } printf<"\t\t欢迎再次使用本系统。

      \n\n">; display1<>; }3. 修改模块:[分析]:用户输入要修改学生的学号,根据学生的学号等信息查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.[流程图]:输入要修改的学号找到? Y N提示没有找到显示记录,调用修改函数返回主菜单继续? Y N[程序]:void xiugai<> { if<>==NULL||>==NULL> /*检查是否出错*/{ printf<"Cannot open this file.\n">; exit<0>; } printf<"\nPLease shuru xiugai xuehao:">; scanf<"%d",&i>; getchar<>; while<,1,fp>>==1> { j=atoi; if { printf<"xuehao:%s\nmingzi:%s\nnianling:%s\n",data.xuehao,data.mingzi,data.nianling>; printf<"Please shuru mingzi:">; gets; printf<"Please shuru shuxue score:">; gets;data.score[0]=atof; printf<"Please input yingyu score:">; gets;data.score[1]=atof; printf<"Please input wuli score:">; gets;data.score[2]=atof; data.score[3]=data.score[0]+data.score[1]+data.score[2];} fwrite<&data,sizeof,1,fp1>; } fseek; /*将位置指针移到离头文件0个字节处*/fseek; while<,1,fp1>>==1> { fwrite<&data,sizeof,1,fp>; } fclose; fclose; }4. 删除模块: [分析]:该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除.[流程图]:输入要删除的学号找到? Y N提示没有找到显示记录,调用删除函数返回主菜单继续? Y N[程序]:void deleterecord /*删除信息*/ { int j; while=0> { for stu[j]=stu[j+1]; numstus--; printf<"删除成功!\n">; } } void count

      点击阅读更多内容
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.
      • QQ咨询
      • 微信客服
      • 返回顶部