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

    c语言_学生成绩管理 .docx

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

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

    c语言_学生成绩管理 .docx

    精品名师归纳总结c 语言课程设计 _同学成果治理系统 3课程设计的内容 : 1 、每一条记录包括一个同学的学号、姓名、3 门课成果、平均成果。2、输入功能:可以一次完成如干条记录的输入。3、显示功能:完成全部同学记录的显示。4、查找功能:完成按姓名查找同学记录,并显示。5、排序功能:按同学平均成果进行排序。6、插入功能:按平均成果高低插入一条同学记录。7、将同学记录存在文件 score 中。8、应供应一个界面来调用各个功能 , 调用界面和各个功能的操作界面应尽可能清晰美观 .课程设计的要求 :1、用 C语言实现系统。2、3、利用结构体数组实现同学成果的数据结构设计。系统具有增加,查询,插入,排序等基本功能。4、5、系统的各个功能模块要求用函数的形式实现。完成设计任务并书写课程设计报告。6、将同学成果信息存在文件中。#include <dos.h>/*暂停函数 */#include <stdio.h>/*I/O函数*/#include <stdlib.h>/* 其它说明 */#include <string.h>/* 字符串操作函数 */#defineM 1000int N=0 。/* 记录已经存在的记录条数*/ int H=0 。struct student/* 定义数据结构 */ char number8 。char name16 。float score3 。float average。可编辑资料 - - - 欢迎下载精品名师归纳总结studM,temp。/*以下是函数声明 */void loadvoid。/* 读入记录 */void inorderstruct student stud。/* 排列记录 */ void insertstruct student stud。/* 插入记录 */ void savestruct student stud。/* 储存记录 */ void printstruct student stud。/* 显示记录 */ void searchstruct student stud。/* 查找记录 */ void enterstruct student stud。/* 输入记录 */void delvoid。/*删除记录 */void changevoid。/* 转变记录 */void quitvoid。/* 退出系统 */int flagstruct student stud。/* 返回值为 0 或 1*/int menuvoid。/*菜单 */main/* 主函数 */ /*以下 printf语句为打印欢迎界面语句 */ printf"nnnnnnnttttttttt.n"。printf"wweeeeeeelcccccccooooommmmmmmmmeeeeeee.n"。printf"wwwen"e。lcoommmee.mprintf" mprintf"mw eeeeeeew ww www.e eeeeen"。lcoowelcoommme.n"。printf"wweeeeeeellllllcccccccooooommmeeeeeeen"。可编辑资料 - - - 欢迎下载精品名师归纳总结printf"tttttttttb0"。sleep1。printf"nnnnntttttttt- pan"。sleep1。load。/* 调用读入记录函数 */for。/* 无限循环 */ switchmenu/* 调用主菜单函数,返回值整数作开关语句的条件*/ case 1: enterstud。break 。/* 输入记录 */case 2: printstud。break 。/* 显示要看的一页的记录 */ case 3: searchstud。 break 。/* 查找记录 */case 4: inorderstud。break 。/* 排序 */ case 5: insertstud。 break 。/* 插入记录 */case 6: savestud。break 。/* 储存文件 */ case 7: change。break 。/* 转变记录 */case 8: del。break 。/* 删除记录 */case 9: quit。/*如菜单返回值为 9 程序终止 */* 输入数据函数 */void enterstruct student stud int n=0,i,j,k,c。char b4。 float sum。printf"How many student's record do you want to enter. n=.bbb"。scanf"%d",&n。/* 输入一次要输入记录数 */ fori=0。i<n 。 sum=0 。/* 统记三科总分 */ printf"Input the %dth student's number ",N+1。可编辑资料 - - - 欢迎下载精品名师归纳总结scanf"%s",studN.number。/* 输入学号 */*以下 if-else语句判定所输记录是否存在 */ifflagstud/* 调用返回值为0 或 1 函数, 判定所输入的学号是否已经存在, 存在就执行 if语句 */printf"The record has exist.n"。printf"Input again."。getch。else printf"Input the %dth student's name ",N+1。scanf"%s",studN.name。/* 输入姓名 */ forj=0。j<3 。j+ doprintf"Input the %dth student's score%d",N+1,j+1。/*打印提示 */scanf"%s",b。/* 输入分数 */ studN.scorej=atofb。/* 将字符串强制转换成实型, 得值赋给studN.scorej*/ifstudN.scorej<=0|studN.scorej>100/* 判定分数是否在 0-100 之间 */k=1 。/* 分数不在 0-100 之间时 k 值为 1*/printf"Error input .n"。printf"Input again .n"。/* 打印出错提示 */else可编辑资料 - - - 欢迎下载精品名师归纳总结k=0 。/* 分数在 0-100之间时 k 值为 0*/whilek。/* 由 k 值准备是否要循环*/sum+=studN.scorej。/* 统记三科总分 */studN.average=sum/3.0。/* 平均分 */ printf"nEnter success .n"。printf"nPress any key to return."getch。N+。i+ 。/* 记录数加 1*/H=1 。clrscr。/*清屏 */clrscr。/*清屏 */*显示记录函数 */void printstruct student stud int i=0,k,max,maxb,n,flag='y'。char m6。/*以下 if-else为判定文件中是否有记录 */ ifN=0printf"There are not record.n"。printf"Press any key to return."。/* 当 N为 0 时(即没有记录)打印没有记录提示 */getch。可编辑资料 - - - 欢迎下载精品名师归纳总结else whileflag.='n' maxb=0 。i=0 。/*以下分页输出记录 */ do ifN%10.=0 printf"nttThere are %d pages in all.",N/10+1。printf"nttWhich page do you want to see. "。else printf"nttThere are %d pages in all.",N/11+1。printf"nttWhich page do you want to see. "。scanf"%s",m。/* 输入要显示的页数 */ k=atoim。/* 强制把 m转换成整形 */ ifk k=10*k-1。/* 此时 k 变为第 k 页的第一条信息的序号 */ ifk>=N/* 判定页数是否存在 */ printf"nttThe page is not exist ."。printf"nttInput again .n"。elsek=N+1。whilek>=N。/*假如页数不存在进入do-whie 循环 */*以下 if-else语句是判定第 k 页是否有 10 条语句 */ ifk+10>Nmax=N。/* 当第 k 页不够 10 条记录时 */else可编辑资料 - - - 欢迎下载精品名师归纳总结max=k+10 。/*当第 k 页够 10 条记录时 */clrscr。/*以下fori=kfor语句为取得第。i<max 。i+k 页名字最大字符长度*/ n=strlenstudi.name。ifn>maxb maxb=n 。i=k 。/*以下 if-else是为了保证表美观 */*假如最大字符长度不大于8 就按 if输出,就按名字方格长度为8 输出 */ ifmaxb<8 whilei<max /*以下为输出记录 */ ifi%10=0 printf"ntttt Page:%d",k+10/10。printf"nt|-|-|-|-|-|-|-|"。printf"nt|NO:| number|name|score1|score2|score3|average |n"。printf"t|-|-|-|-|-|-|-|n"。printf"t| %-2d|%-6s|%-8s|%-5.1f |%-5.1f |%-5.1f | %- 7.2f|n",i+1,studi.number,studi.name,studi.score0,studi.score1,studi.score2,studi.average。i+ 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf"t|-|-|-|-|-|-|-|n"。/*假如最大字符长度大于8 就按 else输出,见就按名字格长度为16 输出 */else whilei<max /*以下为输出记录 */ ifi%10=0 printf"ntttt Page:%d",k+10/10。printf"ntbb|-|-|-|-|-|-|-|"。printf"ntbb|NO:| number|name|score1|score2|score3|average |n"。printf"tbb|-|-|-|-|-|-|-|n"。printf"tbb| %-2d|%-6s|%-16s|%-5.1f |%-5.1f |%-5.1f | %- 7.2f|n",i+1,studi.number,studi.name,studi.score0,studi.score1,studi.score2,studi.average。i+ 。printf"tbb|-|-|-|-|-|-|-|n"。printf"tttbbDo you want to go on. y or n.bbbbbbb"。flag=getch。/*猎取一个字符判定是否要连续显示*/可编辑资料 - - - 欢迎下载精品名师归纳总结clrscr。/*清屏 */* 查找函数 */void searchstruct student stud int i=0,n,j。char number8,flag='y'。clrscr。/*清屏 */whileflag.='n' i=0。printf"nttttbbbbThe number-name list:n"。printf""。printf""。/*以下 while语言句为输出已有的记录的学号与名字whilei<N*/ /*以下保证输出的学号和名字总长度不长于14*/ifstrlenstudi.number<4 n=4 。elsen=strlenstudi.number。ifn+strlenstudi.name<15/* 总长度不长于 14 时执行 if语句*/ ifn+strlenstudi.name>6 printf"%-4s-",studi.number。printf"%st",studi.name。i+ 。else printf"%-4s-",studi.number。printf"%stt",studi.name。可编辑资料 - - - 欢迎下载精品名师归纳总结i+ 。else/*总长度长于 14时执行 else语句 */ printf"%-4s-",studi.number。ifstrlenstudi.number>4j=12-strlenstudi.number。elsej=12-4。forn=0。n<j 。n+printf"%c",studi.namen。/* 以上输出总长度为 13*/ printf". "。/* 长出部分用 "."省略表示*/i+ 。printf"n-"。printf"-"。printf"nttbInput the student's number you want to search:"。scanf"%s",number。/*输入要查找的记录的学号 */ i=0 。whilei<N ifstrcmpstudi.number,number=0/* 查找记录 */*输出找到的记录 */*当名字长度小于8 时执行 if语句 */ ifstrlenstudi.name<8 printf"n"。printf"t|-|-|-|-|-|-可编辑资料 - - - 欢迎下载精品名师归纳总结|-|n"。printf"t|NO:| number|name|score1|score2|score3|average |n"。printf"t|-|-|-|-|-|-|-|n"。printf"t| %-2d|%-6s|%-8s|%-5.1f |%-5.1f |%-5.1f | %-7.2f|n",i+1,studi.number,studi.name,studi.score0,studi.score1,studi.score2,studi.average。printf"t|-|-|-|-|-|-|-|n"。/*当名字长度大于8 时执行 else 语句 */ else printf"n"。printf"t|-|-|-|-|-|-|n"。printf"t|NO:| number|name|score1|score2|score3|average |n"。printf"t|-|-|-|-|-|-|n"。printf"t| %-2d|%-6s|%-16s|%-5.1f |%-5.1f |%-5.1f | %-7.2f|n",i+1,studi.number,studi.name,studi.score0,studi.score1,studi.score2,studi.average。printf"t|-|-|-|-|-|n"。可编辑资料 - - - 欢迎下载精品名师归纳总结flag=0。i=N 。/* 找到并打印后i=N 退出 while 循环 */i+ 。/* 找不到时 i 自加 */ifflag/*当找到记录时 flag为 0,否就为 1*/ printf"ntttYour input is errorn"。printf"ntttDo you want to go on. y or n.bbbbbbb"。flag=getch。/*猎取一个字符判定是否要连续查找*/ clrscr。/*清屏 */* 排序函数 */void inorderstruct student stud int i,j,k。fori=0。i<N-1 。i+ k=i。/*以下 for语句为选择法排序 */ forj=i+1。j<N 。j+ifstudj.average>studk.average k=j 。ifk.=itemp=studk。studk=studi。studi=temp。H=1 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf"nnnnnnnnnnn"。printf"" 。printf"* Has been inoder. *n"。/* 排序成功提示 */ printf"" 。sleep2。/*调用暂停函数 暂停 2 秒钟 */clrscr。/*清屏 */* 插入记录函数 */void insertstruct student stud int i,j,k。float sum。char flag='y',b4。clrscr。/*清屏 */whileflag='y' sum=0 。k=0 。printf"Input the student's number you want to insert:"。scanf"%s",studN.number。/* 输入要插入记录的学号 */ fori=0。i<N 。i+ifstrcmpstudi.number,studN.number=0/* 查找要插入记录是否存在*/k=1 。ifk/* 判定要插入记录是否存在 */printf"The record has exist.n"。else可编辑资料 - - - 欢迎下载精品名师归纳总结 printf"Input the student's name you want to insert:"。scanf"%s",studN.name。/* 输入要插入记录的名字 */ forj=0。j<3 。j+ do printf"Input the student's score%d:",j+1。scanf"%s",b。/* 输入分数 */ studN.scorej=atofb。ifstudN.scorej<=0|studN.scorej>100/* 判定分数是否在 0-100 之间 */ k=1。printf"Error input .n"。printf"Input again .n"。elsek=0 。whilek。sum=sum+studN.scorej。/* 三科总分 */studN.average=sum/3.0。/* 平均分 */* 以下 for语句为插入 */ forj=0。j<N 。j+ifstudj.average<studN.average i=N。 temp=studN。for。i>j 。 studi=studi-1。i-。studj=temp。j=N 。可编辑资料 - - - 欢迎下载精品名师归纳总结 N+。H=1 。/* 记录数加 1*/printf"nInsert success .nn"。printf"If you wantto go on press:yn"。printf"Else press any key to menu:"。flag=getch。/* 猎取一个字符判定是否要连续插入*/ clrscr。/* 清屏 */* 储存记录函数 */void savestruct student stud FILE *fp。int i=0。printf"nnnnnnnnnnn"。printf""。printf"* Saving file.*n"。/* 储存提示 */printf""。sleep1。/*调用暂停函数 暂停 1 秒钟 */ iffp=fopen"score","wb"=NULL/* 以 wb形式打开文件 score*/printf"Can not open the filen"。sleep1。return。fori=0。i<N 。i+iffwrite&studi,sizeofstruct student,1,fp.=1/* 把记录储存到 score 文件中 */可编辑资料 - - - 欢迎下载精品名师归纳总结printf"File write errorn"。return。fclosefp。/* 关闭文件 */ clrscr。/*清屏 */printf"nnnnnnnnnnn"。printf""。printf"* Saving success . *n"。/*储存成功提示*/printf" H=0 。"。sleep2clrscr。/*/*调用暂停函数清屏 */暂停1.5秒钟 */* 转变记录函数 */ void changevoid int i,a,k,n,h,j。float sum。char m10,flag='y',b8。whileflag='y' sum=0 。i=0 。k=0 。printf"nttttbbbbThe number-name list:n"。printf""。printf""。/*以下 while语句为输出文件中已有记录的学号与人名whilei<N*/ ifstrlenstudi.number<4n=4 。可编辑资料 - - - 欢迎下载精品名师归纳总结elsen=strlenstudi.number。ifn+strlenstudi.name<15 ifn+strlenstudi.name>6 printf"%-4s-",studi.number。printf"%st",studi.name。i+ 。else printf"%-4s-",studi.number。printf"%stt",studi.name。i+ 。else printf"%-4s-",studi.number。ifstrlenstudi.number>4j=12-strlenstudi.number。elsej=12-4。forn=0。n<j 。n+ printf"%c",studi.namen。printf". "。i+ 。printf"n-"。printf"-"。printf"nttInput the student's number you want to change."。scanf"%s",m。/* 输入要转变记录的人名 */可编辑资料 - - - 欢迎下载精品名师归纳总结printf"n"。fori=0。strcmpstudi.number,m.=0&&i<N。i+ 。/* 查找要转变记录的人名*/*a为判定是否找到 */ ifi<Na=1 。h=i 。elsea=0 。/*以下 if语句为找到要转变的并输入新记录 */ ifa printf"Input new number:"。scanf"%s",b 。 /* 输入学号 */ fori=0 。i<h|i>h&&i<N 。i+ifstrcmpstudi.number,b=0/*查找要转变记录是否存在 */ k=1 。ifk/* 判定要转变记录是否存在 */printf"The record has exist.n"。getch。else strcpystudh.number,b。/*复制学号 */printf"Input new name:"。scanf"%s",studh.name。/*输入姓名 */fork=0。k<3。k+可编辑资料 - - - 欢迎下载精品名师归纳总结 do printf"Input new score%d",k+1。scanf"%s",b。/* 输入分数 */studh.scorek=atofb。/*将字符串强制转换成整形 */* 以下语句判定输入是否在0-100 之间 */ ifstudi.scorek<=0|studh.scorek>100n=1 。printf"Error input .n"。printf"Input again .n"。elsen=0 。whilen。sum=sum+studh.scorek。 /* 统记三科总分*/studi.average=sum/3.0。/* 平均分 */printf"nttt * Change success . *nn"。 /* 转变成功提示*/H=1 。elseprintf"nttttError input.nn"。

    注意事项

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

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




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

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

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

    收起
    展开