学生信息管理系统实验报告

  • 格式:doc
  • 大小:363.50 KB
  • 文档页数:18

下载文档原格式

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

(此文档为word格式,下载后您可任意编辑修改!) 面向对象程序设计大作业

------学生信息管

理系统

学院名称信息科学与工程学院

专业班级数学大类2011级2班

学生姓名魏仿

学号

指导教师孙红梅

完成时间: 2013 年 5 月 29 日

学生信息管理系统

1、编程目的

为方便学生信息的管理,特编写这个程序方便操作学生信息管理系统。实现对学生姓名、学号、性别、成绩等信息的管理,可以实现学生的增加、删、查等多种功能的操作。

2、系统简介

本系统实现学生信息的管理,以动态链表、结构体数据类型来实现数据的存储与加工,利用链表来实现学生信息的插入、删除、查找功能。

主要分7个模块:

模块一:

结构体的定义,定义struct student{};struct date{};结构体struct student{};数据成员包括:int studentId; char name[20]; char sex[5]; struct date birthday; int score; struct student *next; 其中 struct date birthday;

又借用struct date{};结构体的成员:int year; int month; int day;以此来实现学生学号、姓名、性别、出生日期、成绩等信息的存储于处理。

模块二:

ListCreate函数,函数类型为:struct student 形参:struct student *();主函数,测试数据,测试链表各节点(学生基本信息)的输出、插入、删除、查找功能。

3、编程思路

一:数据类型:

1.考虑到学生个人信息包含学号、姓名、性别、出生日期、成绩等信息。因此采用结构体类型,定义学生个人信息结构体,并定义学生学号、姓名、性别、出生日期、成绩等数据成员。

2.考虑到要实现多个学生个人信息的管理,可采用结构体数组与链表。但是由于要对多个学生信息进行信息的插入、删除、查找等操作。显然结构体数组很难实现以上操作,因此选用链表。

二:存储结构:

选用链表之后,考虑其存储结构,由于要实现信息的插入、删除、查找等功能,显然动态链表更适合。相应的以链式存储结构来存储数据。

三:功能的实现

学生信息的插入功能的实现:在动态链表中要实现节点数据的插入,只要灵活的改变头一个节点的next指针使它指向要插入节点的当前指针,并使要插入接点的next指针指向要插入位置的下一个节点的当前指针即可,当然要对插入的位置进行分情况讨论,如是插在表头,表中还是表未。另外还应当注意的是在插入前,要考虑下呆插入链表是否为空。

学生信息的删除功能的实现:动态链表中节点数据的删除操作与插入操作思路大体相同,

主要思路还是改变指针的指向来实现这一功能。删除位置同样要分情况讨论,当然也要提前考虑链表是否为空,若为空应当给出“当前链表为空”的相应应答。另外还要考虑要删除的节点不在链表中的情况,这种情况下,要报错。

学生信息的查找功能的实现:要查找某个符合一定要求的学

生信息,如学号为:1001。

只要遍历链表,打印输出符合条件的学生信息即可。当然也要考虑要查找的信息不在链表中的情况,这是系统要报错。

4、总体设计(附类图)

系统的总体设计要考虑到界面友好性,程序的时间复杂度、空间复杂度,以及程序的健壮性等性能指标。本系统在设计过程中,充分分析考虑了多种可能发生的情况。并对一些可能会导致系统崩溃的细节问题做了进一步处理。如在删除学生信息时考虑了表为空的情况等。

总体设计步骤:

1.数据结构与存储结构的选择。

2.数据的输入处理。

3.程序功能的实现,功能函数的声明与定义。

4.主函数的定义,在编写主函数时,要求主函数要尽可

能的考虑到功能函数的各种极端情况,以便能得出合

理的测试结果。

5.程序运行测试。这一过程中,测试案例的选择尤为重

要,选择的案例要有带表性,同时要考虑一些极端案

例。

6.程序的调试与进步完善。

5、关键技术说明(动态链表、指针、思想)

本系统运用的关键技术是动态链表。动态链表在初始时必须分配足够的空间, 也就是空间大小是静态的, 在进行插入和删除时则不需要移动元素, 修改指针域即可,所以仍然具有链表的主要优点,链表结构可以是动态地分配存储的,即在需要时才开辟结点的存储空间,实现动态链接。

要点包括:

1.动态链表的建立。

2.链表节点的插入与删除。

3.动态链表的遍历。

6、源代码

#include

{

struct student *;i++)

{

curpt=(struct student *)malloc(sizeof(struct student));

printf("请输入第%d个学生的信息:\n",i);

printf("请输入学生学号:\n");

scanf("%d",&curpt->studentId);

printf("请输入学生姓名:\n");

scanf("%s",curpt->name);getchar();

printf("请输入学生性别:\n");

scanf("%s",curpt->sex);getchar();

printf("请输入学生成绩:\n");

scanf("%d",&curpt->score);

curpt->next=NULL;

if(i==1)

");

return NULL;

}

else

{

curpt=",id);