计算机技能训练报告

西安科技大学

计算机技能训练报告

学院 学号 姓名 班级 日期

一、设计目的和任务 (1)设计目的

1. 更深入的理解和掌握该课程中的基本概念,程序设计的思想、技术和方法。 2. 训练学生综合运用所学知识独立完成课题以及撰写课程设计报告的能力。 3. 提高查询资料文献,从中获得新知识的能力。

4. 培养 实践动手能力,利用理论去解决实际问题的能力。

(2)设计任务

1本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M 门课程名称。 2本系统显示这样的菜单: 请选择系统功能项: a、成绩录入 b、成绩显示 c、成绩保存 d、成绩排序

e、成绩修改(要求先输入密码) f、成绩统计

1)显示每门课程成绩最高的学生的基本信息 2)显示每门课程的平均成绩

3)显示超过某门课程平均成绩的学生人数 g、退出系统

3执行一个具体的功能之后,程序将重新显示菜单。 4 将学生成绩保存到文件中。

二、总体设计

此程序根据不同的功能设计几个模块,写成相应的函数,然后利用函数的调用来实现。 模块(1):编辑 由老师从键盘输入成绩并存于文件中 模块(2):显示 从文件中删除已存的学生信息 模块(4):查询 可通过三种不同的方式查询成绩 模块(5):统计 对已输入的成绩进行排序 模块(6):文件 从文件中导出已输入的数据

三、详细设计

1)结构体数组:存储学生个人信息 typedef struct {

char num[10]; char name[10]; int chinese; int math; int english; int dianlu; double aver; }Student;

Student stu[99];

(2)int shuliang (统计录入的总人数)rs (统计录入的人数),i,k (循环变量)xx(学号) choice (需要删除的学生的学号)

(3)数组: biaozhi[20](记录用的选择) yy[20](记录学生的姓名)shanchuinfo[10](判定是否删除学生的全部信息还是部分信息)

(4)int shuru(Student stud[],int n)/*输入若干条记录*/ { int i=0; char sign,x[10]; double a=0.0;

while(sign!='n'&&sign!='N') {

printf("输入学生学号:"); scanf("%s",stu[n+i].num); printf("输入学生姓名:");

scanf("%s",stu[n+i].name); printf("输入学生的语文、数学、英语、电路分数:");

scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu); a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4; stu[n+i].aver=a;

gets(x); /*清除多余的输入*/ printf("是否继续输入?(Y/N):\n"); scanf("%c",&sign); i++; }

return(n+i); }

四.调试

在调试程序的过程中出过一些错误,有事吧中英文标点符号弄混了,导致出现错误却很难找出,只得全部替换。当有其他问题是找同学帮自己改。通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。当系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf 函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。

五、源程序清单和执行结果

#include"stdio.h" #include #include #include"process.h" #include"ctype.h" typedef struct {

char num[10]; char name[10]; int chinese; int math; int english; int dianlu; double aver; }Student;

Student stu[99];

int shuru(Student stud[],int n)/*输入若干条记录*/ {

int i=0;

char sign,x[10]; double a=0.0;

while(sign!='n'&&sign!='N') {

printf("输入学生学号:"); scanf("%s",stu[n+i].num); printf("输入学生姓名:");

scanf("%s",stu[n+i].name); printf("输入学生的语文、数学、英语、电路分数:");

scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu);

a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4; stu[n+i].aver=a;

gets(x); /*清除多余的输入*/ printf("是否继续输入?(Y/N):\n"); scanf("%c",&sign); i++; }

return(n+i); }

void xianshi(Student stud[],int n) /*显示所有记录*/ {

int i ;

printf("----------------------------------------------------------\n"); /*格式头*/

printf("学号 姓名 语文 数学 英语 电路 平均成绩 \n");

printf("----------------------------------------------------------\n"); for(i=0;i

printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i]

.chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); } }

