实验项目指导书.docx

上传人:b****6 文档编号:7750848 上传时间:2023-01-26 格式:DOCX 页数:19 大小:110.37KB
下载 相关 举报
实验项目指导书.docx_第1页
第1页 / 共19页
实验项目指导书.docx_第2页
第2页 / 共19页
实验项目指导书.docx_第3页
第3页 / 共19页
实验项目指导书.docx_第4页
第4页 / 共19页
实验项目指导书.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

实验项目指导书.docx

《实验项目指导书.docx》由会员分享,可在线阅读,更多相关《实验项目指导书.docx(19页珍藏版)》请在冰豆网上搜索。

实验项目指导书.docx

实验项目指导书

实验项目指导书

 

实验项目名称:

学生成绩管理系统

实验类型:

综合型

所属课程:

计算机程序设计基础(C)

所属实验室:

计算机基础实验中心

适用专业:

机电学院、理学院各专业

 

刘明才

2010年6月1日

目录

实验项目指导书1

1.实验目的3

2.实验准备3

3.实验内容3

4.实验步骤3

4.1分析问题3

4.2编写主函数4

4.3编写输入记录函数7

4.4编写显示记录函数9

4.5编写排序函数10

4.6编写统计数据函数11

4.7编写向文件中写记录函数13

4.8编写从文件中读记录函数14

5.功能扩充15

6.撰写实验报告16

1.实验目的

(1)通过实验了解较大程序的设计方法。

(2)掌握结构化程序设计方法。

2.实验准备

(1)预习第9章结构体类型的定义和结构体变量的定义与引用。

(2)预习第10章文件指针变量的定义以及与文件操作有关的函数

(2)了解实验内容。

3.实验内容

编写一个综合的学生成绩管理程序。

学生信息包括:

学号、姓名、成绩。

一个学生的信息称为一个记录,程序要求实现以下功能:

(1)输入记录

(2)显示记录

(3)按学号排序记录

(4)输出统计信息:

总记录数、最高分、最低分及平均分

(5)从文件读取记录

(6)将记录写入文件

4.实验步骤

4.1分析问题

从题目要求可知,每个学生的记录包括下面3个属性:

学号、姓名和成绩。

每个属性需要用不同的数据类型表示,学号可以用整数表示,也可以用字符串表示,本题用字符串表示,姓名必须用字符串表示,成绩可用整数表示。

所以每个学生的记录可用一个结构体表示:

structstudent

{charnum[10];

charname[20];

intscore;

}

所有学生的记录用一个结构体数组表示。

从题目所要求的功能看,可编写六个函数分别完成相应的功能,如图1所示:

 

 

图1

根据以上分析,程序设计步骤如下:

(1)编写主函数,由主函数调用其它函数。

(2)编写输入记录的函数。

(3)编写显示记录的函数。

(4)编写记录排序的函数。

(5)编写统计数据函数。

(6)编写从文件读取记录函数。

(7)编写将记录写入文件函数。

4.2编写主函数

1.编写主函数main

为了使程序即能在TC2.0环境运行,又能在VC++6.0环境下运行,提示信息用英文表示。

主函数运行时,首先在屏幕上显示如下提示(菜单):

*****************************************

Students'scoremanagementsystem

1.Inputrecords

2.Displayallrecords

3.Sortbynumber

4.Statistic

5.ReadfromaTextFile

6.WritetoaTextfile

0.Exit

*****************************************

Inputyourchoice(0-9):

程序根据用户输入的选择(0—9)调用相应的函数。

程序如下:

#include

#include

#include

/*定义结构体类型STU*/

typedefstruct

{charnum[10];/*学号*/

charname[20];/*姓名*/

intscore;/*成绩*/

}STU;

STUstu[80];/*定义结构体数组*/

/*输入记录函数Input*/

/*显示记录函数Display*/

/*记录排序函数Sort_by_num*/

/*统计数据函数Statistic*/

/*从文件读记录函数Read_from_file*/

/*向文件写记录函数Write_to_file*/

voidmain()/*主函数*/

