文档库 最新最全的文档下载
当前位置:文档库 › 用链表与文件实现学生成绩管理系统

用链表与文件实现学生成绩管理系统

用链表与文件实现学生成绩管理系统
用链表与文件实现学生成绩管理系统

用链表与文件实现学生成绩管理系统

学生姓名:李卉指导老师:肖增良

摘要学生成绩管理系统是典型的信息管理系统,是学校教务管理的重要组成部分,其处理信息量很大。本课程设计是用C++实现对学生的成绩管理作一个简单的模拟,实质是建立学生成绩单链表,每条记录由姓名、学号与成绩组成,即链表中每个结点由4个域组成,分别为:学号、姓名、成绩、存放下一个结点地址的next域。用菜单选择操作方式完成五项功能分别写成五个函数,插入学生成绩对应建立学生单链表的功能,输出全部学生成绩记录,后三个功能分别对应单链表的查询、修改与删除三大基本操作。该系统中的数据采用线性表中的链式存储结构即单链表来存储,用结构体类型和类类型定义每个学生记录并采用外部文件方式记录数据简便数据的读取与保存。

关键词程序设计;C++;单链表;学生成绩管理系统

1 引言............................................................................................................................................................ 3

1.1 课程设计目的..................................................................................................................................... 3

1.2课程设计内容...................................................................................................................................... 3

1.3课程设计目标...................................................................................................................................... 42系统需求与功能分析..................................................................................................................................... 5

2.1 系统需求分析..................................................................................................................................... 5

2.2系统功能分析...................................................................................................................................... 5

2.3系统性能分析...................................................................................................................................... 63总体结构设计................................................................................................................................................. 7

3.1系统的结构设计.................................................................................................................................. 7

3.2系统管理流程图.................................................................................................................................. 7

4 系统详细设计和系统实现............................................................................................................................ 9

5 系统测试.................................................................................................................................................... 13

6 结束语........................................................................................................................................................ 16参考文献........................................................................................................................................................ 17附录1:结构化设计源程序清单......................................................................................................... 18

1 引言

1.1 课程设计目的

学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生成绩管理系统对学校加强学生成绩管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生成绩数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。

因此,开发设计这样一套学生成绩管理软件成为很有必要的事情。

该学生成绩管理系统采用C++语言开发研制,针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。

1.2课程设计内容

在程序设计中,可以用许多种数据结构来处理数据存储,对于该学生管理系统而言线形表无疑是最好的选择,考虑到学生成绩管理系统一经建立不仅进行查询而且需要频繁的进行插入和删除,所以采用单链表存储结构实现。这种内存的动态分配策略使我们在编写算法是无需考虑有多少空间资源可用于实现数据结构,算法在需要内存的时候向内存申请,当不需要的时候释放它。

为了简便起见,成绩管理系统记录中只包括学号、姓名、语文成绩、数学成绩、英语成和成绩存放下一个结点地址的next域等数据项。为学生成绩设计一个类,内中包含存储学生成绩信息的单链表以及对单链表进行各种操作的成员函数。为各个成绩如语文成绩、

数学成绩和英语成绩等数据项建立一个结构体类型,并用此结构类型对学生成绩类进行实例化。

对学生成绩信息要求完成如下功能:

(1) 插入:将学生的成绩信息插入;

(2) 查询:查询满足条件的学生;

(3) 修改:对成绩信息的数据项进行修改;

(4) 删除:将满足条件的学生信息删除;

(5) 输出:将全部的学生成绩信息输出。

为了方便数据的读取与保存,我们采用外部文件来进行数据保存能实现学生信息数据的维护。

1.3课程设计目标

建立学生成绩信息管理系统,采用计算机对学生成绩信息进行管理,进一步提高学校现代化水平。帮助广大成绩信息管理者提高工作效率、减少工作时间,实现学生及其家长信息查询工作流程的系统化、公平化、规范化和自动化,也为广大在教师提供便利快捷的成绩录入功能。为了保证系统能够长期、安全、稳定、可靠、高效的运行,本课题将达到以下几个目的:

(1)系统处理的准确性

系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足高校对信息处理的需求。

(2)系统处理的及时性

由于学生非常关心自己的信息正确与否以便及时接受来自学校的学习成绩信息,学生成绩信息管理功能对于整个系统的功能和性能完成举足轻重。在系统开发过程中,必须采用一定的方法保证系统的准确性。

(3)系统的保密性

学生成绩信息是属于个人的隐私,所以系统在开发时,应该充分考虑系统的保密性,以保证学生的隐私权。

(4)系统的开放性和可扩充性

学生成绩信息管理系统在开发过程中,应该充分考虑以后的可扩充性。例如学生成绩信息管理的方式的改变,学生成绩信息的需求也会不断的更新和完善。

2系统需求与功能分析

2.1 系统需求分析

(1)能完成学生成绩的插入、查询、修改、删除、输出等功能;

(2)采用单链表存储结构实现;

(3) 所有数据以外部文件方式保存。

2.2系统功能分析

(1)要设计一个学生成绩管理系统,其功能包括:

①插入函数Add():将学生成绩信息插入到链表中;

②查询函数Search():分别可以按学号和按姓名进行学生成绩查询;

③删除函数Delete():当需要删除的学号和姓名一致时则删除对应的学生记录;