void xiugai(Student stud[],int n)/*修改*/ {

int i=0,choice=1; char x[10];

while(choice!=0)

{ printf("请输入您要修改的学生的学号:\n"); scanf("%s",x); for(i=0;;i++) {

if(strcmp(stu[i].num,x)==0) break; }

printf("请选择您要修改的内容:\n"); printf(" ---------------------- \n"); printf("| 姓名 请按 1 |\n"); printf("| 语文 请按 2 |\n"); printf("| 数学分数 请按 3 |\n"); printf("| 英语分数 请按 4 |\n"); printf("| 电路 请按 5 |\n"); printf("| 退出 请按 0|\n"); printf("+----------------------+\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch(choice)

{ case 0:break; case 1:

printf("请输入新姓名:"); scanf("%s", stu[i].name); break;

case 2: printf("请输入新的语文分数:"); scanf("%d", &stu[i].chinese); break; case 3:

printf("请输入新的数学分数:"); scanf("%d",&stu[i].math); break; case 4:

printf("请输入新的英语分数:"); scanf("%d", &stu[i].english); break; case 5:

printf("请输入新的电路分数:"); scanf("%d", &stu[i].dianlu); break; default:

printf("\n无效选项!"); break; } break; }

return;

} int shanchu(Student stud[],int n) /*按姓名查找,删除一条记录*/ { char s[20]; int i; int j; i=0;

printf("输入要删除记录的姓名:"); scanf("%s",s);

while(strcmp(stu[i].name,s)!=0&&i

{printf("not find!\n");

return(n); } for(j=i;j

strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j].name,stu[j+1].name); stu[j].chinese=stu[j+1].chinese; stu[j].math=stu[j+1].math;

stu[j].english=stu[j+1].english; stu[j].dianlu=stu[j+1].dianlu; stu[j].aver=stu[j+1].aver; }

printf("Delete Successed!\n"); return(n-1); }

