c语言课程设计报告学生成绩管理系统

c语言课程设计报告学生成绩管理系统


2024年4月30日发(作者:)

襄樊学院计算机科学与技术系

课 程 设 计 报 告

课程名称

C语言程序设计

设计题目

学生成绩管理系统

专 业

软 件 工 程

班 级

2007级

学 号

2

姓 名

谢 耀 辉

指导教师

李 革

2008年7月 2 日

学生成绩管理系统课程设计

报 告

目录

一.系统软件环境………………………………(3)

二.课程设计目的………………………………(3)

三.内容与要求…………………………………(3)

四.程序主要功能………………………………(4)

五.系统功能设计………………………………(4)

六.函数实现功能说明…………………………(6)

七.调试分析……………………………………(9)

八.心得与体会…………………………………(10)

九.各功能模块的实现及其程序清单…………(10)

十、附页源程序清单……………………………(11)

- 2 -

学生成绩管理系统课程设计

报 告

一.系统软件环境:

本程序主要运行在:Visual C++ 6.0(主要)

Turbo C/C++ 3.0

Turbo C 2.0

二.课程设计目的:

本课程设计的系统是早已在很多领域均有应用,是一个很不错的

教学管理系统,而且其功能更是相当强大、界面更加友好的应用型软

件。

而现在我的设计并非是重走旧路,而我的设计主要目的在于学习

并深刻地掌握对C语言的基础知识以及其实践经验,更好地在以后的

学习中能够更好地运用学习。特别是像这种比较多运用

到一些课本上没有教的知识,比如说,像清屏函数CLRSCR、菜单函

数MENU等。许多都是一开始就没有涉及到的知识,在自已的设计中

得到了提升,更加重要的一点就是增加了自已的实践操作能力。

三.内容与要求:

内容:

成绩信息,内容如下:

姓名 学号 语文 数学 英语

张明明 01 67 78 82

- 3 -

李成友 02 78 91 88

张辉灿 03 68 82 56

王露 04 56 45 77

陈东明 05 67 38 47

请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方

面:

要求:

(一)功能要求:

(1)信息维护:

要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。

此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息

(2)信息查询:

要求:查询时可实现按姓名查询、按学号查询

(3)成绩统计:

要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),

统计出在此分数段的学生情况。

(二)其它要求:

