学生信息管理系统实验报告文档格式.docx

上传人:b****2 文档编号:6109739 上传时间:2023-05-06 格式:DOCX 页数:16 大小:221.49KB
下载 相关 举报
学生信息管理系统实验报告文档格式.docx_第1页
第1页 / 共16页
学生信息管理系统实验报告文档格式.docx_第2页
第2页 / 共16页
学生信息管理系统实验报告文档格式.docx_第3页
第3页 / 共16页
学生信息管理系统实验报告文档格式.docx_第4页
第4页 / 共16页
学生信息管理系统实验报告文档格式.docx_第5页
第5页 / 共16页
学生信息管理系统实验报告文档格式.docx_第6页
第6页 / 共16页
学生信息管理系统实验报告文档格式.docx_第7页
第7页 / 共16页
学生信息管理系统实验报告文档格式.docx_第8页
第8页 / 共16页
学生信息管理系统实验报告文档格式.docx_第9页
第9页 / 共16页
学生信息管理系统实验报告文档格式.docx_第10页
第10页 / 共16页
学生信息管理系统实验报告文档格式.docx_第11页
第11页 / 共16页
学生信息管理系统实验报告文档格式.docx_第12页
第12页 / 共16页
学生信息管理系统实验报告文档格式.docx_第13页
第13页 / 共16页
学生信息管理系统实验报告文档格式.docx_第14页
第14页 / 共16页
学生信息管理系统实验报告文档格式.docx_第15页
第15页 / 共16页
学生信息管理系统实验报告文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生信息管理系统实验报告文档格式.docx

《学生信息管理系统实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统实验报告文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

学生信息管理系统实验报告文档格式.docx

charname[20];

charsex[5];

structdatebirthday;

intscore;

structstudent*next;

其中structdatebirthday;

又借用structdate{};

结构体的成员:

intyear;

intmonth;

intday;

以此来实现学生学号、姓名、性别、出生日期、成绩等信息的存储于处理。

模块二:

ListCreate函数,函数类型为:

structstudent形参:

structstudent*headstructstudent*p返回值:

head指针。

实现链表的建立功能。

模块三:

ListInsert函数,函数类型为:

实现链表节点的插入功能。

模块四:

ListDelete函数,函数类型为:

实现链表节点的删除功能。

模块五:

ListPrint函数,函数类型为:

void形参:

structstudent*head返回值:

实现链表各节点信息的输出功能。

模块六:

ListFind函数,函数类型为:

structstudent*headintid返回值:

无。

遍历链表,查找出符合条件的链表节点,并打印输出。

模块七:

voidmain();

主函数,测试数据,测试链表各节点(学生基本信息)的输出、插入、删除、查找功能。

3、编程思路

一:

数据类型:

1.考虑到学生个人信息包含学号、姓名、性别、出生日期、成绩等信息。

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

2.考虑到要实现多个学生个人信息的管理,可采用结构体数组与链表。

但是由于要对多个学生信息进行信息的插入、删除、查找等操作。

显然结构体数组很难实现以上操作,因此选用链表。

二:

存储结构:

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

相应的以链式存储结构来存储数据。

三:

功能的实现

学生信息的插入功能的实现:

在动态链表中要实现节点数据的插入,只要灵活的改变头一个节点的next指针使它指向要插入节点的当前指针,并使要插入接点的next指针指向要插入位置的下一个节点的当前指针即可,当然要对插入的位置进行分情况讨论,如是插在表头,表中还是表未。

另外还应当注意的是在插入前,要考虑下呆插入链表是否为空。

学生信息的删除功能的实现:

动态链表中节点数据的删除操作与插入操作思路大体相同,

主要思路还是改变指针的指向来实现这一功能。

删除位置同样要分情况讨论,当然也要提前考虑链表是否为空,若为空应当给出“当前链表为空”的相应应答。

另外还要考虑要删除的节点不在链表中的情况,这种情况下,要报错。

学生信息的查找功能的实现:

要查找某个符合一定要求的学生信息,如学号为:

1001。