void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个记录*/ { char s[20]; int i=0;

printf("输入姓名:"); scanf("%s",s);

while(strcmp(stu[i].name,s)!=0&&i

{printf("not find!\n"); /*输入失败信息*/ return; }

printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/ printf("语文 高数 英语 电路 平均成绩是:%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); }

void chaxun_pingjun(Student stud[],int n) /*按平均成绩查找并显示一个记录*/ { double s; int i=0;

printf("输入平均成绩:"); scanf("%lf",&s);

while(stu[i].aver!=s && i

{ printf("not find!\n"); /*输入失败信息*/

return; }

printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/ printf("他的姓名是:%s\n",stu[i].name);

printf("他的语文、数学、英语、电路分数是:%d %d \n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu); }

void paixu_xuehao(Student stud[],int n) /*按学号排序*/ { int i,j,p,q,r,w; double y;

char x[20],t[10];

for(i=0;i

if(strcmp(stud[j].num,stud[j+1].num)>0) { strcpy(t,stud[j].num);

strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j+1].num,t); strcpy(x,stud[j].name);

strcpy(stud[j].name,stud[j+1].name); strcpy(stud[j+1].name,x);

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; }

return; }

void paixu_pingjun(Student stud[],int n) /*按平均成绩排序*/ { int i,j,p,q,r,w; double y;

char x[20],t[10];

for(i=0;i

%d %d

for(j=0;j

if(stu[j].aver>stu[j+1].aver)

{ y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); }

return; }

void paixu_chinese(Student stud[],int n) /*按语文成绩排序*/ { int i,j,p,q,r,w; double y;

char x[20],t[10];

for(i=0;i

if(stu[j].chinese>stu[j+1].chinese)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); }

return;

}

void paixu_english(Student stud[],int n) /*按英语成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i

for(j=0;j

if(stu[j].english>stu[j+1].english)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_math(Student stud[],int n) /*按数学成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i

for(j=0;j

if(stu[j].math>stu[j+1].math)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;

q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_dianlu(Student stud[],int n) /*按电路成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i

for(j=0;j

if(stu[j].dianlu>stu[j+1].dianlu)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void tongji(Student stud[],int n)//按分数段统计人数

{ int i,j,a,max,min,k,l,q,p,w;

k=0,l=0,p=0,q=0,w=0;

printf("你想统计哪科成绩: 1语文 2数学 3英语 4电路 5平均 \n"); scanf("%d",&j);

printf("input 2 score:\n");

scanf("%d%d",&max,&min);

if(max

{

a=max;max=min;min=a;

}

if(j==1)

{

for(i=0;i

{

if(stu[i].chinese>min&&stu[i].chinese

}

printf("分数段的人数为 :%d",k);

}

else if(j==2)

{

for(i=0;i

{

if(stu[i].math>min&&stu[i].math

}

printf("分数段的人数为 :%d",l);

}

else if(j==3)

{

for(i=0;i

{

if(stu[i].english>min&&stu[i].english

}

printf("分数段的人数为 :%d",p);

}

else if(j==4)

{

for(i=0;i

{

if(stu[i].dianlu>min&&stu[i].dianlu

w++;

}

printf("分数段的人数为 :%d",w);

}

else if(j==5)

{

for(i=0;i

{

if(stu[i].aver>min&&stu[i].aver

}

printf("分数段的人数为 :%d",q);

}

return;

}

int wenjian2(Student stud[],int n) /*从文件中读入数据*/

{ int i=0,num;

FILE *fp; /*定义文件指针*/

char filename[20]; /*定义文件名*/

printf("\t\t\tInput the filename:");

scanf("\t\t\t%s",filename); /*输入文件名*/

if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/

{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/

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

system("pause");

return(n);

}

fscanf(fp,"%d",&num); /*读入总记录量*/

while(i

{

fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver);

i++;

}

n+=num;

fclose(fp); /*关闭文件*/

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

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

system("pause");

return(n);

}

void wenjian1(Student stud[],int n) /*将所有记录写入文件*/ {

int i=0;

FILE *fp; /*定义文件指针*/

char filename[20]; /*定义文件名*/

printf("Input the filename:");/*输入文件名*/

scanf("%s",filename);

if((fp=fopen(filename,"w"))==NULL) /*打开文件*/

{

printf("cann't open the file\n");

return;

}

fprintf(fp,"%d\n",n); /*循环写入数据*/

while(i

{

fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver);

i++;

}

fclose(fp); /*关闭文件*/

printf("Successed!\n"); /*返回成功信息*/

}

int menu() /*菜单函数*/

{

int c;

do{

printf("\t\t****学生信息管理系统菜单****\n");

printf("\t\t 1. 编辑 \n");

printf("\t\t 2. 显示 \n");

printf("\t\t 3. 查询 \n");

printf("\t\t 4. 排序\n");

printf("\t\t 5. 统计\n");

printf("\t\t 6. 文件 \n");

printf("\t\t 0. 退出 \n");

printf("************************************************************\n"); printf("\t\t\t请选择(0-6):");

scanf("%d",&c);

}while(c6);

return(c-0); /*返回选择*/

}

int bianji()

{

printf("\t\t 1. 录入\n");

printf("\t\t 2 .修改\n");

printf("\t\t 3. 删除 \n");

printf("\t\t 按其它数字键退出 \n");

int i;

scanf("%d",&i);

return i;

}

int chaxun()

{

printf("\t\t 1. 按姓名查询\n");

printf("\t\t 2 .按平均成绩查询\n");

printf("\t\t 按其它数字键退出\n");

int i;

scanf("%d",&i);

return i;

}

int paixu()

{

printf("\t\t 1. 按学号\n");

printf("\t\t 2 .按语文成绩\n");

printf("\t\t 3 .按数学成绩\n");

printf("\t\t 4 .按英语成绩\n");

printf("\t\t 5 .按电路成绩\n");

printf("\t\t 6 .按平均成绩\n");

printf("\t\t按其它数字键退出\n");

int i;

scanf("%d",&i);

return i;

}

int wenjian()

{

printf("\t\t 1. 从文件中读入数据\n");

printf("\t\t 2 .将所有记录写入文件\n");

printf("\t\t 按其它数字键退出 \n");

int i;

scanf("%d",&i);

return i;

}

void main() /*主函数*/

{

int n=0;

for(;;)

{

for(;;)

{

switch(menu())

{

case 1: switch(bianji())

{

case 1:n=shuru(stu,n);xianshi(stu,n); break;

case 2:xiugai(stu ,n);xianshi(stu,n); break;

case 3:shanchu(stu ,n);xianshi(stu,n); break;

} break;

case 2:xianshi(stu,n);break;

case 3:

switch(chaxun())

{

case 1:chaxun_xingming(stu,n);break;

case 2:chaxun_pingjun(stu ,n);break;

} break;

case 4: switch(paixu())

{

case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_chinese(stu ,n);xianshi(stu,n);break; case 3:paixu_math(stu ,n);xianshi(stu,n); break;

case 4:paixu_english(stu ,n);xianshi(stu,n); break; case 5:paixu_dianlu(stu ,n);xianshi(stu,n); break; case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break; } break;

case 5:tongji(stu,n);break;

case 6:

switch(wenjian())

{

case 1:n=wenjian2(stu,n);break;

case 2:wenjian1(stu ,n);break;

} break;

case 0:

exit(0); /*结束程序*/ }

}

}

}

六、总结

通过这一周的计算机能力训练,我了解到训练计算机能力是从一个有待解决的问题着手,设计一个可行的方案,方便我们更好更快的解决一些繁琐的问题。计算机是一门紧紧与计算机技术联系的课程,是除计算机专业以外其他许多专业学习掌握计算机技术的一种重要语言。科学技术与人类社会日益进步,计算机与技术已渗透到各行各业,其中C 语言就是其中应用面最广的语言之一。C 语言简洁. 高效. 紧凑. 灵活. 实用,其课程设计注重思维方式的培养,在大量阅读程序之后,了解各种函数变量. 指针等的用法,把自己的思想用C 语言表述出来,解决实际问题。学习C 语言同时也锻炼了我们动手能力,扩大了我们的阅读量,使我们有了除课本之外不小的收获。这两周的计算机能力训练虽然没有多少课时,却锻炼了我们的能力,教会我们去寻找解决问题办法,对我们的学习生活具有重要意义。

西安科技大学

计算机技能训练报告

学院 学号 姓名 班级 日期

一、设计目的和任务 (1)设计目的

1. 更深入的理解和掌握该课程中的基本概念,程序设计的思想、技术和方法。 2. 训练学生综合运用所学知识独立完成课题以及撰写课程设计报告的能力。 3. 提高查询资料文献,从中获得新知识的能力。

4. 培养 实践动手能力,利用理论去解决实际问题的能力。

(2)设计任务

1本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M 门课程名称。 2本系统显示这样的菜单: 请选择系统功能项: a、成绩录入 b、成绩显示 c、成绩保存 d、成绩排序

e、成绩修改(要求先输入密码) f、成绩统计

1)显示每门课程成绩最高的学生的基本信息 2)显示每门课程的平均成绩

3)显示超过某门课程平均成绩的学生人数 g、退出系统

3执行一个具体的功能之后,程序将重新显示菜单。 4 将学生成绩保存到文件中。

二、总体设计

此程序根据不同的功能设计几个模块,写成相应的函数,然后利用函数的调用来实现。 模块(1):编辑 由老师从键盘输入成绩并存于文件中 模块(2):显示 从文件中删除已存的学生信息 模块(4):查询 可通过三种不同的方式查询成绩 模块(5):统计 对已输入的成绩进行排序 模块(6):文件 从文件中导出已输入的数据

三、详细设计

1)结构体数组:存储学生个人信息 typedef struct {

char num[10]; char name[10]; int chinese; int math; int english; int dianlu; double aver; }Student;

Student stu[99];

(2)int shuliang (统计录入的总人数)rs (统计录入的人数),i,k (循环变量)xx(学号) choice (需要删除的学生的学号)

(3)数组: biaozhi[20](记录用的选择) yy[20](记录学生的姓名)shanchuinfo[10](判定是否删除学生的全部信息还是部分信息)

(4)int shuru(Student stud[],int n)/*输入若干条记录*/ { int i=0; char sign,x[10]; double a=0.0;

while(sign!='n'&&sign!='N') {

printf("输入学生学号:"); scanf("%s",stu[n+i].num); printf("输入学生姓名:");

scanf("%s",stu[n+i].name); printf("输入学生的语文、数学、英语、电路分数:");

scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu); a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4; stu[n+i].aver=a;

gets(x); /*清除多余的输入*/ printf("是否继续输入?(Y/N):\n"); scanf("%c",&sign); i++; }

return(n+i); }

