成绩记录簿 C语言版_第1页
成绩记录簿 C语言版_第2页
成绩记录簿 C语言版_第3页
成绩记录簿 C语言版_第4页
成绩记录簿 C语言版_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上海应用技术学院课程设计20132014学年第二学期设计题目 成绩记录簿 院 (系) 工程创新学院 专 业 电气工程及其自动化 班 级 131032Y1 学 号 1310300235 学生姓名 聂 震 设计时间 2014.06.30 -2014.07.04 指导教师 朱 迅 提交日期 2014.07.04 一. 课程设计目的本课程设计是提高学生程序设计能力的重要实践性环节之一,是在学生学习完程序设计基础(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握;2. 掌握C语言编程和程序调试的基本技能;3. 利用C语言进行基本的软件设计

2、;4. 初步掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力。二. 课程设计要求1. 分析课程设计题目的要求;2. 写出详细设计说明;3. 编写程序代码,调试程序使其能正确运行;4. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5. 设计完成后提交课程设计报告(按学校要求装订)和源代码文件的电子文档。三 . 题目三 成绩记录簿1. 设计要求:成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分。在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分。也可以按课程编号查出一个班的成绩表,班成绩

3、表后面要统计平均分,和及格率。程序的主界面如下: 成绩记录簿1. 添加2. 删除3. 查学生成绩4. 查班成绩表0. 退出2. 提高水平在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入。3. 提示在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型。四. 设计说明F.1程序系统的结构用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符。主函数删除成绩添加成绩查询学生查询班级查询按学号删除按姓名删除按学号查找按姓名查找课程编号输入姓名,学号等信息删除成功平均分,及格率,学生信息学生相关信息输出学生信息输出所查询信息输出剩余的学生信息

4、退出F.2程序1(标识符)设计说明   F.2.1程序描述 记录一些学生的学习情况,并保存下来。能保存,删除,查询学生的成绩,可以按班级查询一门学科的学习状况等。  F.2.2功能 1. 添加: 本程序可以一次输入多个学生的成绩。开始时,输入计划添加学生的个数,然后依次输入各个学生的基本信息,程序自动记录,输出。2. 删除:删除分为按姓名和学号查找删除两种方法删除,开始时,选择删除方法,根据提示输入信息,系统自动查找,删除,用后一个来覆盖前一个原理自动操作,输出剩余信息,并保存。3 . 查询:查询学生成绩可以用3种方法来进行。1.学号2.姓名3.课程代号。学生可按

5、学号和姓名查询,按提示输入相关信息查询。班级查询,可输入课程代号,可得班平均分以及班级及格率。  F.2.3性能所有成绩都以百分制计分,学分精度是小数点后一位,学号和课程序号自己定义。操作灵活,没有太大的时间要求  F.2.4输人项    输入时,学号,成绩,课程编号是整数型,学分是小数(浮点型),姓名和课程名称是字符型,数据没有范围限制,比较自由,没有数量限制。用键盘输入,写入文件my.txt  F. 2. 5输出项    输出时,学号,成绩,课程编号是整数型,学分是小数(浮点型,保留一位小数),姓名和

6、课程名称是字符型,数据没有范围限制,比较自由,没有数量限制。显示器输出,从文件my.txt读取  F.2.6算法    计算平均值时,先将所有数据循环相加,再除以总人数。计算及格率时, 先计算有多少超过60分的人,累加,再除以总人数。  F.2.7流程逻辑    见F.1程序系统的结构流程图  F.2.8接口开始提示输入放入结构体数组中写入文件结束1 添加开始提示学号调出学生信息删除结束姓名输入学号输入姓名  2 删除开始提示学号调出学生信息删除结束姓名输入学号输入姓名3.学生查找开始输入查询的

7、课程序号输出该班级所有成绩,学分 结束4.班级查找F.2.9存储分配     本程序中结构体最大容量是10000人,结构体中,姓名分配了10个数组空间,课程名称分配了10 个数组空间。  F.2.10注释设计     说明准备在本程序中安排的注释,如:    a. 加在模块首部的注释;    b加在各分枝点处的注释; 对各变量的功能、范围、缺省条件等所加的注释;     d对使用的逻辑所加的注释等等。   F.2.11限制条件

8、     基本没有限制条件  F.2.12测试计划 初始界面添加学生输入添加选项1我添加了三个学生,学号分别是1,2,3,其他信息 上图,添加完成。按学号删除输入删除选项2 ,按提示选按1.学号查找,输入学号1,查找成功,自动删除,显示剩余信息按姓名删除输入删除选项2 ,按提示选按2.按姓名查找.,输入姓名fg,查找成功,自动删除,显示剩余信息按学号查找输入查找选项3,按提示选1.按学号查找,输入学号3,自动查找并显示按姓名查找输入查找选项3,按提示选2.按姓名查找,输入姓名hj,自动查找并显示按课程序号班级查找输入查找选项4,根据提示输入课程序号,输入

9、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

10、 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.subnum,&fx

11、.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.subnum,fx.subname,fx.score,fx.credit); 输出学生信息 FILE *fp;fp=fopen("my.txt","wb");

12、写入文件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

13、) 判断数据里的学号与要查询的是否一致 printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); printf("nn");y+;for (y=0;y<s;y+)strcpy(,fy+1.name);fy.id=fy+1.id;把后一项的数据赋给前一项fy.subnum=fy+1.subnum;strcpy(fy.subname

14、,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.subnum,fx.subname,fx.score,fx.credit); 输出删除后的数据printf("删除成功n");break;case 2:printf ("输入姓名:");sca

15、nf ("%s",&name); 输入要查询的姓名for (x=0;x<s;x+) if (strcmp(,name)=0) 判断数据里的姓名与要查询的是否一致 printf("学号t姓名t课程编号t课程名称t成绩t学分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); printf("nn"); y+;for (y=0;y<s;y+)strcp

16、y(,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.subnum,fx.subname,fx.score,fx.

17、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&

18、quot;);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.subnum,fx.subname,fx.score,fx.credit); 输出查询结果 break; case 2:printf ("输入姓名:");scanf ("

19、%s",&name); 输入姓名for (x=0;x<s;x+) if (strcmp(,name)=0) 判断数据里的学号与要查询的是否一致 printf("学号t姓名t课程编号t课程名称t成绩t学分n");printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); 输出查询结果 break;void classes()int sum=0,b=0;float ave,c;printf ("

20、;输入课程序号: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.subnum,fx.subname,fx.score,fx.credit); 输出查询结果sum+=fx.score; 计算总成绩ave=(float)

21、sum/s; 计算平均成绩printf ("平均分:%.3fn",ave); for (x=0;x<s;x+)if(fx.score>=60) 判断成绩是否超过60b+; 成绩超过60,人数加一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(f

22、p)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 时,添加学生,进入后会提示用户输入要添加学生的数目,输入后,依次输入学生信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论