学生成绩记录簿设计.docx

上传人:b****6 文档编号:14199682 上传时间:2023-06-21 格式:DOCX 页数:28 大小:190.69KB
下载 相关 举报
学生成绩记录簿设计.docx_第1页
第1页 / 共28页
学生成绩记录簿设计.docx_第2页
第2页 / 共28页
学生成绩记录簿设计.docx_第3页
第3页 / 共28页
学生成绩记录簿设计.docx_第4页
第4页 / 共28页
学生成绩记录簿设计.docx_第5页
第5页 / 共28页
学生成绩记录簿设计.docx_第6页
第6页 / 共28页
学生成绩记录簿设计.docx_第7页
第7页 / 共28页
学生成绩记录簿设计.docx_第8页
第8页 / 共28页
学生成绩记录簿设计.docx_第9页
第9页 / 共28页
学生成绩记录簿设计.docx_第10页
第10页 / 共28页
学生成绩记录簿设计.docx_第11页
第11页 / 共28页
学生成绩记录簿设计.docx_第12页
第12页 / 共28页
学生成绩记录簿设计.docx_第13页
第13页 / 共28页
学生成绩记录簿设计.docx_第14页
第14页 / 共28页
学生成绩记录簿设计.docx_第15页
第15页 / 共28页
学生成绩记录簿设计.docx_第16页
第16页 / 共28页
学生成绩记录簿设计.docx_第17页
第17页 / 共28页
学生成绩记录簿设计.docx_第18页
第18页 / 共28页
学生成绩记录簿设计.docx_第19页
第19页 / 共28页
学生成绩记录簿设计.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生成绩记录簿设计.docx

《学生成绩记录簿设计.docx》由会员分享,可在线阅读,更多相关《学生成绩记录簿设计.docx(28页珍藏版)》请在冰点文库上搜索。

学生成绩记录簿设计.docx

学生成绩记录簿设计

课程设计(大作业)任务书

姓名:

xx院(系):

信息技术学院

专业:

计算机科学与技术学号:

xx

任务起止日期:

xx

课程设计题目:

学生成绩记录簿

 

课程设计要求:

编制一个C语言成绩记录簿,每个学生信息包括:

学号、姓名、C语言成绩。

具体功能:

1.系统以菜单方式工作;

2.创建学生成绩信息并以磁盘文件保存;

3.读取磁盘文件并显示输出所有学生的成绩;

4.查询学生成绩;

(1)按学号查询成绩;

(2)学号姓名查询成绩;

5.修改指定姓名或学号的学生的成绩并可存盘;

6.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。

工作计划及安排:

 

星期一:

老师的大概讲解及主函数、目录函数的编写和调试;

星期二:

创建学生信息、输出学生信息和修改学生信息的函数编写及调试;

星期三:

学生信息查询、学生成绩分段和学生成绩排序的函数编写及调试;

星期四:

整个函数的最终调试,课程设计(大作业)报告的书写;

星期五:

答辩。

 

指导教师签字

年月日

课程设计(大作业)成绩

学号:

xx姓名:

xx指导教师:

xx

课程设计题目:

学生成绩记录簿设计

总结:

通过这次的课程设计,增加了我对学习C语言学习的兴趣,虽然还不是真正的明白所有的C语言的子函数和里面的一些逻辑顺序,但我从C语言这门课程开始,已经发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的运行也有一个大体的了解。

这次课程设计经过老师的讲解,自己的查找,在网上的搜索,实现题目上的要求,先做出一些简单的函数和程序,一步步的在做出其它的内容,不过在实际操作过程中犯得一些错误也还是会得到一些意外的收获。

在具体的操作中,对这学期的C语言的理论知识得到巩固,在设计的过程中也发现自己的不足之处,在以后的学习和上机的操作中会更加注意,同时体会到C语言的简洁和灵活。

在上机操作中我们的任何不懂的问题都会暴露出来,对于我们来说是是件好事,在课程设计的过程中特别是对数组和循环有了深刻的理解。

