学生成绩查询系统

发布时间:2020-03-29 16:41:46   来源:文档文库   
字号:

《程序设计基础》课程设计

设计题目:_学生成绩查询系统_______

专业:

班级: ___

姓名: __

学号:

指导老师:________

一、课程设计目的与要求 3

二、详细设计 4

三、程序清单和执行结果 9

四、调试与测试 23

五、结语 24

一、课程设计目的与要求

1.课程设计目的

1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。

2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。

2. 课程设计要求

设计一个简易学生成绩记录簿设计,其中包括:姓名,学号,C语言成绩;

具体功能:

1.系统以菜单方式工作

2. 创建学生成绩信息并以磁盘文件保存;

3. 读取磁盘文件并显示输出所有学生的成绩;

4. 查询学生成绩

1)按学号查询成绩

2)学号姓名查询成绩

5.添加成绩记录;

6.修改指定姓名或学号的学生的成绩并可存盘;

7.显示输出60分以下、60~7980~8990分以上各分数段的学生信息。

二、详细设计

1、数据结构设计

#include

#include

#include

#include

int n=4;

struct student

{

int num; /*学号*/

char name[10]; /*姓名*/

float score[3]; /*成绩*/

}

2.函数说明

1.主函数

main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能

2.其他部分功能函数包括

(1) 将学生成绩信息保存为文件void save();

算法思想:

①定义指向文件的指针变量;

②输入保存路径及文件名,打开文件,若不能打开文件给出提示信息;

③将存有学生成绩信息的结构体数组信息依次保存到文件中。

(2 学生成绩信息录入函数void input()

算法思想:

①依次录入结构体数组中所包含的各个成员;

②直到输入的结构体成员中信息为4,数据输入结束;

③返回实际录入的学生成绩信息数。

(3)从文件中读出学生成绩信息void output();

算法思想:

①定义指向结构体变量的指针和指向文件的指针;

②输入文件的路径,打开文件,若不能打开文件给出提示信息;

③将文件中的信息依次读出,最后结构体的指针为NULL

3.函数设计

1)主菜单函数main()

功能:函数返回值为整数,代表所选的菜单项

int main ()

{

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

printf(" § §\n");

printf("§<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>> §\n");

printf(" § >>欢迎进入学生成绩记录系统<< §\n");

printf(" §>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<< §\n");

printf(" § §\n");

printf("§【1-------------------------- 创建学生成绩信息 §\n");

printf(" § §\n");

printf("§【2-------------------------- 显示所有学生成绩信息 §\n");

printf("§ §\n");

printf("§【3-------------------------- 添加学生成绩信息 §\n");

printf(" § §\n");

printf("§【4-------------------------- 查询学生成绩信息 §\n");

printf(" § §\n");

printf("§【5-------------------------- 修改学生的信息 §\n");

printf(" § §\n");

printf("§【6-------------------------- 按分数段显示学生的信息 §\n");

printf(" § §\n");

printf("§【0-------------------------- 退出 §\n");

printf(" § §\n");

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

printf(" 请输入相应菜单编号: ");

}

(2)我负责编写的程序

A.添加学生信息

void Addstudent()

{

FILE *fp;

struct student s;

fp=fopen("stu.dat","ab");

if((fp=fopen("stu.dat","ab"))==NULL)

printf("File open error!\n");

else

{

printf("请输入所增加学生的 学号 姓名 c语言成绩:\n");

scanf("%d",&s.num );

scanf("%s",s.name);

scanf("%f",&s.score[0]);

fwrite (&s,sizeof(struct student),1,fp);

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

}

printf("写入成功!\n");

}//end function Addstudent;

B.修改学生成绩

void modify()