④修改函数Modify():修改指定的学生成绩信息;

⑤输出函数Show():输出全部学生成绩信息;

⑥菜单函数Menu():为程序的菜单函数为实现各种功能提供便捷;

⑦读取数据函数Read():从外部文件读取学生成绩信息;

⑧保存数据函数Save():将数据保存到外部文件中。

(2)线性表的链接存储结构称为单链表,单链表使用一组任意的存储单元存放线性表的元素,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。为了正确表示元素之间逻辑关系,每个存储单元在存储数据元素的同时,还必须存储其后继元素所在地址信息,这个地址信息称为指针,这两部分组成了数据元素的存储映像,称为结点,结点结构如图2.1所示。

图2.1单链表的结点构造

设p是一个指针变量,则p的值是一个指针。设指针p指向某个结点,则该结点用*p表示,在单链表中,结点p由两个域组成:存放数据元素的部分和存放后继结点地址的指针部分,分别用p->data和p->next来标识,p->next指向结点a i+1,其指针与结点之间关系如图2.2所示。

图2.2指针与结点之间关系的示意图

2.3系统性能分析

1.硬件环境

处理器:CPU主频在500MHz以上

内存:128MB以上

硬盘空间:10MB。

2.软件环境

操作系统: Windows 98/Me/NT/2000/XP(推荐使用Windows 2000/XP)。调试环境: Visual C++及以上版本。

3总体结构设计

3.1系统的结构设计

通过对学生成绩信息管理系统的功能分析,可以定义出系统的总体结构模块图,如图3.1所示。

图3.1学生成绩管理系统总体结构设计

3.2系统管理流程图

前面的分析中已经定义了系统各个模块,属于静态建模的范围。在系统运行时刻的动态模型应该由系统的流程决定。当用户运行该系统后可以来进行学生成绩信息插入管理、学生成绩信息查询管理、学生成绩信息删除管理、学生成绩信息修改管理及学生成绩信息输出等操作,具体的流程如图3.2所示。

图3.2系统流程图

主模块应负责应用程序的主界面,由它调用其他模块.因此主模块应具有操作性好、界面清晰的特点,使用户能够很方便地找到所需功能。

根据功能需求的结果分析,主界面应该由学生成绩信息插入管理,学生成绩信息查询管理、学生成绩信息修改管理、学生成绩信息删除管理和学生成绩信息输出管理组成,可以通过输入相应的数字进入相应的功能模块。

4 系统详细设计和系统实现

系统总体设计完成后,就可以根据需求对各个模块来进行实现了。在本系统中需要编码实现的主要有学生成绩信息插入、学生成绩信息查询、学生成绩信息修改、学生成绩信息删除和学生成绩信息输出等5个模块。

(1)学生成绩插入模块

添加的信息包括学号(不允许重复)、姓名(不允许重复)、语文成绩、数学成绩和英语成绩。流程图如下图4.1所示。

图4.1插入模块流程图

本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程如图4.2所示。

图4.2尾插法建立单链表操作示意图

(2)学生成绩查询模块

按姓名和学号查找学生成绩的流程图分别如下图4.3所示。

图4.3按姓名查找学生成绩信息流程图

在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。当p指向某个结点时判断是否为第i个结点,若是则查找成功;否则,将工作指针p后移,即将p指向原来所指结点的后继结点。直到p为NULL时查找失败。单链表查找过程如图4.4所示。

图4.4单链表查找过程的示意图

按学号查询学生成绩信息同按姓名查找学生成绩信息,此处不再详细列出。

(3)学生成绩修改模块

首先要查找与要修改数据相匹配的信息,若没有则返回失败。否则把相应的信息输出,然后再重新输入新的数据并保存到单链表。

(4)学生成绩删除模块

当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配的上,则进行删除操作,否则返回失败。其流程图4.5如下:

图4.5删除学生信息模块流程图

删除操作定义为将单链表的第i 个结点删去。因为在单链表中结点a i 存储地址在其前驱结点a i-1的指针域,所以必须首先找到a i-1的存储地址p ,然后令p 的next 域指向a i 的后继结点,即把结点a i 从链上摘下来,最后释放结点a i 的存储空间,如图4.6所示。

图4.6在单链表中删除结点指针的变化情况

(5)学生成绩输出模块

从单链表表头遍历整个单链表,将所有数据输出。其部分代码如下: void Function::Show() { char choose; Student *temp;

system("cls");

N

temp=Student_First->Next;

if(!temp)

{ cout<<"文件无数据\n\n "<

cout<<"1.返回主菜单"<

cin>>choose;

while(choose!='1')

{ cout<<"1.返回主菜单"<

cin>>choose;

}

Menu();

}

else

{ cout<<"姓名\t学号\t语文成绩\t数学成绩\t英语成绩\n";

while(temp!=NULL)

{ temp->Out();

temp=temp->Next;

}

}

cout<<"1.返回主菜单"<

cin>>choose;

while(choose!='1')

{ cout<<"1.返回主菜单"<

cin>>choose;

}

Menu();

}

5 系统测试

在完成了系统各方面的设计后,并不是可以运行就完成的,为了保证系统性能的稳定性跟安全性等,就要对系统做测试。

测试环境如下:

