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

  • 格式:doc
  • 大小:61.50 KB
  • 文档页数:25

精品文档就在这里

-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------

--------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------精品 文档---------------------------------------------------------------------

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

一:课程设计目的

通过本次课程设计,进一步熟悉掌握以下知识:数据类型号、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。达到系统理解、综合运用课程知识的学习目标;学会用C语言程序解决实际问题的方法;掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试、调试方法。

二:总体设计内容

(一)、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。

2、查询模块:可用stu *lookdata(stu *p1) 来实现.找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩.

3、插入模块:可用insert( )函数来实现.其中通过学号的大小来比较的,并且以此来排序。

4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

(二)、系统主模块结构图:

三:详细设计

(一)、 界面设计

此系统界面采用图形和数字化菜单设计。

主界面设计如下:

学生成绩管理系统

请选择相应的数字执行相应的功能:

1:是否输入其他数据

2:查看数据

3:插入数据

4:查找数据

5:更新数据

6:保留数据

7:显示或打印数据

8:语文成绩状况

9:数学成绩状况

10:英语成绩状况

11:计算机成绩状况

12:?

13:退出系统 精品文档就在这里

-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------

--------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------精品 文档---------------------------------------------------------------------

(二)、 数据结构设计:

程序设计中用到的结构体类型:

学生信息结构体类型:

typedef struct student{

char name[MAX];

int num[MAX];

char sex[MAX];

int chinese;

int mathematic;

int english;

int computer;

struct student *next;

(三)、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

(四)、调试与测试

问题一、学生初始信息模块:

其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。

解决办法及步骤:

1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有.

2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错

3、输出用于循环检查语句中的学生信息,发现乱码

4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。

问题二、查询模块:

可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。

解决办法及步骤:

1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。

2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。

(五)、源程序清单和执行结果

#include 〈malloc.h>

#include 〈stdio。h>

#include 〈stdlib。h> 精品文档就在这里

-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------

--------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------精品 文档---------------------------------------------------------------------

#define LEN sizeof(struct scorenode)

#define DEBUG

#include 〈string.h〉

struct scorenode

{int number;/*学号*/

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

float yuwen;/*语文成绩*/

float yingyu;/*英语成绩*/

float shuxue;/*数学成绩 */

struct scorenode *next;

};

typedef struct scorenode score;

int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/

/*==============================================================================================*/

score *creat2311(void)

/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/

{

score*head;

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

int i,j;

float fen;

char t[10];

n=0;

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

printf(”请输入学生资料,输0退出!\n");

repeat1: printf(”请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/

scanf(”%d”,&p1—〉number);

while(p1—〉number〈0)

{getchar();

printf(”输入错误,请重新输入学生学号:");

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

/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/

if(p1-〉number==0)

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

else

p3=head;

if(n>0)

{for(i=0;i〈n;i++) 精品文档就在这里

-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------

--------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------精品 文档---------------------------------------------------------------------

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

p3=p3->next;

else

{printf(”学号重复,请重输!\n”);

goto repeat1;

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

}

}

}

printf(”请输入学生姓名:”);

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

printf(”请输入语文成绩(0~100):”);/*输入语文成绩,成绩应在0-100*/

scanf("%f",&p1—〉yuwen);

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

{getchar();

printf("输入错误,请重新输入语文成绩”);/*输入错误,重新输入语文成绩直到正确为止*/

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

printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0—100*/

scanf(”%f”,&p1—〉yingyu);

while(p1—〉yingyu〈0||p1->yingyu〉100)