(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读

(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)

(3)可自动增加新功能模块(视情况可另外加分)

(4)写出课程设计报告,具体要求见相关说明文档

四.程序主要功能:

本系统的主要功能有如下:

(1)、新输入学生的详细信息(包括:学号、姓名、语文成绩、数学成绩、英

语成绩)

(2)、增加学生的信息

(3)、删除学生的信息

(4)、查询学生的信息

(5)、统计学生的成绩

注:由于本人能力有限,不能完全地将所有的功能模块做出来;但我相信我能

够再接再厉,继续开发下去的,并向人性化发展。

五.系统功能设计:

(一)、

本系统的总体框架图:

- 4 -

MAIN

函数

MENU

函数

CREAT

函数

ADD

函数

DELETE

函数

SEARCH

函数

TAXICS

函数

(二)、

本系统的总体流程图:

开始

编译运行

有/错

MAIN

调用MENU

K=0

EXIT

K≠0

连接

调用五个功能

函数(K=?)

执行

- 5 -

注:此图为概图、程序较多无法一一展示。

结束

错误

输入正确

六.函数实现功能说明:

(1)、MENU函数

是定义一个菜单函数,其功能在于输出菜单界面供使用者选择。

其运行结果如下图:(以下的皆是在Visual C++ 6.0 中的运行结果)

(2)、CREAT函数

是定义用于创建新的链表,并带回一个指向链表头的指针。其功能

是输入最初的学生信息。其运行结果如下图:

- 6 -

(3)、ADD函数

是定义用于再次输入学生信息,并将所有的学生信息按学号排序。

其运行结果如图:

(4)、DEL函数

是定义用于删除学生信息。

其运行如下图:

- 7 -

(5)、SEARCH函数

是定义义用于查询学生信息,主要是学号的查询。

其运行结果如下图:

(6)、TAXIS函数

是定义用于统计学生的成绩信息,采用排序函数的方式对学号/数学等的排序。

其运行结果如下图:

- 8 -

七.调试分析:

因在不同的环境中运行是有不同的结果,以下分三个环境中说明:

(1)、在Turbo C 2.0

在这个环境下运行警告之处比较多,在调试时采用的图象处理函数在其它两个环

境中不能运行。

例如:在原程序中加入

#include “graphics.h”

{ int gdtiver=DETECT,gmode;

Initgraph(&gdriver,&gmode,“图象处理函数的路径”);

Cleardevice();

Setbkcolor(颜色值);

}

**在Turbo C/C++ 3.0 中的Error提示是:

Undefined symboc _c closegraph in module ……

原因在于:TC 3.0中对图象的处理函数有不足之处。

**在Visual C++ 6.0 中的Error提示是:

BGI Error:Graghics not initialized (use’initgraph’)

- 9 -

Cannot open includefile:”graphics.h”

No such file or diretory

原因在于:VC 6.0中对图象处量理的函数与TC中的不一样。

(2)、在Turbo C/C++ 3.0

在这个环境中运行到输入学生姓名时就出错:

Error:(在用户窗口中可以看到)

Scanf:floating point formats not linked

Ab mormal program termination

**原因在于:连接浮点库错误。

**解决办法:在主函数中加入:fioat arg,*pointer=&arg;

即可运行。

(3)、在Visual C++ 6.0

在此环境下运行比较好,其界面十分友好并且能正常运行。

如有需要可加入清屏函数:

#include “process.h”

{ system(“cls”);

}

注:如在Turbo C 2.0 中可加入清屏函数:

#include “conio.h”

{

clrscr( );

}

八.心得与体会:

(1)、通过本次对C语言的深入学习,让我对C语言有了更多的了解并撑握更多

的知识,成功地运用各类函数、循环变量、结构化的程序设计,以及结构体、指

针的使用。

(2)、但在学习中发现,编程确实不是很好做的,并非是你想要就能完成的,它

需要的是认真、仔细地对待每一个程序块,特别是在对指针的使用时更加困难,

那些指针指来指去,一不小心就会看错,编译不出来。

(3)、由于学生的我只是大一而已,没能够完完全全地把程序做出来,而且程序

中有许多不足之处不能够正确地将它改正,但总体上是可以运行的。

九.各功能模块的实现及其程序清单:

- 10 -

(1)、各功能模块的实现(请参照第六点:函数实现

功能说明)

(2)、程序清单(请见附页)

参考文献

[1] 谭浩强编著.C程序设计第三版.北京:清华大学出版社,2005

[2] 林瑞仲等编著.C语言实例解析精粹.北京:人民邮电出版社,2005

附页:

学生成绩管理系统源程序清单

#include "stdio.h"

#include "stdlib.h"

#include "malloc.h"

#define ABC sizeof(struct scoreflie)

#define ABCDE

#include "string.h"

struct scoreflie

{int number;

char name[10];

float yuwen;

float shuxue;

float yingyu;

struct scoreflie *next; };

typedef struct scoreflie score;

int n,k;

功能(1):创建链表,输入学生成绩信息

score *creat(void)

{score*head;

score *p1,*p2,*p3,*max;

int i,j;

- 11 -

float fen;

char t[10];

n=0;

p1=p2=p3=(score *)malloc(ABC);head=p3; /*开辟一个新单元*/

printf("Please Input Students Message,Piess(0)is out!n");

repeat1: printf("Input the numder(N.>0):");/*输入学号,学号应大于0*/

scanf("%d",&p1->number);

while(p1->number<0)

{getchar();

printf("Is wrong, Input again the numder:");

scanf("%d",&p1->number);}/*输入学号为字符或小于0时程序报错,提示重新输入学号*/

if(p1->number==0)

goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/

else

{ p3=head;

if(n>0)

{for(i=0;i

{if(p1->number!=p3->number)

p3=p3->next;

else

{ printf("The numder is Repetition,Input again!:n");

goto repeat1;/*当输入的学号已经存在,程序报错,返回前面重新输入*/

} } } }

printf("Input The Name:");

scanf("%s",&p1->name);/*输入学生姓名*/

printf("Input yuwen Score(0~100):");/*输入语文成绩,成绩应在0-100*/

scanf("%f",&p1->yuwen);

while(p1->yuwen<0||p1->yuwen>100)

{getchar();

printf("Is wrong,Input again:");/*输入错误,重新输入语文成绩直到正确为止*/

scanf("%f",&p1->yuwen);}

printf("Input shuxue Score(0~100):");/*输入数学成绩,成绩应在0-100*/

scanf("%f",&p1->shuxue);

while(p1->shuxue<0||p1->shuxue>100)

{getchar();

printf("Is wrong,Input again:");/*输入错误,重新输入数学成绩直到正确为止*/

scanf("%f",&p1->shuxue);}

printf("Input yingyu Score(0~100):");/*输入英语成绩,成绩应在0-100*/

scanf("%f",&p1->yingyu);

while(p1->yingyu<0||p1->yingyu>100)

{getchar();

printf("Is wrong,Input again:");

scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/

head=NULL;

- 12 -

while(p1->number!=0)

{ n=n+1;

if(n==1)

head=p1;

else

p2->next=p1; p2=p1;

p1=(score *)malloc(ABC);/*开辟一个新单元 以下的注释内容同上*/

printf("Please Input Students Message,Piess(0)is out!n");

repeat2:printf("Input the numder(N.>0):");

scanf("%d",&p1->number);

while(p1->number<0)

{getchar();

printf("Is wrong, Input again the numder:");

scanf("%d",&p1->number);}

if(p1->number==0)

goto end;

else

{p3=head;

if(n>0)

{for(i=0;i

- 13 -


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714420189a2443000.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信