●硬件:P4C 2.4GHz,80GB硬盘,512M内存;

●软件:Windows XP Personal SP2,分辨率1024*768,Microsoft Visual C++ 6.0。

运行的主界面如图5.1所示:

图5.1运行主界面

①当选择1插入学生成绩信息功能时,如图5.2所示。

图5.2插入学生成绩信息实现

②返回主菜单后选择2查询学生成绩信息,运行结果按由姓名查询和按学号查询分别如图5.3和图5.4所示。

图5.3按姓名查找相关信息实现

图5.4按学号查找相关信息实现

③当在主菜单中选择3时,则进行删除功能。其运行结果如图5.5所示。

图5.5 删除学生信息功能实现

④当在主菜单中选择4时,则进行学生信息修改功能。其运行结果如图5.6所示。

图5.6修改学生信息功能实现

⑤当在主菜单中选择5时,则进行学生信息输出功能。其运行结果如图5.7所示。

图5.7输出学生信息功能实现

6 结束语

在本次课程设计过程中,曾遇到过不少问题,单靠我个人的努力,很难按时完成该课程设计,在此,我衷心感谢我的指导老师——肖增良。肖增良老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。从一遍一遍得修改到最后定稿的各个环节给予细心指导,使我在知识和能力上都得到了极大的提高,在此表示衷心地感谢。在整个过程中,我查阅了大量的关于学生成绩管理系统的资料和网站,在老师的指导和自己的努力下,终于完成了本次课程设计。

通过这次数据结构课程设计的实验,在解决问题的过程中,充分体会到了数据结构这门课程对于软件设计的重要性,也体会到了数据结构+算法=程序这句话的真正含义,一个实际问题的解决第一步就是要依赖于良好的抽象思维的,将实际问题转化为相应的数据结构,只有这一步做好了,才能采取相应的算法和优化方法解决问题和解决好问题。

同时我还要感谢指导过我的每一位老师,他们给了我很大的指导和帮助,还有在我陷入困境时帮助过我的同学们。另外,还要感谢学校领导、辅导员,为我们提供了良好的设计环境以及各方面的支持。

参考文献

[1] 钱新贤,杨猛,程兆炜,张少东.Visual C++编程疑难详解[M].北京:人民邮电出版社,2000

[2] 王红梅,胡明,王涛.数据结构(C++)[M].北京:清华大学出版社,2007

[3] 程学先.数据库原理与技术[M].北京:中国水利水电出版社,2001

[4] Alex Kriegel & Boris M.Trukhnov.SQL Bible[M].北京:电子工业出版社,2000

[5] 郑章,程刚,张勇.Visual C++6.0数据开发技术[M].北京:机械工业出版社,1999.9

[6] F.Brokken and K.Kubat. C++ Annotations. Version 4.4.0m,ICCE,University of Groningen,Netherlands,1990. 250~280

附录1:结构化设计源程序清单

// 程序名称:Student.CPP

// 程序功能:采用链表与文件实现一个简单的学生成绩管理系统。// 程序作者:李卉

// 最后修改日期:2008-9-10

#include

#include

#include

#include

#include

using namespace std;

struct Class

{ int Chinese;

int Math;

int English;

};

class Student{

public:

Student();

void Ofile(ofstream &of);

void Infile(ifstream &f);

void Out();

void Set(char *name,int no,Class score);

char *GetName();

int GetNo();

Student *Next;

protected:

char Name[20];

int No;

Class Score ;

};

Student::Student():Next(0){}

char *Student::GetName(){return Name;}

int Student::GetNo(){return No;}

void Student::Set(char *name,int no,Class score)

{ strcpy(Name,name);

No=no;

Score=score;

}

void Student::Infile(ifstream &f)

{ f>>Name>>No>>Score.Chinese>>Score.Math>>Score.English; //将数据输入到文件}

void Student::Ofile(ofstream &of)

{ of<<" "<

}

void Student::Out()

{ cout<

}

class Function //功能类

{public:

Function(); //构造函数

~Function(); //析构函数

void Menu(); //菜单函数

void Add(); //录入学生成绩函数

void Search(); //查询学生成绩函数

void Delete(); //删除学生成绩函数

void Modify(); //修改学生成绩函数

void Show(); //显示学生成绩函数

private:

Student *Student_First;

void Read(); //读取学生成绩函数

void Save(); //保存学生成绩信息函数};

Function::Function()

{ Student_First=new Student;

Read();

}

Function::~Function()

{ delete Student_First;

}

void Function::Add() //录入学生成绩信息函数{ char name[20];

int no;

Class score;

char choose;

Student *f1,*p,*f2;

system("cls");

f1=Student_First;

f2=Student_First->Next;

while(f1->Next)

f1=f1->Next;

do

{ p=new Student;

cout<<"请输入您要添加的学生成绩信息:"<

cout<<"请输入学生姓名:";

cin>>name;

while(f2)

{ if(strcmp(f2->GetName(),name)==0)

{ cout<<"该学生已存在,请确定姓名!\n\n";

cout<<"请输入姓名:";

表格模板-利用单项链表实现简单的学生信息管理 精品

河北工业大学计算机软件技术基础(VC)课程设计报告 一、题目: 利用单项链表实现简单的学生信息管理(07) 二、设计思路 1、总体设计 1)分析程序的功能 创建单项链表保存学生的各项信息,学号、姓名、成绩。并能够完成学生信息的插入、删除及信息的显示功能。 2)系统总体结构: 按照程序要求的功能采用结构化的设计思想,划分为五个功能模块,即创建链表、插入函数、删除函数、显示函数和主函数。 2、各功能模块的设计:说明各功能模块的实现方法 ①头文件:对自己定义的函数进行函数声明。 ②主函数:进行函数的调用,实现各函数的功能,达到预期的目的。 ③函数定义部分:定义各个功能函数,创建链表函数、插入新信息函数、删除信息函数、显 示信息函数。 3、设计中的主要困难及解决方案 1)在插入新信息时,有插入点在表头、中间、表尾三种情况,为此采用讨论的方法,把三种情况进行讨论使其分开进行。 2)在删除信息时,有删除的为头结点和中间结点的情况,采用讨论的方法,把两种情况分开来进行。 4、你所设计的程序最终完成的功能 1)创建链表、插入新信息、删除信息、显示信息。 2)测试数据 ①输入的数据

