学生成绩管理系统11522.docx

上传人:b****2 文档编号:2164531 上传时间:2022-10-27 格式:DOCX 页数:29 大小:245KB
下载 相关 举报
学生成绩管理系统11522.docx_第1页
第1页 / 共29页
学生成绩管理系统11522.docx_第2页
第2页 / 共29页
学生成绩管理系统11522.docx_第3页
第3页 / 共29页
学生成绩管理系统11522.docx_第4页
第4页 / 共29页
学生成绩管理系统11522.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统11522.docx

《学生成绩管理系统11522.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统11522.docx(29页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统11522.docx

学生成绩管理系统11522

成绩评定

教师签名

嘉应学院计算机学院

《数据结构》实验报告

 

课程名称:

数据结构

开课学期:

2016-2017学年第1学期

班级:

1401

指导老师:

钟治初

实验题目:

学生成绩管理系统

学号:

141110043

姓名:

苏永达

提交时间:

2016年10月27日

一、实验要求:

(1)设计一个学生成绩管理系统,模拟高考成绩的管理。

功能至少包括数据输入,输出,查找,插入,删除,修改,排序,统计各成绩段的人数,考生成绩的排位,报考志愿的检索等。

(2)所有输入输出数据均使用文本文件进行读写。

(3)所有过渡性数据使用二进制文件进行读写和保存。

(4)设计使用平行志愿进行出档。

(5)设计使用非平行志愿行进出档。

(6)设计志愿时,可以设计12个志愿,如果平行志愿,则前后各6个分别为第一组和第二组平行志愿处理。

(7)设计考生记录的字段时,可以预留补录志愿的字段。

或者将未录取考生的数据进行备份,然后将志愿清空后再增加补录志愿。

二、功能:

(1)按学号顺序输入学生信息,包括学号、姓名、性别、课程单科成绩(单科成绩包括C语言、高数、大学语文、汇编、中近史),并存入文件中。

(2)从文件读取数据

(3)删除学生信息

(4)查询学生信息(查询可分为精确查询和模糊查询)

(5)修改学生信息(要求修改后,数据依然是按学号顺序排列)

(6)插入学生信息(要求插入后,数据依然是按学号顺序排列)

(7)附加功能,学生可自由发挥,如:

排名、求各门课程平均分等。

三、实验目的

1、掌握和巩固C语言编写的相关知识和技巧,特别是函数、指针、结构体。

2、能够采用模块化思想调试程序。

3、通过该课程设计的操作与实践,能够根据数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能,全面提高学生的程序设计、开发能力。

四、系统分析

4.1相关基础知识

选择、循环、函数、指针、结构体、链表

4.2总体方案

架构图:

方案描述:

菜单:

运用switchcase选择功能,在每个case中有相对应的调用语句,调用相对应的函数。

删除功能:

调用删除函数,判断是否保存,如果保存写入文件。

插入功能:

运用链表插入。

修改功能:

调用删除函数跟插入函数,先删除再插入,从而实现修改功能。

查询功能:

调用菜单中的查询函数,用循环实现查询功能。

排名功能:

调用菜单中的排名函数,通过冒泡排序法实现功能。

保存功能:

运用写入文件。

五、系统设计

定义一个student类型的结构体,里面包含学生信息,包括学号、姓名、性别、课程单科成绩(单科成绩包括C语言、高数、大学语文、汇编、中近史)、总分、平均成绩。

5.1新建功能

从键盘输入N个学生基本信息,包括学号、姓名、性别、课程单科成绩(单科成绩包括C语言、高数、大学语文、汇编、中近史),编程根据输入信息计算各学生总分和平均分。

创建动态链表,将学生信息存入链表中。

在DOS屏幕上打印链表内所有学生信息。

新建一个文件,将动态链表中的数据(即输入的学生信息)存入文件中。

5.2打开功能

打开一个文件,从文件中读取学生信息,并新建链表,将数据存入动态链表。

在DOS屏幕上打印链表内所有学生信息。

5.3修改功能

在DOS屏幕上打印出当前的所有学生信息。

输入待修改的学生学号,若不存在,输出“查无此人”;若存在,则输入修改的信息,并存回学生信息链表中,存回后学生信息链表依然是按学号顺序排列。

最后在DOS屏幕上打印出新的所有学生信息。

5.4插入功能

在DOS屏幕上打印出当前的所有学生信息。

输入插入信息的条数,从第一条开始到最后一条,依次输入每条学生信息,包括学号、姓名、性别、课程单科成绩(单科成绩包括C语言、高数、大学语文、汇编、中近史),根据输入信息计算各学生总分和平均分。

若输入的学生学号已经存在,则输出“该学号已存在,无法操作!

”,否则将学生信息插入到链表中,插入后链表中的数据依然按照学号排列。

最后在DOS屏幕上打印出新的所有学生信息。

5.5查询功能

查询分为:

精确查询、模糊查询

精确查询:

(1)按姓名查询

输入待查询的姓名;

根据顺序查询的方法,对学生的姓名依次查询,直到查询到与输入的信息相匹配的信息,并在DOS屏幕上显示出来。

若需要查询的信息不存在,系统则会提示找不到此人。

可重复查询。

(2)按学号查询

输入待查询的学号;

根据顺序查询的方法,对学生的学号依次查询,直到查询到与输入的信息相匹配的信息,并在DOS屏幕显示出来。

若需要查询的信息不存在,系统则会提示找不到此人。

可重复查询。

模糊查询:

(1)按姓氏查询

输入待查询的姓氏;

根据顺序查询的方法,对学生的姓依次查询,当查询到与输入的信息相匹配的信息,则在DOS屏幕显示出来,直到链表结束。

若需要查询的信息不存在,系统则会提示找不到相关信息。

可重复查询。

(2)按性别查询

输入待查询的性别;

根据顺序查询的方法,对学生的性别依次查询,当查询到与输入的信息相匹配的信息,则在DOS屏幕显示出来,直到链表结束。

可重复查询。

5.6删除功能

在DOS屏幕上打印出当前的所有学生信息。

(1)按姓名删除

输入需要删除的学生姓名;

根据顺序查询的方法,对学生的姓名依次查询,当查询到与输入的信息相匹配的信息,则删除该生信息,并在DOS屏幕显示出新的所有学生信息。

若需要删除的信息不存在,系统则会提示删除失败。

(2)按学号删除

输入需要删除的学生学号;

根据顺序查询的方法,对学生的学号依次查询,当查询到与输入的信息相匹配的信息,则删除该生信息,并在DOS屏幕显示出新的所有学生信息。

若需要删除的信息不存在,系统则会提示删除失败。

5.7排名功能

可根据学生的总分进行排名,并在DOS屏幕上输出排名结果。

5.8关于我们

在DOS屏幕上输出系统相关信息。

5.9软件说明

5.10退出保存

选择‘0’退出系统,保存功能在每段函数结束后实现。

5.10运行结果

5.10.0主界面

5.10.1新建文件(输入一组数据,存入文件中)

5.10.2打开文件(打开文件,读取文件数据存入链表)

5.10.3修改功能

5.10.4插入功能

5.10.5查询功能

精确查询-按姓名查询

精确查询-按学号查询

模糊查询-按姓氏查询

模糊查询-按性别查询

5.10.6删除功能

按姓名删除

按学号删除

5.10.7总分排名功能

5.10.9软件说明

5.10.10退出保存

保存功能在每段函数结束后实现。

六、心得体会

通过这次实验我们更好的掌握和巩固C语言编写的相关知识和技巧,特别是函数、指针、结构体、链表等功能。

通过该课程设计的操作与实践,能够根据数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能,虽然在设计过程中遇到了不少问题麻烦,在教材数据的帮助下,完成了这次程序设计。

七、源代码

#include

#include

#include

/*---------------------------------------------------------*/

#defineLENsizeof(structstudent)//结构体长度

/*---------------------------------------------------------*/

#defineNEW(structstudent*)malloc(LEN)

/*---------------------------------------------------------*/

FILE*fp;/*文件指针*/

/*---------------------------------------------------------*/

structstudent

{

intnum;

charname[20];

intscore1,score2,score3,score4,score5;

charsex;

doubleaver;

floatsum;

structstudent*next;

};

charfilename[100];

structstudent*creat()

{structstudent*h;

structstudent*p,*q;

printf("需要输入几条信息:

");

inti,n;

scanf("%d",&n);

printf("\n----------请按学号顺序依次输入学生信息----------\n");

charc=getchar();

h=NULL;

for(i=1;i<=n;i++)

{p=NEW;

if(p==NULL)

{printf("Allocationfailure\n");

exit(0);

}

printf("\n");

printf("输入姓名<如:

zhangsan>:

");

gets(p->name);

printf("输入学号<如:

1>:

");

scanf("%d",&p->num);

c=getchar();

printf("输入性别:

");

scanf("%c",&p->sex);

printf("输入c语言成绩:

");

scanf("%d",&p->score1);

printf("输入高数成绩:

");

scanf("%d",&p->score2);

printf("输入大学语文成绩:

");

scanf("%d",&p->score3);

printf("输入汇编语言成绩:

");

scanf("%d",&p->score4);

printf("输入中近史成绩:

");

scanf("%d",&p->score5);

c=getchar();

p->sum=p->score1+p->score2+p->score3+p->score4+p->score5;

p->aver=(p->score1+p->score2+p->score3+p->score4+p->score5)/5.0;

p->next=NULL;

if(h==NULL)/*h为空,表示新结点为第一个结点*/

h=p;/*头指针指向第一个结点*/

else/*h不为空*/

q->next=p;/*新结点与尾结点相连接*/

q=p;/*使q指向新的尾结点*/

}

returnh;

}

structstudent*paixu(structstudent*head)/*总分排名*/

{system("cls");

printf("总分排名如下:

\n");

structstudent*op;

structstudent*p;

structstudent*p1,*p2;

p1=(structstudent*)malloc(LEN);

p1->

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1