《C语言程序设计》课程设计报告书.docx

上传人:b****5 文档编号:12358101 上传时间:2023-04-18 格式:DOCX 页数:17 大小:200.77KB
下载 相关 举报
《C语言程序设计》课程设计报告书.docx_第1页
第1页 / 共17页
《C语言程序设计》课程设计报告书.docx_第2页
第2页 / 共17页
《C语言程序设计》课程设计报告书.docx_第3页
第3页 / 共17页
《C语言程序设计》课程设计报告书.docx_第4页
第4页 / 共17页
《C语言程序设计》课程设计报告书.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》课程设计报告书.docx

《《C语言程序设计》课程设计报告书.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程设计报告书.docx(17页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》课程设计报告书.docx

《C语言程序设计》课程设计报告书

课程设计

课程名称____C语言程序设计___

题目名称____学生成绩管理系统__

学生学院_________

专业班级___

学号__________

学生姓名________________

指导教师________________

 

20011年01月13日

一,总体设计

此程序所能实现的功能模块:

功能一:

根据键盘输入的学生信息,能够计算出平均值。

功能二:

根据键盘输入的学生信息,能够按照平均分高低进行排序。

功能三:

根据键盘输入的学生学号,能够显示该学生的各门成绩以及平均分。

功能四:

能够按照学生学号对学生的成绩信息进行删除。

功能五:

能够按照学生学号对学生的成绩信息进行修改。

功能六:

能够按照平均分的高低插入一位学生的成绩信息。

功能七:

能够将所输入的学生成绩信息储存在文件Student.dat中。

功能八:

能够提供一个界面来调用各个功能。

二,详细设计

模块一:

实现排序功能

设计函数Sort

流程图如下:

通过Sort函数对Student.dat文件中的学生成绩信息实现排序功能。

程序运行时的主菜单:

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

a)1----------------录入

b)2----------------排序

c)3----------------显示

d)4----------------查询

e)5----------------插入

f)6----------------修改

g)7----------------删除

h)8----------------退出

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

此时输入2,调用排序Sort函数。

排序后的界面如下:

至此,完成对Student.dat文件中的学生成绩信息实现排序功能。

模块二:

实现显示功能

设计函数Display

程序运行时的主菜单:

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

a)1----------------录入

b)2----------------排序

c)3----------------显示

d)4----------------查询

e)5----------------插入

f)6----------------修改

g)7----------------删除

h)8----------------退出

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

此时输入3,在上面完成了成绩排序后,此处调用Display函数,显示排序后的学生成绩列表。

运行的结果:

至此,完成显示功能。

模块三:

实现查询功能

设计函数Search

程序运行时的主菜单:

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

a)1----------------录入

b)2----------------排序

c)3----------------显示

d)4----------------查询

e)5----------------插入

f)6----------------修改

g)7----------------删除

h)8----------------退出

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

此时输入4,调用函数Search,然后按照提示输入所要查询的学生学号,运行的结果:

(此处查询学号为1115的学生为例)

至此完成了查找学生成绩的功能。

 

模块四:

实现插入功能

设计函数Insert

流程图如下:

程序设计如下

intInsert(Studentstud[],intn)

{charx[10];

printf("学生班级:

");

scanf("%s",&stud[n].Class);

printf("学生学号:

");

scanf("%d",&stud[n].Number);

printf("学生姓名:

");

scanf("%s",&stud[n].Name);

printf("学生高数成绩:

");

scanf("%f",&stud[n].Math);

printf("学生C程序设计成绩:

");

scanf("%f",&stud[n].C);

printf("学生英语成绩:

");

scanf("%f",&stud[n].Eng);

stud[n].ave=(stud[n].Math+stud[n].C+stud[n].Eng)/3;

gets(x);

n++;

Sort(stu,n);

printf("\t\t插入成功!

\n");

return(n);

}

通过函数Insert进行按照平均分的高低插入一位学生的成绩信息的操作。

程序运行时的主菜单:

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

a)1----------------录入

b)2----------------排序

c)3----------------显示

d)4----------------查询

e)5----------------插入

f)6----------------修改

g)7----------------删除

h)8----------------退出

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