通过实际的操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题,解决问题的能力。

指导教师评语:

 

成绩:

 

填表时间:

指导教师签名:

 

一.问题的定义

编制一个C语言成绩记录簿,每个学生信息包括:

学号、姓名、C语言成绩。

要求:

1.数据存储采用文件形式。

2.标准的C语言输入输出

3.功能完善,适当注释

4.模块化设计、结构化编程

二、需求分析

系统能实现以下主要功能:

1.系统以菜单方式工作

2.创建学生成绩信息并以磁盘文件保存;

3.读取磁盘文件并显示输出所有学生的成绩;

4.查询学生成绩

(1)按学号查询成绩

(2)学号姓名查询成绩

4.添加成绩记录;

5.修改指定姓名或学号的学生的成绩并可存盘;

6.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。

三、总体设计

根据系统的要求,系统总体设计如图1所示。

图1系统总体结构

四、详细设计

该部分主要包括:

数据结构设计、函数设计(包括函数原型、算法思想、流程描述)、代码设计及程序运行结果显示。

(一)学生成绩数据结构设计

#include

#include

#include

inti,j,k,y;

FILE*fp;

Structstu

{

intno;

charname[30];

floatcscore;

longa;

};structstus[100];

(二)函数设计

1.主函数

main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。

2.其他各功能函数

(1)学生成绩信息录入函数voidinput()

算法思想:

①依次录入结构体数组中所包含的各个成员;

②直到输入的结构体成员中信息全部为0,数据输入结束;

③返回实际录入的学生成绩信息数。

(2)将学生成绩信息输出为voidoutput()

算法思想:

①定义结构体变量的指针变量;

②输出所输入的全部信息,若不能输出信息给出提示信息;

③将文件中的信息依次读出,最后结构体的指针为NULL。

(3)从文件中修改学生成绩信息voidmodify()

算法思想:

①定义指向结构体变量的指针和指向文件的指针;

②修改方式分为两种(学号和姓名),选择是给出相应的信息;

③将修改后的信息保存,并提示。

3.流程描述

(1)菜单函数

intfun()