99812 LiuLifang 91 学号姓名成绩 96085 WangLiPing 77 98120 ZhangLi 75 99912 LiuHai 80 ③删除的数据 学号姓名成绩 99812 liulifang 91 运行结果

三、程序清单 本程序包含creatlist.cpp、insert.cpp、del.cpp、output.cpp、main.cpp、头文件.h六个文件 1、creatlist.cpp文件清单

C++课程设计单链表——学生信息管理系统

学生信息管理系统设计文档 一、设计任务描述 为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了“学生信息管 理系统”软件,该软件适用于所有win dows操作系统,面向广大用户, 界面简洁,操作简单。此软件主要是实现对学生学籍信息进行系统化的管理,可 以对学生基本信息进行添加、删除、查找、修改以及对学生成绩的管理,主要是根据学生的学号及其姓名进行操作的。该软件可以更加方便管理者管理学生学籍信息。 二、功能需求说明 该系统所需要的功能有:1链表的建立; 2、学生信息的插入; 3、学生信息的查询; 4、学生信息的输出; 5、学生信息的修改; 6、学生信息的删除; 7、良好的欢迎选择界面。 三、总体方案设计 一、实现任务的方法 1、在欢迎选择界面中,使用Switch这一选择结构来连接程序的执行和用户的命令; 2、在从学生信息的建立直到删除,都是使用链表的相关知识; 3、在定义学生信息时,建立一个Inform类;在定义学生课程成绩时,自定义了一个achieve结构体;

ST rucr acnieve { int nunber : char nane [10] [10]; float achieveiaent [13]: float xuefen [10]: float 0 : float average ; achieve C): float count average (); struct Inform {chai name[10]: char num[20]: string sex: string: id; string bir; string adr : string tel, achieve ach; void achinput 0 : void achprint 0 ; }; 三、模块划分 (1)链表的建立。 (2)对链表信息的插入。 (3)对链表信息的查找。 (4)对链表信息的输出。 (5)对链表信息的删除。 (6)对链表信息的修改。 课程成绩信息作为附加信息,穿插于各个模块中 三、数据结构说明 一、自定义的数据结构: 1、achieve (课程成绩)用于存放课程成绩信息包括课程数、课程名、 成绩、学分、总分和平均分。 "谍稈数 〃课程容(最參课稈数为nn "成绩 "学专 "总分 "平均分 "默认枸隆雷教 "计算该学生课程的加权平均分(总咸绩/总学分) "元素类型 "姓名 〃学号 〃性别 "身份证号 //出生年月曰 〃家庭地址 "电话号码 "课程咸绩 "谍程成绩输入 "遥程成缢输出 3、结点结构-Nodetype,定义了数据域inform和指针域next; 2、inform (学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。

用链表与文件实现学生成绩管理系统

#include #include #include #include #include using namespace std; struct Class { int Chinese; int Math; int English; }; class Student { public: Student(); void Ofile(ofstream &of); void Infile(ifstream &f); void Out(); void Set(char *name,int no,Class score); char *GetName(); int GetNo(); Student *Next; protected: char Name[20]; int No; Class Score; }; Student::Student():Next(0){} char *Student::GetName() { return Name; } int Student::GetNo() {return No;} void Student::Set(char *name,int no,Class score) { strcpy(Name,name); No=no; Score=score; } void Student::Infile(ifstream &f) { f>>Name>>No>>Score.Chinese>>Score.Math>>Score.English; //将数据输入到文

用链表与文件实现学生成绩管理系统

用链表与文件实现学生成绩管理系统 学生姓名:李卉指导老师:肖增良 摘要学生成绩管理系统是典型的信息管理系统,是学校教务管理的重要组成部分,其处理信息量很大。本课程设计是用C++实现对学生的成绩管理作一个简单的模拟,实质是建立学生成绩单链表,每条记录由姓名、学号与成绩组成,即链表中每个结点由4个域组成,分别为:学号、姓名、成绩、存放下一个结点地址的next域。用菜单选择操作方式完成五项功能分别写成五个函数,插入学生成绩对应建立学生单链表的功能,输出全部学生成绩记录,后三个功能分别对应单链表的查询、修改与删除三大基本操作。该系统中的数据采用线性表中的链式存储结构即单链表来存储,用结构体类型和类类型定义每个学生记录并采用外部文件方式记录数据简便数据的读取与保存。 关键词程序设计;C++;单链表;学生成绩管理系统

