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

    成绩记录簿-C语言版(共18页).doc

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

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

    成绩记录簿-C语言版(共18页).doc

    精选优质文档-倾情为你奉上上海应用技术学院课程设计20132014学年第二学期设计题目 成绩记录簿 院 (系) 工程创新学院 专 业 电气工程及其自动化 班 级 Y1 学 号 学生姓名 聂 震 设计时间 2014.06.30 -2014.07.04 指导教师 朱 迅 提交日期 2014.07.04 一. 课程设计目的本课程设计是提高学生程序设计能力的重要实践性环节之一,是在学生学习完程序设计基础(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握;2. 掌握C语言编程和程序调试的基本技能;3. 利用C语言进行基本的软件设计;4. 初步掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力。二. 课程设计要求1. 分析课程设计题目的要求;2. 写出详细设计说明;3. 编写程序代码,调试程序使其能正确运行;4. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5. 设计完成后提交课程设计报告(按学校要求装订)和源代码文件的电子文档。三 . 题目三 成绩记录簿1. 设计要求:成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分。在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分。也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率。程序的主界面如下: 成绩记录簿1. 添加2. 删除3. 查学生成绩4. 查班成绩表0. 退出2. 提高水平在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入。3. 提示在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型。四. 设计说明F.1程序系统的结构用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符。主函数删除成绩添加成绩查询学生查询班级查询按学号删除按姓名删除按学号查找按姓名查找课程编号输入姓名,学号等信息删除成功平均分,及格率,学生信息学生相关信息输出学生信息输出所查询信息输出剩余的学生信息退出F.2程序1(标识符)设计说明   F.2.1程序描述 记录一些学生的学习情况,并保存下来。能保存,删除,查询学生的成绩,可以按班级查询一门学科的学习状况等。  F.2.2功能 1. 添加: 本程序可以一次输入多个学生的成绩。开始时,输入计划添加学生的个数,然后依次输入各个学生的基本信息,程序自动记录,输出。2. 删除:删除分为按姓名和学号查找删除两种方法删除,开始时,选择删除方法,根据提示输入信息,系统自动查找,删除,用后一个来覆盖前一个原理自动操作,输出剩余信息,并保存。3 . 查询:查询学生成绩可以用3种方法来进行。1.学号2.姓名3.课程代号。学生可按学号和姓名查询,按提示输入相关信息查询。班级查询,可输入课程代号,可得班平均分以及班级及格率。  F.2.3性能所有成绩都以百分制计分,学分精度是小数点后一位,学号和课程序号自己定义。操作灵活,没有太大的时间要求  F.2.4输人项    输入时,学号,成绩,课程编号是整数型,学分是小数(浮点型),姓名和课程名称是字符型,数据没有范围限制,比较自由,没有数量限制。用键盘输入,写入文件my.txt  F. 2. 5输出项    输出时,学号,成绩,课程编号是整数型,学分是小数(浮点型,保留一位小数),姓名和课程名称是字符型,数据没有范围限制,比较自由,没有数量限制。显示器输出,从文件my.txt读取  F.2.6算法    计算平均值时,先将所有数据循环相加,再除以总人数。计算及格率时, 先计算有多少超过60分的人,累加,再除以总人数。  F.2.7流程逻辑    见F.1程序系统的结构流程图  F.2.8接口开始提示输入放入结构体数组中写入文件结束1 添加开始提示学号调出学生信息删除结束姓名输入学号输入姓名  2 删除开始提示学号调出学生信息删除结束姓名输入学号输入姓名3.学生查找开始输入查询的课程序号输出该班级所有成绩,学分 结束4.班级查找F.2.9存储分配     本程序中结构体最大容量是10000人,结构体中,姓名分配了10个数组空间,课程名称分配了10 个数组空间。  F.2.10注释设计     说明准备在本程序中安排的注释,如:    a. 加在模块首部的注释;    b加在各分枝点处的注释; 对各变量的功能、范围、缺省条件等所加的注释;     d对使用的逻辑所加的注释等等。   F.2.11限制条件     基本没有限制条件  F.2.12测试计划 初始界面添加学生输入添加选项1我添加了三个学生,学号分别是1,2,3,其他信息 上图,添加完成。按学号删除输入删除选项2 ,按提示选按1.学号查找,输入学号1,查找成功,自动删除,显示剩余信息按姓名删除输入删除选项2 ,按提示选按2.按姓名查找.,输入姓名fg,查找成功,自动删除,显示剩余信息按学号查找输入查找选项3,按提示选1.按学号查找,输入学号3,自动查找并显示按姓名查找输入查找选项3,按提示选2.按姓名查找,输入姓名hj,自动查找并显示按课程序号班级查找输入查找选项4,根据提示输入课程序号,输入124,自动查找并显示,同时计算平均分和及格率并显示。退出按退出选项0 退出程序。最后写入的文本文件从文件中读取的数据输入查找选项3,输入学号3,自动从文件中读取数据并显示。五源代码#include <stdio.h>#include <string.h>#include<stdlib.h>struct stu int id; char name10; 定义结构体 int subnum; char subname10;int score; float credit;f10000;int x=0,n,choose,s=0,score=0,c; long int id,subnum; 定义变量char name10,subname10;void add() 定义“添加”函数printf("你要添加几个学生的成绩"); scanf("%d",&n); 对添加的几个学生n赋值 printf("学号 姓名 课程编号 课程名称 成绩 学分n"); n=n+s; 计算共有几个学生 for (x=0;x<n;x+) 在0n之间循环 scanf ("%ld%s%ld%s%d%f",&fx.id,&fx.name,&fx.subnum,&fx.subname,&fx.score,&fx.credit); 对结构体中学生信息赋值 s+; 循环一次学生人数增加一 for (x=0;x<s;x+) 在0s之间循环 printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit); 输出学生信息 FILE *fp;fp=fopen("my.txt","wb");写入文件my.txtfor(x=0;x<s;x+)fwrite(&fx,sizeof(fx),1,fp);fclose(fp); void cut() 定义“删除”函数int y=0;printf("1.按学号查找;2.按姓名查找n");scanf ("%d",&choose); 为选择函数赋值switch(choose) case 1:printf("输入学号:n");scanf ("%ld",&id); 输入要查找的学号for (x=0;x<s;x+)if (fx.id=id) 判断数据里的学号与要查询的是否一致 printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit); printf("nn");y+;for (y=0;y<s;y+)strcpy(fy.name,fy+1.name);fy.id=fy+1.id;把后一项的数据赋给前一项fy.subnum=fy+1.subnum;strcpy(fy.subname,fy+1.subname);fy.score=fy+1.score;fy.credit=fy+1.credit;s-;for (x=0;x<s;x+)printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit); 输出删除后的数据printf("删除成功n");break;case 2:printf ("输入姓名:");scanf ("%s",&name); 输入要查询的姓名for (x=0;x<s;x+) if (strcmp(fx.name,name)=0) 判断数据里的姓名与要查询的是否一致 printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit); printf("nn"); y+;for (y=0;y<s;y+)strcpy(fy.name,fy+1.name);fy.id=fy+1.id;把后一项的数据赋给前一项fy.subnum=fy+1.subnum;strcpy(fy.subname,fy+1.subname);fy.score=fy+1.score;fy.credit=fy+1.credit;s-;for (x=0;x<s;x+)printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit);printf("删除成功n");break;FILE *fp;写入文件my.txtfp=fopen("my.txt","wb");for(x=0;x<s;x+)fwrite(&fx,sizeof(fx),1,fp);fclose(fp);void student()printf ("1.按学号查找。2.按姓名查找。");scanf ("%d",&choose); 给查找条件赋值switch(choose)case 1:printf("输入学号:n");scanf ("%ld",&id); 输入学号for (x=0;x<s;x+) if (fx.id=id) 判断数据里的学号与要查询的是否一致printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit); 输出查询结果 break; case 2:printf ("输入姓名:");scanf ("%s",&name); 输入姓名for (x=0;x<s;x+) if (strcmp(fx.name,name)=0) 判断数据里的学号与要查询的是否一致 printf("学号t姓名t课程编号t课程名称t成绩t学分n");printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit); 输出查询结果 break;void classes()int sum=0,b=0;float ave,c;printf ("输入课程序号:n");scanf ("%ld",&subnum); 输入课程序号for (x=0;x<s;x+)if(fx.subnum=subnum) 判断数据里课程序号和与查询序号是否一致printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,fx.name,fx.subnum,fx.subname,fx.score,fx.credit); 输出查询结果sum+=fx.score; 计算总成绩ave=(float)sum/s; 计算平均成绩printf ("平均分:%.3fn",ave); for (x=0;x<s;x+)if(fx.score>=60) 判断成绩是否超过60b+; ,人数加一c=(float)b/s; 计算及格率printf("及格率:%.3f",c);int main() 主函数unsigned a;FILE *fp;fp=fopen("my.txt","rb");fread(&fs,sizeof(fs),1,fp);读取文本my.txt中的数据 while(!feof(fp)s+;fread(&fs,sizeof(fs),1,fp);fclose(fp);while(1) printf("nnn");printf(" 成绩记录簿n");printf(" 1: 添 加n");输出目录printf(" 2: 删 除n");printf(" 3: 查学生成绩n");printf(" 4: 查班成绩表n");printf(" 0: 退 出n");printf(" 请输入数字选择: ");scanf("%d",&a); switch(a) case 1: add(); break; case 2: cut();break; 目录对应的结构 case 3:student();break; case 4:classes(); break; case 0:exit(0); default: ; 六. 使用说明使用时,目录会自动显示成绩记录簿1. 添加2. 删除3. 查学生成绩4. 查班成绩表0. 退出选择1 时,添加学生,进入后会提示用户输入要添加学生的数目,输入后,依次输入学生信息。选择2 时,删除学生,进入后会提示用户输入选择条件(1. 按学号查找 2. 按姓名查找),选1 时,提示输入学号,系统自动查找并删除,自动输出其余学生信息;选2 时,提示输入姓名,系统自动查找并删除,自动输出其余学生信息。选择3 时,查询学生成绩,进入后提示用户输入选择条件(1. 按学号查找 2. 按姓名查找),选1 时 ,提示输入学号,系统自动查找并输出学生信息;选2 时,提示输入姓名,系统自动查找并输出学生信息。选择4 时,查班成绩表,进入后提示用户输入课程序号,输入后系统自动查找并输出全班先关课程学生信息,然后计算平均值及及格率并输出。选择0 时,退出程序。七. 课程设计心得与体会;短短的一周已经过去了,在此我将交出我一周的成果,我真是百感交错:1 原先写程序直接编,条理性太差。如果先做一个流程图就条理很多。2 学会了将文件存入和读取,并学会在文件中加入信息和删除信息。3 我在查找学生姓名时遇到困难,从课本上找到了一个函数strcmp,解决了问题在编写程序的过程中,虽然遇到了这样那样的困难,但在老师,同学的帮助下,总算克服了各种苦难完成了这项任务。这次编写程序我也学到了很多,自主学习,查阅资料,对自己的学习生活很有帮助。八. 参考文献 1谭浩强C程序设计(第三版)北京:清华大学出版社,2005 2谭浩强C程序设计题解与上机指导(第三版)北京:清华大学出版社,20053 Herbert SchildtC语言大全(第四版)北京:电子工业出版社, 20044Samuel P.Harbison ,Guy L.SteeleC语言参考手册(第5版)北京:机械工业出版社,20035P.J.Deitel H.M.Deitel. C大学教程. 北京: 电子工业出版社, 20086程序设计语言课程设计指导书专心-专注-专业

    注意事项

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

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




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

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

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

    收起
    展开