四.调试

在调试程序的过程中出过一些错误,有事吧中英文标点符号弄混了,导致出现错误却很难找出,只得全部替换。当有其他问题是找同学帮自己改。通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。当系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf 函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。

五、源程序清单和执行结果

#include"stdio.h" #include #include #include"process.h" #include"ctype.h" typedef struct {

char num[10]; char name[10]; int chinese; int math; int english; int dianlu; double aver; }Student;

Student stu[99];

int shuru(Student stud[],int n)/*输入若干条记录*/ {

int i=0;

char sign,x[10]; double a=0.0;

while(sign!='n'&&sign!='N') {

printf("输入学生学号:"); scanf("%s",stu[n+i].num); printf("输入学生姓名:");

scanf("%s",stu[n+i].name); printf("输入学生的语文、数学、英语、电路分数:");

scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu);

a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4; stu[n+i].aver=a;

gets(x); /*清除多余的输入*/ printf("是否继续输入?(Y/N):\n"); scanf("%c",&sign); i++; }

return(n+i); }

void xianshi(Student stud[],int n) /*显示所有记录*/ {

int i ;

printf("----------------------------------------------------------\n"); /*格式头*/

printf("学号 姓名 语文 数学 英语 电路 平均成绩 \n");

printf("----------------------------------------------------------\n"); for(i=0;i

printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i]

.chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); } }