1 引言............................................................................................................................................................ 3 1.1 课程设计目的..................................................................................................................................... 3 1.2课程设计内容...................................................................................................................................... 3 1.3课程设计目标...................................................................................................................................... 42系统需求与功能分析..................................................................................................................................... 5 2.1 系统需求分析..................................................................................................................................... 5 2.2系统功能分析...................................................................................................................................... 5 2.3系统性能分析...................................................................................................................................... 63总体结构设计................................................................................................................................................. 7 3.1系统的结构设计.................................................................................................................................. 7 3.2系统管理流程图.................................................................................................................................. 7 4 系统详细设计和系统实现............................................................................................................................ 9 5 系统测试.................................................................................................................................................... 13 6 结束语........................................................................................................................................................ 16参考文献........................................................................................................................................................ 17附录1:结构化设计源程序清单......................................................................................................... 18

单链表的学生成绩管理系统设计与实现

长春建筑学院《数据结构》课程设计(论文) 基于单链表的学生成绩管理系统设计与实现 Design and implementation of the system of student performance management based on single table 年级: 12级 学号: 121500103 姓名: 徐文辉 专业:计算机科学与技术 指导老师: 常大俊 二零一三年十二月

摘要 学生成绩管理系统是典型的信息管理系统,是学校教务管理的重要组成部分,其处理信息量很大。本课程设计是用C++实现对学生的成绩管理作一个简单的模拟,实质是建立学生成绩单链表,每条记录由姓名、学号与成绩组成,即链表中每个结点由4个域组成,分别为:学号、、成绩、存放下一个结点地址的next域。用菜单选择操作方式完成五项功能分别写成五个函数,插入学生成绩对应建立学生单链表的功能,输出全部学生成绩记录,后三个功能分别对应单链表的查询、修改与删除三大基本操作。该系统中的数据采用线性表中的链式存储结构即单链表来存储,用结构体类型和类类型定义每个学生记录并采用外部文件方式记录数据简便数据的读取与保存。 关键词:数据结构,单链表,C语言,学生成绩管理

Abstract Student achievement management system is a typical management information system, is an important part of the school educational administration management, the large amount of information. The curriculum design is used to achieve C++ performance management for the students to make a simplesimulation, the essence is to establish students report list, each recordconsists of name,and grade, namely the linked list in each node iscomposed of 4 domains, respectively: next domain name, student number,grade, put down a node address the. Complete the five functions were written in five function menu to select the mode of operation, into the student achievement established a single list of the output function of students, allstudents record, after the three functions corresponding to single table query,modify and delete the three basic operations. The system data in the linked storage structure of linear table is a single linked list to store, use the structure types and class types define each student records and the use of an external file to read and save data and simple data record.

C语言写的学生成绩管理系统(链表)

#include #include #include struct stud{ long num; char name[20]; float sx; float dx; float ts; float dl; float cx; float zf; float pj; }; struct studcode{ struct stud student; struct studcode *next; }; void menu(); void input(struct studcode **); void output(struct studcode *); void binsearch(struct studcode *); void insert(struct studcode **); void delet(struct studcode **); void good(struct studcode *); void fail(struct studcode *); void sort(struct studcode *); void back(); void main() { char choose; int flag=1; struct studcode *head; head=NULL; printf("请先录入学生成绩信息\n"); printf("输入学生学号姓名高数、英语读写、英语听说、计算机导论和程序设计的成绩\n"); input(&head); while (flag)

