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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生信息管理系统设计文档

一、设计任务描述

为了实现学籍管理的简单化,我们基于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 (学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。

//构造函数 〃析构函数 〃建立链表 //插入学生信息 //删除学生信息 //查找 //修改

〃输出信息 //声明头指针

HodrtTii"?

b-^riesrt-nULL,

a _>nBKl-b; p 口 ; \匚 CDUT«削建宁右? ClIl i >ES ;

struct Nodetype //结点结构

{inform data; "数据域

Nodetvpe 〃指针域

};

二、类

Student 用于存放处理学生信息的各个功能函数,private 成员是链表的头指针

class Student {public :

Student (); ^Student (); void creat (); void insert (); void del 0 ; void search (), void modifyO , void Display 0 ; private :

Xodetype ^head;

四、各模块设计说明

'、建立:

首先:建立一个空链表:

Stude nt::Stude nt() {head=new Nodetype; head-> next=NULL; 表明这是一个空链表

coutvv'请建立链表\n"; }

然后建立链表

gutfC"吉粧h 寿庭堆址:匹”: cin>>3:・;=dr

ccut'K"ffi 入电诸号码當"T .

1 el.

oaufc

C 1K >)C ;

(c=/ | [ c=?-!

r )

[a azhiiiput [);

"创益一今戲韦电三并将该韦电地址侔存在抱軒变誉b 申 ■V 牠丄湎换1T 得至侶技作ZJb 却歎掘加

使结点戲合终在链表的最后面

E.两个对象正常输出

、添加:按照学号从小到大的顺序插入:

s=iiew Xodetvpe;

s->daTa=s;

q=head.

p^q-'/nerXt;

irhi le(pl =NUHAj6strcnp (p->data, num, x. nuuO <0)

■q=p

p=p->next;} 〃迪历琵表查找梵应插入的位匿亘到找的某书直的数据城比输入£学号

s~ ^next^p: ” _______ __

q->next=s;〉I 插入新结点£

cout«*添:山成功'是否维续奪加(Y/?4)*«en£ll; cin>>cs■

}

三、输出:将链表的数据输出,由于上述操作,输出时会按照学号从小到大的顺序输出。

四、查找:利用学号和姓名两种方式进行查找,查找时主要是遍历链表进行判断while(p!=NULL&&(d==1 &&strcmp(i nput,p->data .n um)!=0)||(d==2&&strcmp(i np ut,p->data .n ame)!=0))

{p=p->n ext;

} 〃遍历链表查找符合要求的节点

五、删除:利用节点的删除操作,找到链表中第i-1个结点,修改其指向后继的指针:

q = p->n ext;

p->n ext = q->n ext;

delete(q);

六、更改:利用查找的操作,查到后在进行重新输入的操作;

五、测试情况说明

测试一:学生信息的输入和输出都正常,但是查找、删除和修改时都只能对第一个数据进行操作,如下图所示:

cT]

地it;派匕^^3 = 657668?

中的数据输岀如下;

:朱方菠

'证号=3站£?6鲫强

日:19920924 庭芒止

匕浙江幵此话是■

刁弓:百咋肚溯日

相关文档
最新文档