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条)