{

int number,i;

printf("请输入要修改信息的学生学号:");

scanf("%d",&number);

for(i=0;i

if(number==stud[i].num)

break;/*查找判断*/

if(i查找判断*/

{

printf("请输入修改后的学生的信息:");

printf("\n请输入学生的c语言成绩:");

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

save();

}

else

printf("没找到该学生的信息\n");

system("paues");system("cls");

}

C.查询学生成绩

void namecheck(void);

void scorecheck(void);

void searchmenu()

{ printf(" ***** 欢迎进入学生成绩查询系统 ****** \n");

printf("* 1------------------按姓名查询成绩 * \n");

printf("* 2-----------------按学号查询成绩 * \n");

printf("* 3-----------------返回上一层 * \n");

printf("* 4------------------退出 * \n");

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

printf(" 请输入相应菜单编号: ");

int m;

scanf("%d",&m);

switch(m)

{

case 1: namecheck();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 2: scorecheck();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 3: main();break;

case 4: exit(0); break;

}

}

void namecheck()

{

char name[10];

printf("按照姓名查询请按\n");

printf("\n请输入姓名:");

scanf("%s",&name);

printf("查询结果\n");

printf("学号 姓名 c语言成绩\n");

if(strcpy(stud[i].name,name))

{

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

}

void scorecheck()

{

int b;

printf("按照学号查询请按\n");

{

printf("\n请输入学号:");

scanf("%d",&b);

printf("查询结果\n");

printf("学号 姓名 c语言成绩\n");

for(i=0;i

if(stud[i].num ==b)

{

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

}

程序清单和执行结果

1.头文件

#include

#include

#include

#include

int n=4;

struct student

{

int num; /*学号*/

char name[10]; /*姓名*/

float score[3]; /*成绩*/

/******以下是函数原型*******/

void save(void);

void input(void);

void output(void);

void modify(); /*修改信息*/

void searchmenu(void); /*查询信息*/

void namecheck(void); /*按姓名查询*/

void scorecheck(void); /*按学号查询*/

void Addstudent(); /*添加信息*/

void sclsearch(); /*成绩按分数段显示*/

2.函数源程序代码与运行结果

[1]函数源程序代码

#include

#include

#include

#include

int n=4;

struct student

{

int num;

char name[10];

float score[3];

}stud[100];

int i,choose,a,t=0;

long int num;

int main ()

{

void save(void);

void input(void);

void output(void);

void modify();

void searchmenu(void);

void Addstudent();

void sclsearch();

while(1)

{

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

printf(" § §\n");

printf(" §<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>§\n");

printf(" § >>欢迎进入学生成绩记录系统<< §\n");

printf(" §>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<< §\n");

printf(" § §\n");

printf(" §【1-------------------------- 创建学生成绩信息 §\n");

printf(" § §\n");

printf(" §【2-------------------------- 显示所有学生成绩信息 §\n");

printf(" § §\n");

printf(" §【3-------------------------- 添加学生成绩信息 §\n");

printf(" § §\n");

printf(" §【4-------------------------- 查询学生成绩信息 §\n");

printf(" § §\n");

printf(" §【5-------------------------- 修改学生的信息 §\n");

printf(" § §\n");

printf(" §【6-------------------------- 按分数段显示学生的信息 §\n");

printf(" § §\n");

printf(" §【0-------------------------- 退出 §\n");

printf(" § §\n");

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

printf(" 请输入相应菜单编号: ");

scanf("%d",&a);

switch(a)

{

case 1:

input();

save();

break;

case 2:

output();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 3:

Addstudent();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 4:

searchmenu();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 5:

modify();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 6:

sclsearch();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 0:exit(0);

default: ;

}

}

return 0;

}

void save()

{

FILE *fp;

if ((fp=fopen("stu.dat","wb"))==NULL)/*以只写的方式打开文件*/

{

printf("无法打开文件!\n");

return ;

}

for(i=0;i

if (fwrite (&stud[i],sizeof(struct student),1,fp)!=1)/*写入字节为1的信息在文件中*/

printf("文件写入错误!\n");

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

}

void input()//录入学生成绩

{

int i;

char a;

for(i=0;i

{

printf("\n 请输入学生成绩信息:\n");

printf("\n请依次输入 学号、姓名、c语言成绩:\n");

scanf("%d%s%f",&stud[i].num,stud[i].name,&stud[i].score[0]);

printf("输入:y(继续)n(终止)!\n");

fflush(stdin);

scanf("%c",&a);

if(a=='n' || a=='N')

break;

}

n=i+1;

}

void Addstudent()

{

FILE *fp;

struct student s;

fp=fopen("stu.dat","ab");

if((fp=fopen("stu.dat","ab"))==NULL)

printf("File open error!\n");

else

{

printf("请输入所增加学生的 学号 姓名 c语言成绩:\n");

scanf("%d",&s.num );

scanf("%s",s.name);

scanf("%f",&s.score[0]);

fwrite (&s,sizeof(struct student),1,fp);

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

}

printf("写入成功!\n");

}//end function Addstudent;

void output()

{

int i;

//float s;

FILE *fp;

if((fp=fopen("stu.dat","rb"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

printf("\n学号 姓名 c语言成绩\n");

for(i=0;fread(&stud[i],sizeof(struct student),1,fp)==1;i++)

{

printf("%d %10s % 10.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

fclose(fp);

n=i;

}

void modify()

{

int number,i;

printf("请输入要修改信息的学生学号:");

scanf("%d",&number);

for(i=0;i

if(number==stud[i].num)

break;/*查找判断*/

if(i查找判断*/

{

printf("请输入修改后的学生的信息:");

printf("\n请输入学生的c语言成绩:");

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

save();

}

else

printf("没找到该学生的信息\n");

system("paues");system("cls");

}

void namecheck(void);

void scorecheck(void);

void searchmenu()

{ printf(" ***** 欢迎进入学生成绩查询系统 ****** \n");

printf("* 1------------------按姓名查询成绩 * \n");

printf("* 2-----------------按学号查询成绩 * \n");

printf("* 3-----------------返回上一层 * \n");

printf("* 4------------------退出 * \n");

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

printf(" 请输入相应菜单编号: ");

int m;

scanf("%d",&m);

switch(m)

{

case 1: namecheck();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 2: scorecheck();

printf("\n");

system("PAUSE");

system("CLS");

break;

case 3: main();break;

case 4: exit(0); break;

}

}

void namecheck()

{

char name[10];

printf("按照姓名查询请按\n");

printf("\n请输入姓名:");

scanf("%s",&name);

printf("查询结果\n");

printf("学号 姓名 c语言成绩\n");

if(strcpy(stud[i].name,name))

{

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

}

void scorecheck()

{

int b;

printf("按照学号查询请按\n");

{

printf("\n请输入学号:");

scanf("%d",&b);

printf("查询结果\n");

printf("学号 姓名 c语言成绩\n");

for(i=0;i

if(stud[i].num ==b)

{

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

}

}

void sclsearch()

{

int i;

printf("90分以上:\n");

printf("学号 姓名 c语言成绩\n");

for(i=0;i

{

if(stud[i].score[0]>=90)

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

printf("80~89:\n");

printf("学号 姓名 c语言成绩\n");

for(i=0;i

{

if(stud[i].score[0]>=80&&stud[i].score[0]<90)

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

printf("70~79:\n");

printf("学号 姓名 c语言成绩\n");

for(i=0;i

{

if(stud[i].score[0]>=70&&stud[i].score[0]<80)

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

printf("60~69:\n");

printf("学号 姓名 c语言成绩\n");

for(i=0;i

{

if(stud[i].score[0]>=60&&stud[i].score[0]<70)

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

printf("60分以下:\n");

printf("学号 姓名 c语言成绩\n");

for(i=0;i

{

if(stud[i].score[0]<60)

printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);

}

}

(1)系统以菜单方式工作

2)学生成绩录入

(3)显示所有学生成绩

(4)查询学生成绩

按姓名查询

按学号查询

(5)修改学生成绩

(6)按分数段显示学生成绩

四、调试与测试

我在调试我编写的程序当中出现了很多问题,比如,按姓名查询学生成绩中if(strcpy(stud[i].name,name)),开始我写成了stud[i].name=name,怎么改都有错误,无奈之下请教了同学,最后在同学的帮助下改对了,原来这需要使用strcpy函数才能实现。可以说出的问题还是蛮多的。好不容易改对了一个,有出现了新的错误,就是输入姓名后,所有学生的成绩都显示了,还把其他学生的姓名改成了我输入的那个,最后人真的检查了一遍才发现多谢了一条语句for(i=0;i这些问题还是给我留下了很深的映象,也提醒了我基础知识不踏实的警钟。

五、结语

通过一周C语言课程设计,不仅使我们更加牢固地掌握了程序设计的知识,也让自己深刻的认识到自己的不足与缺点,有许多知识都存在不是完全了解及掌握,这一系列的问题通过自己上机操作已经减少了很多。这我明白光靠书本上学习的和老师讲的是不够,有许多知识是需要我们去实践才能学到的(比如:在调试的过程中我发现自己在编程这方面的缺点与不足)这不断完善了自己,也不断丰富了自己对于C语言的了解和掌握。而且这让自己明白和体会到了C语言其实具有语句简洁,使用灵活,执行效率高等特点。与此同时,还让我明白了不懂就问的重要性。现在的我们总是太过于要面子,羞于问别人,总觉得这个问题会不会太白痴了,别人会不会嘲笑我。其实这些只是我们自己想太多了而已,老师和同学都很热情的,他们都很乐意教我们的。有团队合作的精神也非常的重要,有些问题光靠自己力量做太过于单薄,团队合作显得尤为重要。在这次合作中,我从同伴身上学到了很多自己身上缺少的优点,比如细心,我做事有些太过于粗心,总是在一些小的地方不够认真,使程序出现了许多的小错误,幸好在同伴的帮助顺利的解决了这些问题。

总之,上机的实训可以让我们通过实际操作,更加深刻的学会 C语言程序编程的基本步骤、基本方法。也增强了自己的动手与实践能力。希望以后多一些这样的实训,让我不断地提高。

本文来源:https://www.2haoxitong.net/k/doc/d7c853a9970590c69ec3d5bbfd0a79563c1ed4ab.html

《学生成绩查询系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式