《C语言程序设计》课程设计报告书.docx
- 文档编号:12358101
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:17
- 大小:200.77KB
《C语言程序设计》课程设计报告书.docx
《《C语言程序设计》课程设计报告书.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程设计报告书.docx(17页珍藏版)》请在冰豆网上搜索。
《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);删除后,返回函数值 四,总结 这次的课程设计中,自己所设计的程序可以实现要求中的大部分功能,如学生成绩的录入,排序,查询,插入以及修改和删除。 但是仍然有一些功能要求没有实现,比如说统计功能。 很多次在进行读写文件时出错,都是因为自己没有注意文件的使用方式,所以导致文件无法打开,经过一段时期的使用,对文件熟悉以后,自己出错就少很多。 通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,第一次做的,所以遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,可以说是把前面所学过的知识又复习了一遍。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 课程设计 报告书