void xiugai(Student stud[],int n)/*修改*/ {

int i=0,choice=1; char x[10];

while(choice!=0)

{ printf("请输入您要修改的学生的学号:\n"); scanf("%s",x); for(i=0;;i++) {

if(strcmp(stu[i].num,x)==0) break; }

printf("请选择您要修改的内容:\n"); printf(" ---------------------- \n"); printf("| 姓名 请按 1 |\n"); printf("| 语文 请按 2 |\n"); printf("| 数学分数 请按 3 |\n"); printf("| 英语分数 请按 4 |\n"); printf("| 电路 请按 5 |\n"); printf("| 退出 请按 0|\n"); printf("+----------------------+\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch(choice)

{ case 0:break; case 1:

printf("请输入新姓名:"); scanf("%s", stu[i].name); break;

case 2: printf("请输入新的语文分数:"); scanf("%d", &stu[i].chinese); break; case 3:

printf("请输入新的数学分数:"); scanf("%d",&stu[i].math); break; case 4:

printf("请输入新的英语分数:"); scanf("%d", &stu[i].english); break; case 5:

printf("请输入新的电路分数:"); scanf("%d", &stu[i].dianlu); break; default:

printf("\n无效选项!"); break; } break; }

return;

} int shanchu(Student stud[],int n) /*按姓名查找,删除一条记录*/ { char s[20]; int i; int j; i=0;

printf("输入要删除记录的姓名:"); scanf("%s",s);

while(strcmp(stu[i].name,s)!=0&&i

{printf("not find!\n");

return(n); } for(j=i;j

strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j].name,stu[j+1].name); stu[j].chinese=stu[j+1].chinese; stu[j].math=stu[j+1].math;

stu[j].english=stu[j+1].english; stu[j].dianlu=stu[j+1].dianlu; stu[j].aver=stu[j+1].aver; }

printf("Delete Successed!\n"); return(n-1); }