{

intn;

system("cls");

printf("\n\n\t\t\t\t成绩记录薄");

printf("\n\n\t\t\t");

for(i=0;i<33;i++)

printf("*");

printf("\n");

printf("\t\t\t************菜单*************\n");

printf("\t\t\t*1、创建学生的信息!

\t*\n");

printf("\t\t\t*2、输出所有学生的信息!

\t*\n");

printf("\t\t\t*3、修改成绩!

\t*\n");

printf("\t\t\t*4、查询!

\t*\n");

printf("\t\t\t*5、显示成绩分段的学生信息!

\t*\n");

printf("\t\t\t*6、学生成绩排名!

\t*\n");

printf("\t\t\t*7、退出成绩记录薄!

\t*\n");

printf("\t\t\t");

for(i=0;i<33;i++)

printf("*");

printf("\n\n");

printf("\n\t\t\t请输入选项:

");

scanf("%d",&n);

returnn;

}

(2)学生成绩信息录入函数

voidinput()

{

system("cls");

i=0;

fp=fopen("out.dat","w");

printf("请以0作为输入学生学号信息的结束!

\n");

do

{

printf("输入学生的学号:

");

scanf("%d",&s[i].no);

printf("输入学生的姓名:

");

scanf("%s",s[i].name);

printf("输入学生的C语言成绩:

");

scanf("%f",&s[i].cscore);

printf("输入添加成绩的时间:

");

scanf("%ld",&s[i].a);

if(s[i].no!

=0)

fprintf(fp,"%d%-4s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

}while(s[i].no!

=0);

fclose(fp);

}

voidoutput()//学生全部信息输出

{

if((fp=fopen("out.dat","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

}

printf("\t\t\t全部的学生信息:

\n");

k=0;

while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!

=EOF)

{

printf("\t\t\t%d\t%s\t%.1f\t%ld\n",s[k].no,s[k].name,s[k].cscore,s[k].a);

k++;

}

fclose(fp);

}

(3)学生信息输出函数

voidoutput()

{

if((fp=fopen("out.dat","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

}

printf("\t\t\t全部的学生信息:

\n");

k=0;

while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!

=EOF)

{

printf("\t\t\t%d\t%s\t%.1f\t%ld\n",s[k].no,s[k].name,s[k].cscore,s[k].a);

k++;

}

fclose(fp);

}

(4)修改学生信息函数

voidmodify()

{

charst[30];

intx,num;

floatnu;

longh;

k=0;

system("cls");

if((fp=fopen("out.dat","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

return;

}

while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!

=EOF)

{

k++;

}

fclose(fp);

printf("输入1表示用学号修改,输入2表示用姓名修改!

请选择:

\n");

scanf("%d",&x);

if(x==1)

{

printf("请输入修改成绩人的学号:

");scanf("%d",&num);

for(i=0;i

if(num==s[i].no)

{

printf("请输入修改的成绩:

\n");

scanf("%f",&nu);

s[i].cscore=nu;

printf("请输入修改的时间:

\n");

scanf("%ld",&h);

s[i].a=h;

fp=fopen("out.dat","w");

for(i=0;i

fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

fclose(fp);

printf("修改成功\n");

return;

}

printf("没有找到该生的信息!

\n");

return;

}

if(x==2)

{

printf("请输入修改成绩人的姓名:

");

scanf("%s",st);

for(i=0;i

if(strcmp(s[i].name,st)==0)

{

printf("请输入修改的成绩:

\n");

scanf("%f",&nu);

s[i].cscore=nu;

printf("请输入修改成绩的时间:

\n");

scanf("%ld",&h);

s[i].a=h;

fp=fopen("out.dat","w");

for(i=0;i

fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

fclose(fp);

printf("修改成功\n");

return;

}

printf("没有找到该生的信息!

\n");

return;

}

(5)代码设计和执行结果

1.头文件

Structstu

{

intno;/*学号*/

charname[30];/*姓名*/

floatcscore;/*成绩*/

longa;/*时间*/

};structstus[100];

/******以下是函数原型*******/

voidinput()/*输入记录*/

voidoutput()/*输出记录*/

voidmodify()/*修改记录*/

2.源程序代码与运行结果

#include

#include

#include

inti,j,k,y;

FILE*fp;

structstu//结构体函数的定义

{

intno;

charname[30];

floatcscore;

longa;

};structstus[100];

 

intfun()//目录函数

{

intn;

system("cls");

printf("\n\n\t\t\t\t成绩记录薄");

printf("\n\n\t\t\t");

for(i=0;i<33;i++)

printf("*");

printf("\n");

printf("\t\t\t************菜单*************\n");

printf("\t\t\t*1、创建学生的信息!

\t*\n");

printf("\t\t\t*2、输出所有学生的信息!

\t*\n");

printf("\t\t\t*3、修改成绩!

\t*\n");

printf("\t\t\t*4、查询!

\t*\n");

printf("\t\t\t*5、显示成绩分段的学生信息!

\t*\n");

printf("\t\t\t*6、学生成绩排名!

\t*\n");

printf("\t\t\t*7、退出成绩记录薄!

\t*\n");

printf("\t\t\t");

for(i=0;i<33;i++)

printf("*");

printf("\n\n");

printf("\n\t\t\t请输入选项:

");

scanf("%d",&n);

returnn;

}

voidinput()//输入学生的学号、姓名、成绩信息

{

system("cls");

i=0;

fp=fopen("out.dat","w");

printf("请以0作为输入学生学号信息的结束!

\n");

do

{

printf("输入学生的学号:

");

scanf("%d",&s[i].no);

printf("输入学生的姓名:

");

scanf("%s",s[i].name);

printf("输入学生的C语言成绩:

");

scanf("%f",&s[i].cscore);

printf("输入添加成绩的时间:

");

scanf("%ld",&s[i].a);

if(s[i].no!

=0)

fprintf(fp,"%d%-4s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

}while(s[i].no!

=0);

fclose(fp);

}

voidoutput()//学生全部信息输出

{

if((fp=fopen("out.dat","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

}

printf("\t\t\t全部的学生信息:

\n");

k=0;

while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!

=EOF)

{

printf("\t\t\t%d\t%s\t%.1f\t%ld\n",s[k].no,s[k].name,s[k].cscore,s[k].a);

k++;

}

fclose(fp);

}

voidmodify()//修改学生信息

{

charst[30];

intx,num;

floatnu;

longh;

k=0;

system("cls");

if((fp=fopen("out.dat","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

return;

}

while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!

=EOF)

{

k++;

}

fclose(fp);

printf("输入1表示用学号修改,输入2表示用姓名修改!

请选择:

\n");

scanf("%d",&x);

if(x==1)

{

printf("请输入修改成绩人的学号:

");scanf("%d",&num);

for(i=0;i

if(num==s[i].no)

{

printf("请输入修改的成绩:

\n");

scanf("%f",&nu);

s[i].cscore=nu;

printf("请输入修改的时间:

\n");

scanf("%ld",&h);

s[i].a=h;

fp=fopen("out.dat","w");

for(i=0;i

fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

fclose(fp);

printf("修改成功\n");

return;

}

printf("没有找到该生的信息!

\n");

return;

}

if(x==2)

{

printf("请输入修改成绩人的姓名:

");

scanf("%s",st);

for(i=0;i

if(strcmp(s[i].name,st)==0)

{

printf("请输入修改的成绩:

\n");

scanf("%f",&nu);

s[i].cscore=nu;

printf("请输入修改成绩的时间:

\n");

scanf("%ld",&h);

s[i].a=h;

fp=fopen("out.dat","w");

for(i=0;i

fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

fclose(fp);

printf("修改成功\n");

return;

}

printf("没有找到该生的信息!

\n");

return;

}

}

voidlookat()//学生信息查询

{

charst[30];

intx,num;

k=0;

system("cls");

if((fp=fopen("out.dat","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

return;

}

while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!

=EOF)

{

k++;

}

printf("输入1表示用学号查询,输入2表示用姓名查询!

请选择:

\n");

scanf("%d",&x);

if(x==1)

{

printf("请输入查询的学号:

");

scanf("%d",&num);

for(i=0;i

if(num==s[i].no)

{

printf("%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

return;

}

printf("对不起,找不到该生!

\n");

return;

}

if(x==2)

{printf("请输入查询的姓名:

");

scanf("%s",st);

for(i=0;i

if(strcmp(s[i].name,st)==0)

{

printf("%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

return;

}

printf("对不起,找不到该生!

\n");

}

}

voidsubsection()//学生成绩分段

{

system("cls");

k=0;

if((fp=fopen("out.dat","r"))==NULL)

{

printf("Cannotopenthefile!

\n");

}

while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!

=EOF)

{

k++;

}

printf("\t\t\t90分以上学生的信息!

\n");

for(i=0;i

if(s[i].cscore>=90)

printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

printf("\n\n");

printf("\t\t\t80到89分学生的信息!

\n");

for(i=0;i

if(s[i].cscore<90&&s[i].cscore>=80)

printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

printf("\n\n");

printf("\t\t\t60到79分学生的信息!

\n");

for(i=0;i

if(s[i].cscore>=60&&s[i].cscore<80)

printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

printf("\n\n");

printf("\t\t\t60分以下学生的信息!

\n");

for(i=0;i

if(s[i].cscore<60)

printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a);

printf("\n\n");

}

voidrank()//成绩的排序

{

structstut;

k=0;

system("cls");

if((fp=fopen("out.dat","r"))==NULL)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2