{ system("cls"); menu(); printf("请选择:"); getchar(); choose=getchar(); switch(choose) { case '1': output(head); back(); break; case '2': binsearch(head); back(); break; case '3': insert(&head); output(head); back(); break; case '4': delet(&head); output(head); back(); break; case '5': good(head); back(); break; case '6': fail(head); back(); break; case '7': sort(head); output(head); back(); break; case '0': flag=0; printf("\n *** The End! ***\n"); printf("\n ####感谢使用,欢迎再次登录,拜拜!####\n");

基于单链表的学生信息管理系统源代码

//学生信息管理系统 #include #include #include #define NULL 0 #define LEN sizeof(struct student) //建立动态链表.cpp using namespace std; struct student { int num; char name[20]; char sex[5]; float math; float english; int order; struct student *next; }; int n; int male=0; int famale=0; struct student *creat(void) { struct student *head,*p1,*p2; n=0; p1=p2=(struct student *)malloc(LEN); cout<<"下面开始创建链表:"<>p1->num>>p1->name>>p1->sex>>p1->math>>p1->english; head=NULL; while(p1->num!=0) { if(strcmp(p1->sex,"男")==0) male++; else famale++; n++; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=(struct student*)malloc(LEN); cin>>p1->num>>p1->name>>p1->sex>>p1->math>>p1->english; } p2->next=NULL; if(head==NULL) {

C++学生成绩管理系统(完整)

( 二〇一四 年 十 一月 课程设计说明书 本科毕业设计 题 目: 学生成绩管理系统(教师端) 学生姓名: 陈 学 院:工学院 专 业:数字媒体技术 班 级:2013级 指导教师:

目录 一、设计题目(问题)描述和要求 ................................................... - 1 - 二、系统分析与模块设计 ................................................................... - 1 - 三、系统设计 ....................................................................................... - 2 - 1. 系统总体框架 ............................................................................ - 4 - 2. 系统关键算法流程图 ................................................................ - 5 - 四、运行结果 ..................................................................................... - 10 - 五、小结 ............................................................................................. - 10 - 六、参考资料 ..................................................................................... - 20 -

C++课程设计 单链表——学生信息管理系统

C++课程设计单链表——学生信息管理系统

学生信息管理系统设计文档 一、设计任务描述 为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了“学生信息管理系统”软件,该软件适用于所有windows操作系统,面向广大用户,界面简洁,操作简单。此软件主要是实现对学生学籍信息进行系统化的管理,可以对学生基本信息进行添加、删除、查找、修改以及对学生成绩的管理,主要是根据学生的学号及其姓名进行操作的。该软件可以更加方便管理者管理学生学籍信息。 二、功能需求说明 该系统所需要的功能有:1、链表的建立; 2、学生信息的插入; 3、学生信息的查询; 4、学生信息的输出; 5、学生信息的修改; 6、学生信息的删除; 7、良好的欢迎选择界面。 三、总体方案设计 一、实现任务的方法 1、在欢迎选择界面中,使用Switch 这一选择结构来连接程序的执行和用户的命令; 2、在从学生信息的建立直到删除,都是使用链表的相关知识; 3、在定义学生信息时,建立一个Inform 类;在定义学生课程成绩时,自定义了一个achieve 结构体; 二、总体结构

三、模块划分 (1)链表的建立。 (2)对链表信息的插入。 (3)对链表信息的查找。 (4)对链表信息的输出。 (5)对链表信息的删除。 (6)对链表信息的修改。 课程成绩信息作为附加信息,穿插于各个模块中。 三、数据结构说明 一、自定义的数据结构: 1、achieve(课程成绩)用于存放课程成绩信息包括课程数、课程名、成绩、学分、总分和平均分。 2、inform(学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。 3、结点结构-Nodetype,定义了数据域inform和指针域next;

利用单项链表实现简单的学生信息管理

利用单项链表实现简单的学生信息管理 一、题目: 利用单项链表实现简单的学生信息治理(07) 二、设计思路 1、总体设计 1)分析程序的功能 创建单项链表储存学生的各项信息,学号、姓名、成绩。并能够完成学生信息的插入、删除及信息的显示功能。 2)系统总体结构: 按照程序要求的功能采纳结构化的设计思想,划分为五个功能模块,即创建链表、插入函数、删除函数、显示函数和主函数。 2、各功能模块的设计:讲明各功能模块的实现方法 ①头文件:对自己定义的函数进行函数声明。 ②主函数:进行函数的调用,实现各函数的功能,达到预期的目的。 ③函数定义部分:定义各个功能函数,创建链表函数、插入新信息函数、删除信息函数、显 示信息函数。 3、设计中的要紧困难及解决方案 1)在插入新信息时,有插入点在表头、中间、表尾三种情形,为此采纳讨论的方法,把三种情形进行讨论使其分开进行。 2)在删除信息时,有删除的为头结点和中间结点的情形,采纳讨论的方法,把两种情形分开来进行。 4、你所设计的程序最终完成的功能 1)创建链表、插入新信息、删除信息、显示信息。 2)测试数据 ①输入的数据

99812 LiuLifang 91 学号姓名成绩 96085 WangLiPing 77 98120 ZhangLi 75 99912 LiuHai 80 ③删除的数据 学号姓名成绩 99812 liulifang 91 运行结果

三、程序清单 本程序包含creatlist.cpp、insert.cpp、del.cpp、output.cpp、main.cpp、头文件.h六个文件

#include #include"头文件.h" int n; student *creatlist() { student *head; student *p1; student *p2; n=0; head=NULL; p1=new(student); //创建一个新结点 p2=p1; cin>>p1->num>>p1->name>>p1->score; while(p1->num!=0) //链表建立过程终止的判定条件{ n++; head=p1; else p2->next=p1; //原链表结点指向新建结点p2=p1; p1=new(student); cin>>p1->num>>p1->name>>p1->score; } delete(p1); p2->next=NULL; return head; //返回表头 } 2、insert.cpp文件清单 #include #include"头文件.h" student *insert(student *head,student *t) { student *p0; //待插入点 student *p1; student *p2; //p0插入p1之前,p2之后p1=head; p0=t; if(p1==NULL) //原链表是空表 { head=p0; p0->next=NULL; } else

C语言程序设计基于链表的学生成绩管理系统

华北科技学院计算机系综合性实验 实验报告 课程名称C语言程序设计 实验学期2011至2012学年第二学期 学生所在系部计算机系 年级2011专业班级计算机科学与技术B-111 学生姓名学号 任课教师 实验成绩 计算机系制

实验报告须知 学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。 学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内 容、结果及分析等。 教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验 成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及 的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与 该课程的期末考试成绩一同上交到系里存档。 5、 未尽事宜,请参考该课程的实验大纲和教学大 纲。 1、 2、 3、 教师应该填写的内容包括:实验成绩、教师评价等。 4、