void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个记录*/ { char s[20]; int i=0;

printf("输入姓名:"); scanf("%s",s);

while(strcmp(stu[i].name,s)!=0&&i

{printf("not find!\n"); /*输入失败信息*/ return; }

printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/ printf("语文 高数 英语 电路 平均成绩是:%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); }

void chaxun_pingjun(Student stud[],int n) /*按平均成绩查找并显示一个记录*/ { double s; int i=0;

printf("输入平均成绩:"); scanf("%lf",&s);

while(stu[i].aver!=s && i

{ printf("not find!\n"); /*输入失败信息*/

return; }

printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/ printf("他的姓名是:%s\n",stu[i].name);

printf("他的语文、数学、英语、电路分数是:%d %d \n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu); }

void paixu_xuehao(Student stud[],int n) /*按学号排序*/ { int i,j,p,q,r,w; double y;

char x[20],t[10];

for(i=0;i

if(strcmp(stud[j].num,stud[j+1].num)>0) { strcpy(t,stud[j].num);

strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j+1].num,t); strcpy(x,stud[j].name);

strcpy(stud[j].name,stud[j+1].name); strcpy(stud[j+1].name,x);

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; }

return; }

void paixu_pingjun(Student stud[],int n) /*按平均成绩排序*/ { int i,j,p,q,r,w; double y;

char x[20],t[10];

for(i=0;i

%d %d

for(j=0;j

if(stu[j].aver>stu[j+1].aver)

{ y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); }

return; }

void paixu_chinese(Student stud[],int n) /*按语文成绩排序*/ { int i,j,p,q,r,w; double y;

char x[20],t[10];

for(i=0;i

if(stu[j].chinese>stu[j+1].chinese)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); }

return;

}

void paixu_english(Student stud[],int n) /*按英语成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i

for(j=0;j

if(stu[j].english>stu[j+1].english)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_math(Student stud[],int n) /*按数学成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i

for(j=0;j

if(stu[j].math>stu[j+1].math)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;

q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_dianlu(Student stud[],int n) /*按电路成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i

for(j=0;j

if(stu[j].dianlu>stu[j+1].dianlu)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void tongji(Student stud[],int n)//按分数段统计人数

{ int i,j,a,max,min,k,l,q,p,w;

k=0,l=0,p=0,q=0,w=0;

printf("你想统计哪科成绩: 1语文 2数学 3英语 4电路 5平均 \n"); scanf("%d",&j);

printf("input 2 score:\n");

scanf("%d%d",&max,&min);

if(max

{

a=max;max=min;min=a;

}

if(j==1)

{

for(i=0;i

{

if(stu[i].chinese>min&&stu[i].chinese

}

printf("分数段的人数为 :%d",k);

}

else if(j==2)

{

for(i=0;i

{

if(stu[i].math>min&&stu[i].math

}

printf("分数段的人数为 :%d",l);

}

else if(j==3)

{

for(i=0;i

{

if(stu[i].english>min&&stu[i].english

}

printf("分数段的人数为 :%d",p);

}

else if(j==4)

{

for(i=0;i

{

if(stu[i].dianlu>min&&stu[i].dianlu

w++;

}

printf("分数段的人数为 :%d",w);

}

else if(j==5)

{

for(i=0;i

{

if(stu[i].aver>min&&stu[i].aver

}

printf("分数段的人数为 :%d",q);

}

return;

}

int wenjian2(Student stud[],int n) /*从文件中读入数据*/

{ int i=0,num;

FILE *fp; /*定义文件指针*/

char filename[20]; /*定义文件名*/

printf("\t\t\tInput the filename:");

scanf("\t\t\t%s",filename); /*输入文件名*/

if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/

{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/

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

system("pause");

return(n);

}

fscanf(fp,"%d",&num); /*读入总记录量*/

while(i

{

fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver);

i++;

}

n+=num;

fclose(fp); /*关闭文件*/

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

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

system("pause");

return(n);

}

void wenjian1(Student stud[],int n) /*将所有记录写入文件*/ {

int i=0;

FILE *fp; /*定义文件指针*/

char filename[20]; /*定义文件名*/

printf("Input the filename:");/*输入文件名*/

scanf("%s",filename);

if((fp=fopen(filename,"w"))==NULL) /*打开文件*/

{

printf("cann't open the file\n");

return;

}

fprintf(fp,"%d\n",n); /*循环写入数据*/

while(i

{

fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver);

i++;

}

fclose(fp); /*关闭文件*/

printf("Successed!\n"); /*返回成功信息*/

}

int menu() /*菜单函数*/

{

int c;

do{

printf("\t\t****学生信息管理系统菜单****\n");

printf("\t\t 1. 编辑 \n");

printf("\t\t 2. 显示 \n");

printf("\t\t 3. 查询 \n");

printf("\t\t 4. 排序\n");

printf("\t\t 5. 统计\n");

printf("\t\t 6. 文件 \n");

printf("\t\t 0. 退出 \n");

printf("************************************************************\n"); printf("\t\t\t请选择(0-6):");

scanf("%d",&c);

}while(c6);

return(c-0); /*返回选择*/

}

int bianji()

{

printf("\t\t 1. 录入\n");

printf("\t\t 2 .修改\n");

printf("\t\t 3. 删除 \n");

printf("\t\t 按其它数字键退出 \n");

int i;

scanf("%d",&i);

return i;

}

int chaxun()

{

printf("\t\t 1. 按姓名查询\n");

printf("\t\t 2 .按平均成绩查询\n");

printf("\t\t 按其它数字键退出\n");

int i;

scanf("%d",&i);

return i;

}

int paixu()

{

printf("\t\t 1. 按学号\n");

printf("\t\t 2 .按语文成绩\n");

printf("\t\t 3 .按数学成绩\n");

printf("\t\t 4 .按英语成绩\n");

printf("\t\t 5 .按电路成绩\n");

printf("\t\t 6 .按平均成绩\n");

printf("\t\t按其它数字键退出\n");

int i;

scanf("%d",&i);

return i;

}

int wenjian()

{

printf("\t\t 1. 从文件中读入数据\n");

printf("\t\t 2 .将所有记录写入文件\n");

printf("\t\t 按其它数字键退出 \n");

int i;

scanf("%d",&i);

return i;

}

void main() /*主函数*/

{

int n=0;

for(;;)

{

for(;;)

{

switch(menu())

{

case 1: switch(bianji())

{

case 1:n=shuru(stu,n);xianshi(stu,n); break;

case 2:xiugai(stu ,n);xianshi(stu,n); break;

case 3:shanchu(stu ,n);xianshi(stu,n); break;

} break;

case 2:xianshi(stu,n);break;

case 3:

switch(chaxun())

{

case 1:chaxun_xingming(stu,n);break;

case 2:chaxun_pingjun(stu ,n);break;

} break;

case 4: switch(paixu())

{

case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_chinese(stu ,n);xianshi(stu,n);break; case 3:paixu_math(stu ,n);xianshi(stu,n); break;

case 4:paixu_english(stu ,n);xianshi(stu,n); break; case 5:paixu_dianlu(stu ,n);xianshi(stu,n); break; case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break; } break;

case 5:tongji(stu,n);break;

case 6:

switch(wenjian())

{

case 1:n=wenjian2(stu,n);break;

case 2:wenjian1(stu ,n);break;

} break;

case 0:

exit(0); /*结束程序*/ }

}

}

}

六、总结

通过这一周的计算机能力训练,我了解到训练计算机能力是从一个有待解决的问题着手,设计一个可行的方案,方便我们更好更快的解决一些繁琐的问题。计算机是一门紧紧与计算机技术联系的课程,是除计算机专业以外其他许多专业学习掌握计算机技术的一种重要语言。科学技术与人类社会日益进步,计算机与技术已渗透到各行各业,其中C 语言就是其中应用面最广的语言之一。C 语言简洁. 高效. 紧凑. 灵活. 实用,其课程设计注重思维方式的培养,在大量阅读程序之后,了解各种函数变量. 指针等的用法,把自己的思想用C 语言表述出来,解决实际问题。学习C 语言同时也锻炼了我们动手能力,扩大了我们的阅读量,使我们有了除课本之外不小的收获。这两周的计算机能力训练虽然没有多少课时,却锻炼了我们的能力,教会我们去寻找解决问题办法,对我们的学习生活具有重要意义。


相关文章

  • 计算机基本技能训练报告模板(1)
  • 西安科技大学 计算机基本技能训练报告 学院: 班级: 学号: 姓名: 日期: 一.实训名称:计算机基本技能训练 二.实训的目的与任务 本教学大纲根据计算机专业计算机培养目标提出的三个层次的教学课程体系而制定.主要让学生利用课余时间完成计算机 ...查看


  • 财务管理综合实训报告
  • 财务管理综合实训报告 学 院 管 理 学 院 专业班级07级财务管理(6)班 学 号 学生姓名___范 彩 芳__________ 指导教师 许梅英 张军波 李泽平 实训地点 实验室D503 D3O3 2009年12月 1 目录 一 前言- ...查看


  • 计算机软硬件及网络维护技能训练报告要求
  • 计算机软硬件及网络维护技能训练报告要求 1.描述计算机的硬件组成,要求列举计算机的主要组成部分,并对各组成部分功能及作用进行解释,必要的地方插入图片,给出训练中所用计算机的硬件配置信息. 2.查阅资料,解释CMOS与BIOS,并对相关内容进 ...查看


  • 项目可行性报告范文
  • 项目可行性报告 一.基本情况 1. 项目申请单位基本情况: 单位名称:大连大学 单位地址:大连市经济技术开发区 单位邮编:116622 法人代表姓名:由业诚 学科门类:教育.文.法.史.理.工.医.管理.经济学.哲学等十大学科门类 财务收支 ...查看


  • 14年综合技能训练安排及要求
  • 综合技能训练实验(实习)计划书 一.实验(实习)目的.主要任务及要求 本实验环节主要目的在于培养电子科学与技术专业的学生掌握集成电路设计的综合技能.通过对集成电路设计工具的使用和完成相关集成电路的设计流程,从而达到培养学生专业综合技能训练的 ...查看


  • 南京审计大学[审计学专业]人才培养方案(2015版)
  • 审计学专业人才培养方案 审计学专业创办于1987年,是南京审计学院最早创办的专业之一, 1993年开始招收审计学专业本科学生, 2012年招收审计专业硕士.审计学专业自创办以来,依托审计行业背景,在国家审计署的指导下,伴随我国审计事业不断发 ...查看


  • 人力资源盘点的步骤
  • 人力资源盘点的步骤 (一)成立人力资源盘点工作小组 人力资源盘点工作小组由总经理和各部门主管.人力资源规划专职人员组成,总经理担任组长,人力资源部经理任执行副组长.在进行人力资源盘点工作之前,通过对全体员工作充分的动员,说明人力资源盘点工作 ...查看


  • 二年级数学小课题申报
  • 提高低年级学生计算正确率的研究 提高低年级学生笔算正确率的研究开题报告 武关小学课题组 杨 涛 一.课题的提出 1.数学计算能力的重要性 (1)计算是数学知识中的重要内容之一,数学计算能力是一项基本的数学能力,计算能力是学习数学和其他学科的 ...查看


  • 热处理实训教师指导手册
  • <热处理实训实训>教师指导手册 < 热处理实训>教师指导手册 1.实训项目概况 1.适用专业:材料成型技术 焊接专技术 热处理专业. 2.实训安排: 2周, 60学时 表1--实训安排 2.实训教学目标 (1)能力培 ...查看


  • 实习报告与实习鉴定表 1
  • 实 习 学 院专 班 姓 学 实 习 实 习 报 告(主要内容以炼化相关企业为例,各学生根据 实际情况作调整) 名 称: 化学工程学院 业: 化学工程与工艺 级: 111 名: ××× 号: [1**********] 单 位: ××××× ...查看


热门内容