学生成绩管理系统C程序设计报告

  • 格式:doc
  • 大小:137.00 KB
  • 文档页数:26

学生成绩管理系统C程序设计报告一、设计要求:1. 要求利用C语言面向过程的编程思想来完成系统的设计;2. 突出C语言的函数特征,以多个函数实现每一个子功能;3. 画出功能模块图;4. 进行简单界面设计,能够实现友好的交互;5. 具有清晰的程序流程图和数据结构的详细定义;6. 熟练掌握C语言对文件的各种操作。

二、设计的作用、目的通过程序设计,提高编程兴趣与编程水平。

设计一个学生成绩管理系统,上学期的本班的学习成绩进行管理,可以用数组设计这个程序,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。

通过对此程序的设计熟练掌握c语言。

三、课题分析输入N个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。

编程计算出每个学生的总分和平均分,并按学生成绩优劣排序。

要求:含有:登记学生资料、删除学生资料、查询学生资料、修改学生资料、保存学生资料、退出系统等各项功能。

四、设计的具体实现1、系统的组成模块结构及功能(1)、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息.具体使用的程序结构如下:printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;}p=(Node *)malloc(sizeof(Node));strcpy(p->data.num,num);printf("请你输入姓名:");scanf("%s",p->);getchar();printf("请你输入性别:");scanf("%s",p->data.sex);getchar();printf("请你输入c语言成绩:");scanf("%d",&p->data.cgrade);getchar();printf("请你输入数学成绩:");scanf("%d",&p->data.mgrade);getchar();printf("请你输入英语成绩:");scanf("%d",&p->data.egrade);getchar();p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle / 3;/* 信息输入已经完成 */(2)、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。

使用的函数结构:void Qur(Link l) /* 查询学生 */{int sel;char findmess[20];Node *p;if(!l->next){printf("\n=====>提示:没有资料可以查询!\n");return;}printf("\n=====>1按学号查找\n=====>2按姓名查找\n");scanf("%d",&sel);if(sel==1)/* 学号 */{printf("请你输入要查找的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("\t\t\t\t查找结果\n");(3)、学生资料删除:输入要删除的学生学学号,若找到则根据提示进行删除;若找不到则提示没有资料删除。

使用的函数结构:void Del(Link l) /* 删除 */{int sel;Node *p,*r;char findmess[20];if(!l->next){printf("\n=====>提示:没有资料可以删除!\n");return;}printf("\n=====>1按学号删除\n=====>2按姓名删除\n");scanf("%d",&sel);if(sel==1){printf("请你输入要删除的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>提示:该学生已经成功删除!\n");shoudsave=1;}(4)、学生资料修改:输入要修改的学生号,若找到则输入新的学生信息,并提示资料修改成功;若找不到则输出查找失败的信息。

使用的程序结构:void Modify(Link l){Node *p;char findmess[20];if(!l->next){printf("\n=====>提示:没有资料可以修改!\n");return;}printf("请你输入要修改的学生学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("请你输入新学号(原来是%s):",p->data.num);scanf("%s",p->data.num);printf("请你输入新姓名(原来是%s):",p->);scanf("%s",p->);getchar();printf("请你输入新性别(原来是%s):",p->data.sex);scanf("%s",p->data.sex);printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade); scanf("%d",&p->data.cgrade);getchar();printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade); scanf("%d",&p->data.mgrade);getchar();printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade); scanf("%d",&p->data.egrade);p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle/3;printf("\n=====>提示:资料修改成功!\n");(5)、学生成绩的排序,并统计单科的最高分。

(6)、退出系统。

2、系统程序流程图图1.1 总流程图图1.2 登记学生资料图1.3 查询学生资料图1.4 删除学生资料图1.5 修改学生资料图1.6 保存文件与退出系统3、重要函数介绍数据输入函数“cin( )”查看数据函数“lookdata( )”插入数据的函数“insert( )”查看数据的函数“find( )”更新数据的函数“update( )”保留数据函数“save( )”主函数 main()利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

初始化函数 STUDENT *init()这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head 的值为NULL。

比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!菜单选择函数 int menu_select();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。

等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!输入记录函数 STUDENT *create()这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入,函数结束后,带回一个指向链表头的指针head。

算法:先声明一个首节点head,并将head->next设为NULL。

每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。

在定义数据类型时,由于学生成绩管理信息需要由不同类型的数据反映出来。

如:姓名、性别都需要用char型数据,而学号和成绩则需要用int型数据,并且每位同学的以上信息都需要一次性输入,所以采用结构体类型定义。

如:typedef struct student /*定义结构体*/{char name [20];-------------------- 定义char型姓名int num[10]; -------------------- 定义int型学号char sex -------------------- 定义char型性别int cgrade; -------------------- 定义int型英语成绩int mgrade; -------------------- 定义int型数学成绩int egrade; -------------------- 定义int型计算机成绩totle;struct student *next; -------------------- 结构体指针}stu;五、程序运行背景:VC++VC++简介现在说的VC就是指的VC++。

是指编程工具.vc++就和tc 差不多,是一个调试,运行的环境,是微软开发的visual组件.VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发平台.有些软件就是这个编出来的...另外还有VB,VF.只是使用不同语言...但是,vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。