只要遍历链表,打印输出符合条件的学生信息即可。

当然也要考虑要查找的信息不在链表中的情况,这是系统要报错。

4、总体设计(附类图)

系统的总体设计要考虑到界面友好性,程序的时间复杂度、空间复杂度,以及程序的健壮性等性能指标。

本系统在设计过程中,充分分析考虑了多种可能发生的情况。

并对一些可能会导致系统崩溃的细节问题做了进一步处理。

如在删除学生信息时考虑了表为空的情况等。

总体设计步骤:

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

2.数据的输入处理。

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

4.主函数的定义,在编写主函数时,要求主函数要尽可能的考虑到功能函数的各种极端情况,以便能得出合理的测试结果。

5.程序运行测试。

这一过程中,测试案例的选择尤为重要,选择的案例要有带表性,同时要考虑一些极端案例。

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

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

本系统运用的关键技术是动态链表。

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

要点包括:

1.动态链表的建立。

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

3.动态链表的遍历。

6、源代码

#include<

stdio.h>

string.h>

malloc.h>

structdate

{

intyear;

};

structstudent

intstudentId;

structstudent*ListCreate(intn)

structstudent*head=NULL,*curpt,*prept;

inti;

for(i=1;

i<

=n;

i++)

{

curpt=(structstudent*)malloc(sizeof(structstudent));

printf("

请输入第%d个学生的信息:

\n"

i);

请输入学生学号:

);

scanf("

%d"

&

curpt->

studentId);

请输入学生姓名:

%s"

curpt->

name);

getchar();

请输入学生性别:

sex);

请输入学生成绩:

score);

curpt->

next=NULL;

if(i==1)

head=curpt;

else

prept->

next=curpt;

prept=curpt;

}

returnhead;

}

structstudent*ListInsert(structstudent*head,structstudent*p)

structstudent*curpt,*prept;

if(head==NULL)

head=p;

p->

curpt=head;

while(curpt!

=NULL&

&

studentId<

=p->

studentId)

curpt=curpt->

next;

if(curpt!

=NULL)

if(curpt==head)

next=head;

next=p;

structstudent*ListDelete(structstudent*head,intid)

原表为空!

returnNULL;

studentId!

=id)

head=curpt->

free(curpt);

next=curpt->

学号为%d的学生已被成功删除\n"

id);

学号为%d的学生不存在\n"

voidListPrint(structstudent*head)

structstudent*p=head;

while(p!

/*printf("

输出学生学号:

%d\n"

p->

输出学生姓名:

%s\n"

输出学生性别:

输出学生成绩:

*/

学号:

%d姓名:

%s性别:

%s分数%d\n"

studentId,p->

name,p->

sex,p->

p=p->

voidListFind(structstudent*head,intid)

if((p->

studentId)==id)

{

break;

p=p->

voidmain()

structstudent*head,*p;

intn,v,k,m;

+----+\n"

||\n"

|学生信息管理系统|\n"

请输入学生人数:

n);

head=ListCreate(n);

原链表为:

ListPrint(head);

请输入要查找的学号:

v);

ListFind(head,v);

p=(structstudent*)malloc(sizeof(structstudent));

请输入要插入学生的信息:

%d%s%s%d"

p->

sex,&

head=ListInsert(head,p);

输出插入节点之后的链表:

请输入要删除的学生的学号:

k);

head=ListDelete(head,k);

输出删除节点后的链表:

m);

ListFind(head,m);

7、测试(主界面及各功能模块的运行图及说明)

(1)输入的主界面:

(2)输出学生的信息:

(3)查找功能的实现:

(4)增加功能的实现:

(5)排序功能的实现:

(6)删除功能的实现:

8、系统评价及展望

因学生信息管理系统需要构造出增加功能,所以本系统给出以链表的形式进行解决问题,避免了数组对数据的局限性,采用结构体、链表等知识解决了关于学生信息如:

姓名、学号、性别、成绩等信息的管理,实现了增、删、减、查等基本操作。

若能更好的利用库的输入输出等知识该程序将会进展地更好。

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2