《c语言程序设计》课程综合性实验报告开课实验室:基础五2012年7月6日 实验题目基于链表的学生成绩管理系统、实验目的 1、掌握链表的创建、遍历显示和清除; 2、掌握链表数据的文件保存、读取; —、设备与环境 微型计算机、VC++6.0 三、实验内容 1、定义结构体,创建链表 structxs node in txh;

charxm[15]; in tgs; in tyy; in twl; structxs no de* next; }; 2、根据以上链表结点结构,实现以下功能 a、学生学号、姓名、各门成绩的录入; b、链表数据显示及清除; C、链表数据的文件保存与读取; 四、实验结果及分析 1、运行结果

链表实现学生信息菜单管理系统

链表实现学生信息菜单管理 系统 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验名称:链表实现学生信息菜单管理系统 一、实验目的: 1、掌握顺序表结构的实现方式; 2、掌握顺序表常用算法的实现; 3、熟悉利用顺序表解决问题的一般思路; 4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。 二、实验内容: 1、编程完成顺序表的基本操作:建立、删除、查找及显示。 2、按要求完成学生名册管理程序的编写和调试。 三、实验结果: 1、创建: 2、删除:

3、添加: 4、退出: 四、实验中遇到的问题及解决方法: 问题一: 地址传递出错 解决方案: 参考网上资料代码。 问题二: 创建时,停止暂停 解决方案: 输入学号为零时停止输入 问题三: 创建时需要学号姓名成绩都为零才能停止创建 解决方案:占无解决方案 五、实验心得体会: 链表中指针的使用要注意指针的性质,确保地址正确传递,要改变的值正确改变。在编程过程中很容易出现地址传递出错的问题,需要有耐心慢慢排查故障,解决故障。

通过本次实验让我明白了链表的操作使用,加深了我对链表的理解,同时也通过不断地练习提高了编程能力,链表的掌握对于这门课程而言十分重要,在今后的学习中,我需要更加努力,才能更好的掌握和使用链表。 源代码: #include #include #define NULL 0 #define LEN sizeof(struct student) struct student { int num; char name[20]; float score; struct student *next; }; int n; struct student *Create() { struct student *head; struct student *p1 = NULL; struct student *p2 = NULL; n = 0; p1 = (struct student *) malloc (LEN); p2 = p1; if(p1==NULL) { printf ("\nCann't create it, try it again in a moment!\n"); return NULL; } else { head = NULL; printf("请输入第%d个学生学号姓名成绩:\n",n+1); scanf("%d %s %f",&(p1->num),p1->name,&(p1->score)); } while(p1->num != 0) { n += 1; if(n == 1) { head = p1; p2->next = NULL; } else

学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能

/*4. 定义一个结构体数组,存放 10 个学生的学号,姓名,三门课的成绩,编写一程序。应用简单菜单和子函数调用方式实现下面的功能: (1)从键盘输入 10 个学生的以上内容,存入文件 stud.txt (2)浏览显示成绩表(要求显示格式成绩时,格式较规范) (3)将 10 个学生按照平均分数从高到低进行排序,结果存入文件 stud1.txt ( 4)输入任意的一个课程名,分数从高到低进行排序,结果存入文件stud2.txt ( 5)向文件 stud1.txt 中插入一个记录,成绩排序不变,结果存入文件 stud1.txt #include "stdio.h" /* 头文件名*/ */ #inelude "stdlib.h" /*头文件名,因为程序中用到了exit(结束程序)和函数*/ #include "string.h"/*头文件名,因为程序中用到了字符串函数 */ #define N 1000 定义结构体模块 struct student { long num; /* 定义学生学号为长整型 */ char name[20]; /* 定义姓名为字符型,占 12 个字符*/ float math,English,physics,total,average; float TOT_math,TOT_English,TOT_physics,TOT_total,TOT_aver; float aver_math,aver_English,aver_physics,aver_total,aver_average; }student; /* 定义结构体名称为 student*/ 输入初始值模块 void input(struct student *p,int size){ int i; for(i=0;i

数据结构 用链表实现学生信息管理系统

3、4、

7、

#include using namespace std; //实现线性表的链式存储结构的类型定义 typedef int Elemtype; #define OK 1; #define ERROR -1; struct NODE //结点类型 { Elemtype elem; NODE *next; }; struct LINK_LIST //链表类型 { NODE *head; }; //典型操作的算法实现 //初始化链表L int InitList(LINK_LIST *L) { L->head = (NODE*)malloc(sizeof(NODE)); //为头结点分配存储单元if (L->head) {L->head->next=NULL; return OK;} else return ERROR ; } //销毁链表L void DestoryList(LINK_LIST *L) { NODE *p; while (L->head) //依次删除链表中的所有结点 { p=L->head; L->head=L->head->next; free(p); } } //清空链表L void ClearList(LINK_LIST *L) { NODE *p; while (L->head->next){ //p指向链表中头结点后面的第一个结点

