C语言课程实习报告
所在院系 数理学院
班级学号 121091-13
姓 名
程序已存档
指导老师
评 分
二零##年七月十五
目录
一.题目要求…………………………….3
二.需求分析……………………………. 3
三.总体设计……………………………. 3掌握
四.详细设计…………………………… 4
1. 主函数…………………………………4
(1)流程图…………………………………………. 4
(2)主函数程序……………………………………. 5
2.各功能模块………………………… 7
(1).查询模块……………………………………… 7
〈1〉流程图…………………………………………………….. 7
〈2〉程序……………………………………………………….. 8
(2)机位预定模块………………………………. 9
〈1〉流程图…………………………………………. 9
〈2〉程序……………………………………………. 10
(3)退出预定模块………………………………… 11
〈1〉流程图…………………………………………. 11
〈2〉程序……………………………………………. 11
五.总结…………………………………14
一.题目要求
设计“机房机位预约系统”,要实现查询,机位预定,退出预定,查询是否有等待信息等功能模块,机位信息一文件存放,功能选择用菜单实现,要求:有20台机器,从早8点到晚8点,每两小时为一个时间段。
二.需求分析
根据题目要求,由于机位信息是存放在文件中,所以应提供文件输入输出等操作;在程序中需要查询机位信息和预定机位,应提供显示,查找等操作,另外还要提供键盘式选择菜单实现功能选择。
三.总体设计
四.详细设计
1. 主函数
主函数一般设计的比较简洁,只提供输入,功能处理和输出部分的函数调用。其中各功能模块用菜但方式选择;另外,菜单部分也可以写成函数。流程图如下:
N
Y
程序:#include<stdio.h>
#include<string.h>
void search();
void place();
void call();
struct cinformation
{
int number;
int condition[6];
}computer[21];
int d[20];
char b[ ]="placed";
void main( )
{int n,w1;
int i,j;
for(i=1;i<=20;i++)
{
computer[i].number=i;
for(j=0;j<6;j++)computer[i].condition[j]=0;
}
while(1)
{
do
{puts("\t\t***************主菜单****************\n\n");
puts("\t\t\t\t 1.机位查询");
puts("\t\t\t\t 2.机位预定");
puts("\t\t\t\t 3.退出预定");
puts("\t\t\t\t 4.退出");
puts("\n\n\t\t************************************\n");
printf("Choice your number(1-4):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>4)
{
w1=1;
getchar();}
else w1=0;
}while(w1==1);
switch(n)
{case 1:search();break;/*查询*/
case 2:place();break;/*机位预定*/
case 3:call();break;/*退出预定*/
case 4:return;/*退出*/
}
}
}
运行结果:
2. 各功能模块设计
(1) 查询
[流程图]
[程序] void search()
{
int i,j;
for(i=1;i<=20;i++)
{ printf("computer %2d: ",i);
for(j=0;j<6;j++)
if(computer[i].condition[j]==0)
printf("time %2d ",j);
printf("\n");}
getchar();getchar();
}
运行结果:
(2) 机位预定模块
[流程图]
[程序] void place()
{int m,n;
printf("选择预约机号:[ ]\b\b");
scanf("%d",&m);
printf("选择预约时间段:[ ]\b\b");
scanf("%d",&n);
if(computer[m].condition[n]==0)
{computer[m].condition[n]=1;
printf("预约成功\n");}
else if(computer[m].condition[n]==1)
printf("已被预约");
return;
}
运行结果:
(3)退出预定模块
[流程图]
[程序] void call()
{char x;int i,j;
printf("输入欲退出预约的机号:[ ]\b\b");
scanf("%d",&i);
printf("输入欲退出预约的时间段:[ ]\b\b");
scanf("%d",&j);
printf("确定退出预约:“是”输入y),“否”输入n):[ ]\b\b");getchar();
scanf("%c",&x);
if(x=='y')
{
computer[i].condition[j]=0;
printf("退出预约成功");
}
if(x=='n')
{
computer[i].condition[j]=computer[i].condition[j];
}
getchar();getchar();
}
运行结果:
五.总结
一周的实习终于结束了,经过一个星期的实践,我才发现原来我的c语言掌握得并不象期末考试成绩反映的那样,通过这一次实习,让我感受到了上课听课的重要性,最典型的就是如果上课不听课,我就不知“b\b”是什么了。不仅如此,这次实习还锻炼了我的毅力,教会了我凡事要亲自动手。记得实习刚开始老师说这几天就编一个程序,乐得我们都以为这次实习只是一种形式,还可以免费上网,当我开始干的时候才发现我们错了,刚拿到题目,我一脸茫然,毫无头绪,于是前两天不是上网就是翻纸牌,心想到时候百度一下就完了,但后来我想想,如果是这样的话来了就没意义了,于是便开始自己试着编。由于知识掌握不够牢固,在编写的过程中发现愈发的无聊,但我还是坚持自己编,不懂的地方问同学,最后实在没思路了,只能求救老师了,最后在老师的帮助下终于完成了。
我想,这次实习一定会给我留下很深的印象,虽然最后没有自己完成,但我依旧可以骄傲的说我没有抄袭,我问心无愧,而且我能在极度无聊的情况下坚持天天来,并自己编,这在一定程度上锻炼了我的毅力,单凭这一点我就可以说我这几天没白来,而且过得很有意义!
第二篇:C语言上机实习报告
一、系统题目
简易教学管理系统的设计与实现
二、摘要
1.准备数据
用记事本创建两个文本文件,分别存放各学生各科成绩及各课程学分。 2.程序功能
程序执行后,生成一个菜单,通过菜单调用各个函数,从而实现所需要的各种功能.这些功能包括:
1.生成班级成绩表;
2.分析各课程成绩,并生成各科成绩分析表; 3.打印学生成绩条; 4.显示不及格学生名单; 5.显示优等生名单。
三、系统设计
1.系统功能模块框图
2.菜单结构图
计算机上机实习报告
3.数据结构说明
本程序定义了两个结构体,分别为student和kecheng。结构体student用来存放各学生的学号、姓名、各课程分数、平均分及名次;结构体kecheng用来存放各门课程编号、课程名称、学分、平均分、标准差及各分数段人数。 4.输入界面
要实现菜单中的各种功能,输入相应数字并按回车即可。
四、系统实现
几个主要函数流程图:
1.求加权平均分函数流程图
1
计算机上机实习报告
2.
2
计算机上机实习报告
3.求各课程标准差流程图
五、系统使用说明
程序执行后,会生成一个菜单,通过输入相应数字,完成各项功能。 操作步骤如下:
输入数字1回车,屏幕上会显示原始文件1;
输入数字2回车,屏幕上会显示原始文件2;
输入数字3回车,清空屏幕;
输入数字4回车,生成班级成绩表,保存路径:F//课程设计//MingC29.txt; 输入数字5回车,生成班级成绩分析表,保存路径:F//课程设计//KC29.txt; 输入数字6回车,打印成绩条,保存路径:F//课程设计//CJYG10708.txt; 输入数字7回车,屏幕显示不及格学生名单;
输入数字8回车,屏幕显示优等生名单,
输入数字0回车,退出程序。
六、测试数据
略
七、结论
略
八、附录
程序源代码:
#define M 20
#define N 5
#include <stdio.h>
3
计算机上机实习报告
#include <stdlib.h>
#include <math.h>
struct student
{
int num;
char name[20];
int score[N];
float ave;
int mingci;
}st[M];
struct kecheng
{
int num;
char kcname[20];
float xuefen;
float aver;
float bzhuncha;
int a;
int b;
int c;
int d;
int e;
}course[N];
void ReadDat1() /*读取并在屏幕上显示文件1*/ {
int i,j;
char str1[100];
FILE *fp;
if((fp=fopen("F:\\课程设计\\YG10708-29.txt","r"))==NULL) {
printf("cannot open the file!\n");
exit(0);
}
fgets(str1,100,fp);
printf("%s",str1);
for(i=0;i<M;i++)
{
fscanf(fp,"%d%s",&st[i].num,st[i].name);
printf("%2d%10s",st[i].num,st[i].name);
for(j=0;j<N;j++)
{
fscanf(fp,"%d",&st[i].score[j]);
printf("%8d",st[i].score[j]);
4
计算机上机实习报告
}
printf("\n");
}
fclose(fp);
}
void ReadDat2() /*读取并在屏幕上显示文件2*/
{
FILE *fp;
int k;
char str2[50];
fp=fopen("F:\\课程设计\\YG10708.txt","r");
fgets(str2,50,fp);
printf("%s",str2);
for(k=0;k<N;k++)
{
fscanf(fp,"%d%s%f",&course[k].num,course[k].kcname,&course[k].xuefen); printf("%-8d%-10s%7.2f\n",course[k].num,course[k].kcname,course[k].xuefen); }
fclose(fp);
}
void Read1() /*读取文件1*/
{
int i,j;
char str1[100];
FILE *fp;
if((fp=fopen("F:\\课程设计\\YG10708-29.txt","r"))==NULL)
{
printf("cannot open the file!\n");
exit(0);
}
fgets(str1,100,fp);
for(i=0;i<M;i++)
{
fscanf(fp,"%d%s",&st[i].num,st[i].name);
for(j=0;j<N;j++)
{
fscanf(fp,"%d",&st[i].score[j]);
}
}
5
计算机上机实习报告
fclose(fp);
}
void Read2() /*读取文件2*/
{
FILE *fp;
int k;
char str2[100];
fp=fopen("F:\\课程设计\\YG10708.txt","r");
fgets(str2,100,fp);
for(k=0;k<N;k++)
{
fscanf(fp,"%d%s%f",&course[k].num,course[k].kcname,&course[k].xuefen); }
fclose(fp);
}
void Jqave() /*求加权平均分*/
{
int i,j;
float s=0,sum;
for(i=0;i<N;i++)
s+=course[i].xuefen;
for(i=0;i<M;i++)
{
sum=0;
for(j=0;j<N;j++)
sum+=st[i].score[j]*course[j].xuefen;
st[i].ave=(int)(sum*10.0/s+0.5)/10.0;
}
}
void sort() /*排名次*/
{
int i,j;
for(i=0;i<M;i++)
{
st[i].mingci=1;
}
for(i=0;i<M;i++)
6
计算机上机实习报告
{
for(j=0;j<M;j++)
{if(st[i].ave<st[j].ave)
st[i].mingci++;}
}
}
void WriteCjd() /*打印成绩单*/
{
FILE *fp;
int i,j;
if((fp=fopen("F:\\课程设计\\MingC29.txt","w"))==NULL)
{
printf("Faile to build a new file!\n");
exit(0);
}
fprintf(fp,"名次 学号 姓名 英语 C语言 数学 制图 体育 平均成绩\n"); for(i=0;i<M;i++)
{
fprintf(fp,"%3d%4d%7s",st[i].mingci,st[i].num,st[i].name);
for(j=0;j<N;j++)
fprintf(fp,"%5d",st[i].score[j]);
fprintf(fp,"%8.2f\n",st[i].ave);
}
fclose(fp);
}
void WriteCjt() /*打印成绩条*/
{
FILE *fp;
int i,j;
if((fp=fopen("F:\\课程设计\\CJYG10707.txt","w"))==NULL)
{
printf("Faile to build a new file!\n");
exit(0);
}
for(i=0;i<M;i++)
{
fprintf(fp,"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
fprintf(fp,"\n名次 学号 姓名 英语 C语言 数学 制图 体育 平均成绩\n"); fprintf(fp,"%3d%4d%7s",st[i].mingci,st[i].num,st[i].name);
for(j=0;j<N;j++)
7
计算机上机实习报告
fprintf(fp,"%5d",st[i].score[j]);
fprintf(fp,"%8.2f\n\n",st[i].ave);
fprintf(fp,"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n"); }
fclose(fp);
}
void Ave() /*求各课程平均分*/
{
int i,j;
float sum;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<M;j++)
sum=sum+st[j].score[i];
course[i].aver=(int)(sum*10.0/M+0.5)/10.0;
}
}
void BZcha() /*求各课程标准差*/
{
int i,j;
float sum,t;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<M;j++)
{t=(st[j].score[i]-course[i].aver)*(st[j].score[i]-course[i].aver);
sum=sum+t;}
course[i].bzhuncha=sqrt(sum/M);
}
}
void Level() /*求各分数段人数*/
{
int i,j;
for(i=0;i<N;i++)
{ course[i].e=0;
course[i].d=0;
course[i].c=0;
8
计算机上机实习报告
course[i].b=0;
course[i].a=0;}
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{if(st[j].score[i]<60) course[i].e++;
else if(st[j].score[i]<70) course[i].d++;
else if(st[j].score[i]<80) course[i].c++;
else if(st[j].score[i]<90) course[i].b++;
else if(st[j].score[i]<100) course[i].a++;}
}
}
void WriteKC() /*生成班级成绩分析表*/
{
FILE *fp;
int i;
if((fp=fopen("F:\\课程设计\\KC29.txt","w"))==NULL)
{
printf("Faile to build a new file!\n");
exit(0);
}
fprintf(fp,"编号 课程名称 课程平均分 标准差 优秀 良好 中等 及格 不及格\n"); for(i=0;i<N;i++)
{fprintf(fp,"%3d%7s%10.2f%10.2f",course[i].num,course[i].kcname,course[i].aver,course[i].bzhuncha);
fprintf(fp,"%5d%5d%5d%5d%5d\n",course[i].a,course[i].b,course[i].c,course[i].d,course[i].e);}
fclose(fp);
}
void fail() /*屏幕显示不及格学生名单*/
{
int i,j;
printf("不及格学生名单:\n");
printf("学号 姓名 不及格课程 课程学分 成绩\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
if(st[j].score[i]<60)
printf("%3d%6s%8s%9.1f%7d\n",st[j].num,st[j].name,course[i].kcname, course[i].xuefen,st[j].score[i]);
9
计算机上机实习报告
}
}
void youxiu() /*屏幕显示优等生名单*/
{
int i,j,f[M];
printf("优等生名单:\n");
printf("名次 学号 姓名 英语 C语言 数学 制图 体育 平均成绩\n"); for(i=0;i<M;i++)
for(j=0;j<N;j++)
{f[i]=st[i].ave>=91||st[i].mingci<=4||st[i].ave>=85&&st[i].score[j]>=99; if(f[i]) break;}
for(i=0;i<M;i++)
{
if(f[i])
{printf("%2d%6d%6s",st[i].mingci,st[i].num,st[i].name);
for(j=0;j<N;j++)
printf("%5d",st[i].score[j]);
printf("%8.1f\n",st[i].ave);}
}
}
void menu() /*屏幕显示菜单*/
{
int c;
do
{
do
{
printf("\n\n ^_^ ^_^ ^_^简易教学管理系统^_^ ^_^ ^_^ \n"); printf(" @ 1.读取文件1 @\n"); printf(" @ 2.读取文件2 @\n"); printf(" @ 3.清空屏幕 @\n"); printf(" @ 4.生成班级成绩表 @\n"); printf(" @ 5.生成各课程成绩分析表 @\n"); printf(" @ 6.打印学生成绩条 @\n"); printf(" @ 7.不及格学生名单 @\n"); printf(" @ 8.优等生名单 @\n"); printf(" @ 0.退出系统 @\n"); printf(" ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ \n"); printf("\n请输入相应数字:");
10
计算机上机实习报告
scanf("%d",&c);
printf("\n");
if(c==0) system("cls"); printf("王俊致力于为您做最好的系统!\n欢迎再次使用! ^_~\n\n\n");
} while(c<0||c>8);
switch(c)
{
case 1:printf("文件1:\n");ReadDat1();break;
case 2:printf("文件2:\n");ReadDat2();break;
case 3:system("cls");printf("已完成!\n\n!");break;
case 4:WriteCjd();printf("已完成!\n\n");break;
case 5:WriteKC();printf("已完成!\n\n");break;
case 6:WriteCjt();printf("已完成!\n\n!");break;
case 7:fail();break;
case 8:youxiu();break;
}
} while (c);
}
void main()
{
Read1();
Read2();
Jqave();
sort();
Ave();
BZcha();
Level();
menu();
}
11