此时选择5,调用Insert函数。

此时按照提示依次输入需要插入学生的新班级,新学号,新姓名以及新的各门成绩。

运行的结果如下:

至此完成了在原本的学生成绩记录中插入“王小四”同学的成绩信息。

模块五:

实现修改功能

设计函数Change

程序设计如下:

voidChange(Studentstud[],intn)

{system("cls");

ints;

inti=0;

printf("输入需要修改成绩学生的学号:

");

scanf("%d",&s);

while((stud[i].Number-s)!

=0&&i

if(i==n)

{printf("\t\t没有该学生的成绩\n");

return;

}

printf("\t\t该生的信息\n");

printf("班别\t学号\t姓名\t数学\tC语言\t英语\t平均分\n");

printf("\n");

stud[i-1].ave=(stud[i-1].Math+stud[i-1].C+stud[i-1].Eng)/3;

printf("%s\t%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",stud[i-1].Class,

stud[i-1].Number,stud[i-1].Name,stud[i-1].Math,stud[i-1].C,stud[i-1].Eng,

stud[i-1].ave);

printf("新班级:

");

scanf("%s",&stud[i].Class);

printf("新学号:

");

scanf("%d",&stud[i].Number);

printf("新姓名:

");

scanf("%s",&stud[i].Name);

printf("新数学成绩:

");

scanf("%f",&stud[i].Math);

printf("新C程序设计成绩:

");

scanf("%f",&stud[i].C);

printf("新英语成绩:

");

scanf("%f",&stud[i].Eng);

stud[i-1].ave=(stud[i-1].Math+stud[i-1].C+stud[i-1].Eng)/3;

printf("该生的平均分为:

%f\n",stud[i].ave);

}

程序运行时的主菜单:

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

a)1----------------录入

b)2----------------排序

c)3----------------显示

d)4----------------查询

e)5----------------插入

f)6----------------修改

g)7----------------删除

h)8----------------退出

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

此时选择6,调用函数Change,对Student.dat文件中已有的学生成绩信息进行修改。

然后按照提示输入需要修改成绩信息的学生学号。

通过提示继续分别输入新班级,新学号,新姓名和新的各门成绩。

运行结果如下:

至此,完成了改程序的修改功能。

模块六:

实现删除功能

设计函数Delete

程序设计如下:

intDelete(Studentstud[],intn)

{ints;

inti=0,j;

printf("输入需要删除学生的学号:

");

scanf("%d",&s);

while((stud[i].Number-s)!

=0&&i

if(i==n)

{

printf("\t\t无法找到该学生\n");

return(n);

}

for(j=i;j

{

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

stud[j].Number=stud[j+1].Number;

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

stud[j].Math=stud[j+1].Math;

stud[j].C=stud[j+1].C;

stud[j].Eng=stud[j+1].Eng;

}

printf("\t\t删除成功\n");

return(n-1);

}

程序运行时的主菜单:

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

a)1----------------录入

b)2----------------排序

c)3----------------显示

d)4----------------查询

e)5----------------插入

f)6----------------修改

g)7----------------删除

h)8----------------退出

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

此时选择7,调用函数Delete,对Student.dat文件中已有的学生成绩信息进行删除。

按照提示输入要删除的学生学号。

运行的结果如下:

最后,调用一次Display函数,显示删除了学号为1110的学生后的运行结果:

模块七:

退出程序

程序运行时的主菜单:

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

a)1----------------录入

b)2----------------排序

c)3----------------显示

d)4----------------查询

e)5----------------插入

f)6----------------修改

g)7----------------删除

h)8----------------退出

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

此时选择8,则可以直接退出该程序。

三,设计描述功能介绍,参数说明

1,结构体

structStudent

{charClass[20];班级,一维字符数组

unsignedlongNumber;学号,一维数组

charName[10];姓名,一维字符数组

floatave;平均分,一维数组

floatMath;高等数学,一维数组

floatC;C程序设计成绩,一维数组

floatEng;大学英语成绩,一维数组

};

2,成绩排序

voidSort(Studentstud[],intn)对Sort进行函数声明