p=L->head->next; L->head->next=p->next; //删除p结点 free(p); //释放p结点占据的存储空间 } } //求链表L的长度 int ListLength(LINK_LIST L) { NODE *p; int len; len=0; for(p=L.head;p->next!=NULL; p=p->next) len++ ; return(len); } // 判链表L空否。 int IsEmpty(LINK_LIST L) { if (L.head->next==NULL) return true; else return false; } //()通过e返回链表L中第i个数据元素的内容 void GetElem(LINK_LIST *L,int i,Elemtype *e) { NODE *p; int j; if (i<1||i>ListLength(*L)) exit(-1); //检测i值的合理性 for (p=L->head,j=0; j!=i; p=p->next,j++); p = L->head; for (j=0; jnext; *e=p->elem; //将第i个结点的内容赋给e指针所指向的存储单元中 } //在链表L中检索值为e的数据元素 NODE *LocateELem(LINK_LIST L,Elemtype e) { NODE *p; for (p=L.head->next;p&&p->elem!=e;p=p->next); //寻找满足条件的结点return(p);

学生成绩管理(链表)

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 学生成绩管理(链表) 实验一线性表学生成绩管理(链表) 05111341 班李凌豪1120191263 1.需求分析 1.1.问题重述(1)问题描述设计一个学生成绩管理系统。 主要实现学生信息的录入、添加、修改、删除、排序和查看等基本功能。 (2)具体要求编写一个学生成绩管理程序。 学生成绩以一个学生一条记录的形式存储,每个学生记录包含的信息有序号、学号、姓名及 5 门功课的成绩。 具体功能如下: a. 获取学生成绩。 可以从文件中读取成绩,也可直接录入。 查询学生成绩,输入学生学号或姓名等信息后,显示学生在成绩单中的位置及所有信息。 b. 添加学生成绩,在学生成绩单的指定位置添加学生成绩信息。 c. 修改学生成绩,在学生成绩单中,修改指定学生的成绩信息。 d. 删除学生成绩,在学生成绩单中,删除指定学生的成绩信息。 e. 保存文件。 当学生成绩单发生添加、修改、删除等变化后,都要对最终结果进行保存。 1 / 12

(3)数据结构及算法分析学生成绩可以用单链表存储,方便随时插入和删除学生成绩记录,实现动态管理。 一个学生作为一个结点。 使用链表的基本算法实现学生成绩单的各项管理功能。 1.2.问题分析本题要求用单链表的知识编程实现对学生成绩的管理。 要求既要能从文件读取学生成绩,也可以手动键入学生成绩,要建立单链表来储存获取的学生成绩。 然后,要对获取的学生成绩单进行添加、修改、删除等操作,在操作完后,还要进行保存,保存修改后的成绩单至文件。 2.概要设计 2.概要设计 2.1.抽象数据类型的定义根据链表的特点,本程序将一个学生的成绩及信息作为一个节点,并以此作为本程序的抽象数据类型,具体定义语句如下: struct stu{ char name[20]; char xuehao[10]; int pro1,pro2,pro3,pro4,pro5; struct stu *next; }; 一个节点包括的内容有: 字符型数组 name,用于存放学生的姓名;字符型数组 xuehao 用于存放学生的学号;整形变量 pro1,pro2,pro3,pro4,pro5,用于存储学生的五科成绩(本程序假设各科成绩均为整数);指针变量 next 为节点的指针域,用于存储所指向的下一个节点的地址。 考虑到序号在修改添加等操作时变动较大,故不作为链表节点的数据域内容,而是以节点的序号来作为一个隐藏的数据。

用链表与文件实现学生成绩管理系统

PINGDINGSHANUNIVERSITY 软件学院 项目报告书 课程:专业实训 项目名称: 学生成绩信息管理系统 专业年级: 软件项目10级 姓名: 蒋磊 学号: 101530147 指导教师: 马飞 2018年06月09日 摘要学生成绩管理系统是典型的信息管理系统,是学校教务管理的重要组成部分,其处理信息量很大。本课程设计是用C++实现对学生的成绩管理作一个简单的模拟,实质是建立学生成绩单链表,每条记录由姓名、学号与成绩组成,即链表中每个结点由4个域组成,分别为:学号、姓名、成绩、存放下一个结点地址的next域。用菜单选择操作方式完成五项功能分别写成五个函数,插入学生成绩对应建立学生单链表的功能,输出全部学生成绩记录,后三个功能分别对应单链表的查询、修改与删除三大基本操作。该系统中的数据采用线性表中的链式存储结构即单链表来存储,用结构体类型和类类型定义每个学生记录并采用外部文件方式记录数据简便数据的读取与保存。 1 引言1 1.1 课程设计目的1 1.2课程设计内容1 1.3课程设计目标2 2系统需求与功能分析3 2.1 系统需求分析3

2.2系统功能分析3 2.3系统性能分析4 3总体结构设计4 3.1系统的结构设计4 3.2系统管理流程图5 4 系统详细设计和系统实现5 5 系统测试9 6 结束语11 参考文献12 附录1:结构化设计源程序清单12 1 引言 1.1 课程设计目的 学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生成绩管理系统对学校加强学生成绩管理有着极其重要的作用.因为各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生成绩数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。 因此,开发设计这样一套学生成绩管理软件成为很有必要的事情。 该学生成绩管理系统采用C++语言开发研制,针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。 1.2课程设计内容 在程序设计中,可以用许多种数据结构来处理数据存储,对于该学生管理系统而言

相关文档
相关文档 最新文档