{intn=0;/*存放记录个数*/

charc;/*存放用户选择的数字字符*/

for(;;)

{do{

system("cls");/*清屏幕函数*/

printf("*****************************************\n");

printf("Students'scoremanagementsystem\n");

printf("1.Inputrecords\n");

printf("2.Displayallrecords\n");

printf("3.Sortbynumber\n");

printf("4.Statistic\n");

printf("5.ReadfromaTextFile\n");

printf("6.WritetoaTextfile\n");

printf("0.Exit\n");

printf("*****************************************\n");

printf("Inputyourchoice(0-9):

");

c=getchar();

}while(c<'0'||c>'9');/*若输入的不是数字字符,则重新输入*/

switch(c)

{case'1':

printf("InputRecords\n");/*输入若干条记录*/

/*调用输入记录函数*/

system("pause");

break;

case'2':

printf("DisplayAllRecords\n");/*显示所有记录*/

/*调用显示记录函数*/

system("pause");

break;

case'3':

printf("Sort\n");

/*调用排序函数*/

printf("SortSucceeded!

\n");

system("pause");

break;

case'4':

printf("Statistic\n");

/*调用统计数据函数*/

system("pause");

break;

case'5':

printf("Readfromafile\n");

/*调用读文件函数*/

system("pause");

break;

case'6':

printf("WritetoaTextfile\n");

/*调用写文件函数*/

system("pause");

break;

case'0':

printf("HaveaGoodLuck,Bye-bye!

\n");/*结束程序*/

system("pause");

exit(0);

}

}

}

2.调试主函数

将上述程序在TC2.0环境下进行调试运行。

程序运行后,屏幕显示如图2所示的主菜单选项:

图2

输入1并按回车键后,屏幕显示如图3所示:

图3

按任意键后,回到主菜单,如图2所示。

输入2并按回车键后,屏幕显示如图4所示:

图4

按任意键后,回到主菜单,如图2所示。

输入3并按回车键后,屏幕显示如图5所示:

图5

按任意键后,回到主菜单,如图2所示。

输入4并按回车键后,屏幕显示如图6所示:

图6

按任意键后,回到主菜单,如图2所示。

输入5并按回车键后,屏幕显示如图7所示:

图7

按任意键后,回到主菜单,如图2所示。

输入6并按回车键后,屏幕显示如图8所示:

图8

按任意键后,回到主菜单,如图2所示。

输入0并按回车键后,屏幕显示如图9所示:

图9

按任意键后,退出程序。

4.3编写输入记录函数

1.编写输入记录函数Input

函数编写如下:

/*Input函数

功能:

输入若干个记录。

参数:

从结构体数组元素stu[n]开始输入,n表示原有记录个数。

返回值:

输入的记录个数。

*/

intInput(STUstu[],intn)

{inti=0;/*统计输入记录的个数*/

charsign;/*存放用户输入的选择Y/N*/

charx[10];/*x[10]为清除多余的数据所用*/

while(sign!

='n'&&sign!

='N')

{printf("student'snum:

");

scanf("%s",stu[n+i].num);

printf("student'sname:

");

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

printf("student'sscore:

");

scanf("%d",&stu[n+i].score);

gets(x);/*清除多余的输入*/

printf("anymorerecords?

(Y/N)");/*选Y输入下一个记录,选N输入结束*/

scanf("%c",&sign);

i++;

}

return(n+i);

}

2.调试程序

(1)将输入记录函数Input插入到main函数前的注释部分

/*输入记录函数Input*/

处。

(2)在main函数中的switch语句中的注释部分

/*调用输入记录函数*/

处插入语句

n=Input(stu,n);

(3)程序运行结果如图10所示。

图10

按任意键后,返回主菜单,如图2所示。

4.4编写显示记录函数

1.编写显示记录函数Display

函数编写如下:

/*Display函数

功能:

显示记录

参数:

从结构体数组元素stu[0]开始输出n个记录

返回值:

*/

voidDisplay(STUstu[],intn)

{inti;

printf("%-15s%-15s%-15s\n","number","name","score");

for(i=0;i

{printf("%-15s%-15s%-15d\n",stu[i].num,stu[i].name,stu[i].score);

if(i>0&&i%20==0)system("pause");/*每输出20个记录暂停*/

}

system("pause");

}

2.调试程序

(1)将显示记录函数Display插入到main函数前的注释部分

/*显示记录函数Display*/

处。

(2)在main函数中的switch语句中的注释部分

/*调用显示记录函数*/

处插入语句

Display(stu,n);

(3)程序运行后,按图10所示输入3个记录,按任意键后,返回主菜单。

当输入2后,屏幕显示结果如图11所示。

图11

按任意键后,返回主菜单,如图2所示。

4.5编写排序函数

1.编写排序函数Sort_by_num

/*Sort_by_num函数

功能:

按学号排序

参数:

对结构体数组stu的前n个元素排序

返回值:

*/

voidSort_by_num(STU*stu,intn)

{inti,j;

STUtemp;

for(i=0;i

for(j=0;j

if(strcmp(stu[j].num,stu[j+1].num)>0)

{temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;

}

}

2.调试程序

(1)将排序函数Sort_by_num插入到main函数前的注释部分

/*记录排序函数Sort_by_num*/

处。

(2)在main函数中的switch语句中的注释部分

/*调用排序函数*/

处插入语句

Sort_by_num(stu,n);

(3)程序运行后,按图10所示输入3个记录,按任意键后,返回主菜单。

当输入3后,屏幕显示结果如图12所示。

图12

按任意键后,返回主菜单,如图2所示。

再输入2,屏幕显示如图13所示。

图13

4.6编写统计数据函数

1.编写统计数据函数Statistic

/*Statistic函数

功能:

输出统计信息:

总记录数、最高分、最低分及平均分

参数:

统计结构体数组stu的前n个记录

返回值:

*/

voidStatistic(STUstu[],intn)

{inti,j=0,k=0,sum=0;

floataver;

for(i=0;i

{sum+=stu[i].score;

if(stu[j].score>stu[i].score)j=i;

if(stu[k].score

}

aver=1.0*sum/n;

printf("thereare%drecords.\n",n);/*总记录数*/

printf("thehignestscore:

\n");/*最高分*/

printf("number:

%sname:

%sscore:

%d\n",stu[k].num,stu[k].name,stu[k].score);

printf("thelowestscore:

\n");/*最低分*/

printf("number:

%sname:

%sscore:

%d\n",stu[j].num,stu[j].name,stu[j].score);

printf("theaveragescoreis%5.2f\n",aver);/*平均分*/

}

2.调试程序

(1)将统计数据函数Statistic插入到main函数前的注释部分

/*统计数据函数Statistic*/

处。

(2)在main函数中的switch语句中的注释部分

/*调用统计数据函数*/

处插入语句

Statistic(stu,n);

(3)程序运行后,按图10所示输入3个记录,按任意键后,返回主菜单。

当输入4后,屏幕显示结果如图14所示。

图14

按任意键后,返回主菜单,如图2所示。

4.7编写向文件中写记录函数

1.编写向文件中写记录函数Write_to_file

/*Write_to_file函数

功能:

将记录写入文件

参数:

将数组stu的前n个记录写入文件

返回值:

*/

voidWrite_to_file(STUstu[],intn)

{inti=0;

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

charfilename[20];/*定义文件名*/

printf("WriteRecordstoaTextFile\n");/*输入文件名*/

printf("Inputthefilename:

");

scanf("%s",filename);

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

{printf("cann'topenthefile\n");

system("pause");

return;

}

fprintf(fp,"%d\n",n);/*写入记录个数*/

while(i

{fprintf(fp,"%-16s%-15s%d\n",stu[i].num,stu[i].name,stu[i].score);

i++;

}

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

printf("Successed!

\n");/*返回成功信息*/

}

2.调试程序

(1)将向文件中写记录函数Write_to_file插入到main函数前的注释部分

/*向文件写记录函数Write_to_file*/

处。

(2)在main函数中的switch语句中的注释部分

/*调用写文件函数*/

处插入语句

Write_to_file(stu,n);

(3)程序运行后,按图10所示输入3个记录,按任意键后,返回主菜单。

当输入6后,屏幕提示输入存放数据的文件名,如输入student,并按回车,屏幕显示结果如图15所示。

图15

按任意键后,返回主菜单,如图2所示。

4.8编写从文件中读记录函数

1.编写从文件中读记录函数Read_from_file

/*Read_from_file函数

功能:

从文件中读取数据

参数:

从数组元素stu[n]开始输入

返回值:

记录个数

*/

intRead_from_file(STUstu[],intn)

{inti=0,num;

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

charfilename[20];/*定义文件名*/

printf("Inputthefilename:

");

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

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

{printf("cann'topenthefile\n");/*打开失败信息*/

system("pause");

return(n);}

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

while(i

{fscanf(fp,"%s%s%d",stu[n+i].num,stu[n+i].name,&stu[n+i].score);

i++;

}

n+=num;

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

printf("Successed!

\n");

system("pause");

return(n);

}

2.调试程序

(1)将从文件中读记录函数Read_from_file插入到main函数前的注释部分

/*从文件读记录函数Read_from_file*/

处。

(2)在main函数中的switch语句中的注释部分

/*调用读文件函数*/

处插入语句

n=Read_from_file(stu,n);

(3)程序运行后,出现主菜单。

当输入5后,屏幕出现提示信息:

输入文件名,如输入文件名student,并按回车后,屏幕显示结果如图16所示。

图16

按任意键后,返回主菜单,如图2所示。

至此,整个程序输入并调试完毕。

5.功能扩充

同学们可在上述实验的基础上进行修改和功能扩充。

例如:

(1)编写函数,其功能是删除用户指定的记录。

(2)编写函数,其功能是查找某记录。

(3)编写函数,其功能是按成绩排序。

以及其它功能。

本例采用静态结构体数组存放学生记录,其优点是程序设计简单,思路清楚,容易实现,缺点是数组的大小是在程序中固定的,要想改变大小,就要改写程序。

如果用链表存放学生记录,则灵活性较大,通用性强,学生可尝试用动态链表方式编写学生成绩管理程序。

6.撰写实验报告

学生做完该实验后要撰写实验报告,其格式如下:

计算机程序设计基础(C)实验报告

实验名称

一个小型软件的设计与实现

学院

专业班级

姓名

学号

任课教师

实验时间

一、实验目的

二、实验内容

三、设计方法

四、源程序

五、测试数据

六、实验心得

 

七、教师评语

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

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1