{Studentw;

system("cls");进行一次清屏

inti,j,k;

floats;

charw[20];

for(i=0;i

for(j=0;j

if(stud[j].ave

{w=stud[j];stud[j]=stud[j+1];stud[j+1]=w;利用中间变量w交换前后值

}

printf("\n");

printf("班别\t学号\t姓名\t数学\tC语言\t英语\t平均分\n");

printf("\n");

for(i=1;i

{

stud[i-1].ave=(stud[i-1].Math+stud[i-1].C+stud[i-1].Eng)/3;

printf("%s\t%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",stud[i-1].Class,

stud[i-1].Number,stud[i-1].Name,stud[i-1].Math,stud[i-1].C,stud[i-1].Eng,

stud[i-1].ave);输出排序后的成绩列表

}

}完成排序

3,成绩查询

voidSearch(Studentstud[],intn)对Search函数进行声明

{system("cls");进行一次清屏

ints;

inti=0;

printf("输入需要查找学生的学号:

");输入学号

scanf("%d",&s);

while((stud[i].Number-s)!

=0&&i

if(i==n)

{

printf("\t\t无该学生的信息\n");对于出错操作给出出错提示

return;

}

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

printf("班级:

%s\n",stud[i].Class);显示该学号学生各门成绩

printf("学号:

%d\n",stud[i].Number);

printf("姓名:

%s\n",stud[i].Name);

printf("高数:

%.1f\n",stud[i].Math);

printf("C程序设计:

%.1f\n",stud[i].C);

printf("英语:

%.1f\n",stud[i].Eng);

printf("平均分:

%.2f\n",stud[i].ave);

}

4,成绩修改

voidChange(Studentstud[],Intn)对Change函数进行声明

{system("cls");进行一次清屏

ints;

inti=0;

printf("输入需要修改成绩学生的学号:

");输入学号

scanf("%d",&s);

while((stud[i].Number-s)!

=0&&i

if(i==n)

{printf("\t\t没有该学生的成绩\n");对于出错操作给出出错提示

return;

}

stud[i-1].ave=(stud[i-1].Math+stud[i-1].C+stud[i-1].Eng)/3;

printf("%s\t%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",stud[i-1].Class,

stud[i-1].Number,stud[i-1].Name,stud[i-1].Math,stud[i-1].C,stud[i-1].Eng,

stud[i-1].ave);

printf("新班级:

");

scanf("%s",&stud[i].Class);

printf("新学号:

");

scanf("%d",&stud[i].Number);

printf("新姓名:

");

scanf("%s",&stud[i].Name);

printf("新数学成绩:

");

scanf("%f",&stud[i].Math);

printf("新C程序设计成绩:

");

scanf("%f",&stud[i].C);

printf("新英语成绩:

");

scanf("%f",&stud[i].Eng);

stud[i-1].ave=(stud[i-1].Math+stud[i-1].C+stud[i-1].Eng)/3;计算新平均分

printf("该生的平均分为:

%f\n",stud[i].ave);

}

5,成绩删除

intDelete(Studentstud[],intn)对Delete函数进行声明

{ints;

inti=0,j;

printf("输入需要删除学生的学号:

");

scanf("%d",&s);

while((stud[i].Number-s)!

=0&&i

if(i==n)

{

printf("\t\t无法找到该学生\n");对于出错操作给出出错提示

return(n);返回函数值

}

for(j=i;j

{

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

stud[j].Number=stud[j+1].Number;

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

stud[j].Math=stud[j+1].Math;

stud[j].C=stud[j+1].C;

stud[j].Eng=stud[j+1].Eng;

}

printf("\t\t删除成功\n");

return(n-1);删除后,返回函数值

四,总结

这次的课程设计中,自己所设计的程序可以实现要求中的大部分功能,如学生成绩的录入,排序,查询,插入以及修改和删除。

但是仍然有一些功能要求没有实现,比如说统计功能。

很多次在进行读写文件时出错,都是因为自己没有注意文件的使用方式,所以导致文件无法打开,经过一段时期的使用,对文件熟悉以后,自己出错就少很多。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,第一次做的,所以遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,可以说是把前面所学过的知识又复习了一遍。

 

 

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

当前位置:首页 > 教学研究 > 教学案例设计

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

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