C语言实习报告.docx
《C语言实习报告.docx》由会员分享,可在线阅读,更多相关《C语言实习报告.docx(16页珍藏版)》请在冰豆网上搜索。
C语言实习报告
******大学
《C语言程序实习》
题目学生成绩管理系统
指导教师:
姓名:
学号:
班级:
专业:
计算机科学与技术专业
地点:
计算中心
时间:
一、学生成绩管理系统
1、程序的主要功能:
本程序是用来管理学生的成绩,具体包括输入成绩、显示成绩、修改成绩、存储成绩、读取成绩和退出程序几项功能。
2、主要功能的实现:
根据需要输入相关的数据即可实现相应的操作。
例如:
选择1将出现如下界面,按提示输入各项信息即可。
如果想结束录入就将班级名输入为“END”即可返回主界面。
具体实现见程序运行效果图。
二、上机环境
1、操作系统:
WindowsVista
2、开发工具:
VC6.0
三、
函数调用关系图
Main函数
Addst函数Displayst函数Putfile函数Getfile函数Changest函数
四、各函数功能说明
1、main()—————————————————————主函数
2、voidaddst(structststu[])———————————录入成绩的函数
3、voiddisplayst(structststu[])—————————显示成绩的函数
4、voidputfile(structststu[])——————————存储成绩的函数
5、voidgetfile(structststu[])——————————读取成绩的函数
6、voidchangest(structststu[],intn)——————更改成绩的函数
五、算法描述或流程图
开始
调用main函数
返回
输入选择操作的值
所选的值=?
12345
主函数流程图(图1)
1
入口
输入学生的信息
No
班级是否为end
Yes
结束
输入学生成绩流程图(图2)
2
入口
显示学生成绩
结束
显示学生流程图(图3)
存储学生成绩流程图(图4)
读取成绩流程图(图5)
5
输入更改后的学生信息
关闭文件
结束
入口
输入要更改的学生的学号
打开文件
更改成绩流程图(图6)
六、程序运行效果图
输入要进行操作的代号便可执行此项操作:
选择1将出现如下界面,按提示输入各项信息即可。
如果想结束录入就将班级名输入为“END”即可返回主界面。
选择2将出现如下界面。
此界面为显示已输入的学生成绩。
选择3将出现如下界面。
输入要修改的学生的学号即可实现对其信息的更改。
选择4将出现如下界面。
输入学生信息要存储的文件名即可实现存储功能。
选择5将出现如下界面。
输入要打开的文件名即可读取该文件。
选择6将出现如下界面。
此操作为结束本程序的操作。
七、体会
在本次课程设计中,先使用结构化分析方法对系统进行分析,将整个系统细分为几个模块,再针对每个小模块编写代码。
由于时间比较仓促,在进行代码设计时,大约100行代码来源于《C语言案例教程》(机械出版社出版)一书,源码的其他100行均由自己独立编写。
主程序界面也是由自己独立设计完成。
经过对原来的代码进行完善后,目前的程序能实现老师要求的所有功能。
经过这段时间的编程,我体会到编程工作的不容易。
虽然只是编了一个小程序,但是也体会到了编程工作的繁琐程度,不但需要不断的完善、更改和优化代码,还要根据程序的功能进行调试,系统检测不出错误并不代表没有错误,这就需要我们更细心的检查程序,对程序的每项功能都认真的进行不同类型的测试。
在测试过程中能发现程序中的错误和bug,然后再想办法解决。
通过此次的实习还让我锻炼了严谨认真的习惯,因为一个小错误就有可能导致整个程序无法运行,所以必须认真的输入,争取不犯或尽量少犯输入的错误。
对于词法的错误要认真对待,争取以后不犯类似的错误。
通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能境强和巩固我的知识。
特别是作为在校在学生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材,才能在21世纪这个激烈的竞争社会中取胜。
八、参考文献
[1]湛为芳C语言程序设计技术清华大学出版社,2006
[2]谭浩强C程序设计(第三版)清华大学出版社,2005
[3]赵睿C语言案例教程机械工业出版社,2007
九、程序清单
#include
#include
#defineRS10
#defineKM3
structst
{
intnum;
charclassname[10];
charname[20];
charsex[3];
floatscore[KM];
}
student[RS]={{0}};
/*成绩录入*/
voidaddst(structststu[])
{
inti;
structst*p;
p=stu;
while(p->num!
=0)p++;
do
{
printf("若想结束录入请将班级名输入为“END”。
\n");
printf("请输入班级:
");
scanf("%s",(*p).classname);
if(strcmp((*p).classname,"end")!
=0)
{
printf("请输入学号:
");
scanf("%d",&(*p).num);
printf("请输入姓名:
");
scanf("%s",(*p).name);
printf("请输入性别:
");
scanf("%s",(*p).sex);
printf("请输入C语言数学英语成绩:
");
for(i=0;iscanf("%f",&(*p).score[i]);
}
while(p->num!
=0)p++;
}
while(strcmp((*p).classname,"end"));
}
/*显示成绩*/
voiddisplayst(structststu[])
{
inti,k;
structst*p;
p=stu;
printf("\n********************************成绩单********************************");
printf("\n班级\t学号\t姓名\t性别\tC语言\t数学\t英语\n");
for(k=0;k{
if(p->num!
=0)
{
printf("\n%s\t",(*p).classname);
printf("%d\t",(*p).num);
printf("%s\t",(*p).name);
printf("%s\t",(*p).sex);
for(i=0;iprintf("%5.1f",(*p).score[i]);
}
p++;
}
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
}
/*存储文件*/
voidputfile(structststu[])
{
inti,k;
FILE*fp;
structst*p;
charfile[50];
p=stu;
printf("请输入要存储文件的文件名:
");
scanf("%s",file);
if((fp=fopen(file,"w"))==NULL)
{
printf("不能打开此文件。
\n");
return;
}
for(k=0;k{
if(p->num!
=0)
{
fprintf(fp,"\n%s\t",(*p).classname);
fprintf(fp,"%d\t",(*p).num);
fprintf(fp,"%s\t",(*p).name);
fprintf(fp,"%s\t",(*p).sex);
for(i=0;ifprintf(fp,"%5.1f",(*p).score[i]);
}
p++;
}
fclose(fp);
printf("成绩已存入文件%s中。
\n",file);
}
/*读取文件*/
voidgetfile(structststu[])
{
inti;
FILE*fp;
structst*p;
charfile[50];
p=stu;
printf("请输入要读取的文件的文件名:
");
scanf("%s",file);
if((fp=fopen(file,"r"))==NULL)
{
printf("不能打开此文件。
\n");
return;
}
while(!
feof(fp))
{
fscanf(fp,"\n%s",(*p).classname);
fscanf(fp,"%d",&(*p).num);
fscanf(fp,"%s",(*p).name);
fscanf(fp,"%s",(*p).sex);
for(i=0;ifscanf(fp,"%f",&(*p).score[i]);
p++;
}
fclose(fp);
printf("成绩已从文件%s中读出。
\n",file);
displayst(stu);
}
/*更改成绩*/
voidchangest(structststu[],intn)
{
inti;
structst*p;
p=stu;
while(p->num!
=n)p++;
printf("请输入班级:
");
scanf("%s",(*p).classname);
printf("请输入学号:
");
scanf("%d",&(*p).num);
printf("请输入姓名:
");
scanf("%s",(*p).name);
printf("请输入性别:
");
scanf("%s",(*p).sex);
printf("请输入C语言数学英语成绩:
");
for(i=0;iscanf("%f",&(*p).score[i]);
}
/*主函数*/
voidmain()
{
charch;
intn;
do
{
printf("********************************主菜单********************************\n");
printf("||\n");
printf("|1.输入成绩|\n");
printf("||\n");
printf("|2.显示成绩|\n");
printf("||\n");
printf("|3.修改成绩|\n");
printf("||\n");
printf("|4.成绩存储|\n");
printf("||\n");
printf("|5.读取成绩|\n");
printf("||\n");
printf("**********************************************************************\n");
printf("||\n");
printf("||\n");
printf("|6.退出程序|\n");
printf("||\n");
printf("||\n");
printf("**********************************************************************\n");
printf("\n请选择要进行的操作:
\n");
scanf("%c",&ch);
if(ch=='1')addst(student),scanf("%c",&ch);
if(ch=='2')displayst(student),scanf("%c",&ch);
if(ch=='3')
{
printf("请输入要修改的学生学号:
");
scanf("%d",&n);
changest(student,n);
scanf("%c",&ch);
}
if(ch=='4')putfile(student),scanf("%c",&ch);
if(ch=='5')getfile(student),scanf("%c",&ch);
}
while(ch!
='6');
printf("**********************************************************************\n");
printf("||\n");
printf("*******************************谢谢使用*******************************\n");
printf("||\n");
printf("**********************************************************************\n");
}