学生信息管理分析系统C语言实验报告Word文档格式.docx
- 文档编号:3054862
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:16
- 大小:18.27KB
学生信息管理分析系统C语言实验报告Word文档格式.docx
《学生信息管理分析系统C语言实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生信息管理分析系统C语言实验报告Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
4.编辑源程序(使用结构体、定义相应的数据类型、实现链表的基本功能)->
调试;
5.在组建选项中点击执行【tian.exe】
(或者Ctrl+F5)执行程序.
6.程序没有错误,正常执行tian.exe,显示学生信息管理系统。
实验结果:
调试无误,正常运行tian.exe,显示学生信息管理系统操作页面。
可以实现一下操作:
1.输入学生信息
2.查询信息
3.浏览学生信息
4.插入学生信息
5.删除学生信息
6.退出系统
疑难小结:
1.如何定义一个结构体;
解决方案:
用typedefstructstd_info{}定义所需的结构体。
2.如何定义指向结构体的指针;
用typedefstructnode{
STD_DATEstudent;
structnode*next;
}LINK_LIST;
定义指向结构体的指针。
通过此实验掌握了
1.利用LINK_LIST*CreatLink(){}创建链表函数。
2.利用voidprintfnode(LINK_LIST*thenode){}输出节点学生信息。
3.利用voidfindnode(LINK_LIST*head){}在头文件中查找匹配的学生信息节点。
主要算法和程序清单:
#include<
stdio.h>
malloc.h>
string.h>
windows.h>
typedefstructDay{
intyear;
intmon;
intday;
}DAY;
//定义一个学生生日结构体
typedefstructstd_info
{
intnum;
charname[81];
intage;
intgender;
DAYbirthday;
charaddress[256];
unsignedlongphonenumber;
charEmail[256];
//定义了线性链表的节点
}STD_DATE;
//定义一个学生信息结构
typedefstructnode{
//定义指向结构体的指针
}LINK_LIST;
LINK_LIST*Creatnode(LINK_LIST*head)//初始化函数
LINK_LIST*p,*newnode;
p=head;
//指向头节点
newnode=(LINK_LIST*)malloc(sizeof(LINK_LIST));
//申请一个内存空间
printf("
学号:
"
);
scanf("
%d"
&
newnode->
student.num);
while(p)
{
if(p->
student.num==newnode->
student.num)
{
printf("
输入学号重复,请重新输入~\n"
p=head;
scanf("
continue;
}
p=p->
next;
}
姓名:
//调用printf()函数输出
fflush(stdin);
//清空输入缓冲区
gets(newnode->
student.name);
年龄:
student.age);
性别(1.男,2.女):
student.gender);
出生年月(YYYY-MM-DD):
%d-%d-%d"
student.birthday.year,
&
student.birthday.mon,
student.birthday.day);
地址:
student.address);
电话号码:
%lu"
student.phonenumber);
E-mail:
student.Email);
returnnewnode;
}
LINK_LIST*CreatLink()//创建链表函数
LINK_LIST*head=NULL,*Linkend=NULL,*p=NULL;
//初始化链表head是头指针指向链表的对头p肯定是遍历指针
intn,i;
请输入需要录入的学生人数\n"
n);
for(i=0;
i<
n;
i++)
{printf("
请录入第%d位学生的信息:
\n"
i+1);
p=Creatnode(head);
if(head)
Linkend->
next=p;
else
head=p;
Linkend=p;
if(Linkend!
=NULL)
next=NULL;
returnhead;
voidprintfnode(LINK_LIST*thenode)//输出节点学生信息
if(thenode==NULL)
printf("
该信息为空\n"
return;
学号:
%d\n"
thenode->
姓名:
%s\n"
年龄:
if(thenode->
student.gender==1)
性别:
男\n"
else
女\n"
出生年月:
%d年%d月%d日\n"
thenode->
地址:
%lu\n"
return;
voidfindnode(LINK_LIST*head)//查找匹配的学生信息节点
inttype=0;
intnumber=0;
charname[81]={0};
LINK_LIST*p;
if(p==NULL)
请先录入学生信息\n"
请选择查询方式\n(1、按学号\n2、按姓名):
type);
if(type==1)
请输入学号:
scanf("
number);
while(p)
if(p->
student.num==number)
{
printfnode(p);
return;
}
p=p->
没有找到该学号学生信息\n"
elseif(type==2)
请输入学生姓名:
fflush(stdin);
gets(name);
if(strcmp(p->
student.name,name)==0)
没有找到该%s的学生信息\n"
name);
voidprintfList(LINK_LIST*head)//打印链表
inti=0;
\n第%d位学生:
++i);
printfnode(p);
p=p->
intInsertnode(LINK_LIST*head)//插入学生信息节点
LINK_LIST*p,*newnode=NULL;
return0;
newnode=Creatnode(head);
while(p->
next)
newnode->
next=p->
p->
next=newnode;
return1;
intcopystd_date(STD_DATE*dest,STD_DATE*source)
dest->
num=source->
num;
memset(dest->
name,0,81);
address,0,256);
Email,0,256);
strcpy(dest->
name,source->
name);
address,source->
address);
Email,source->
Email);
age=source->
age;
birthday.year=source->
birthday.year;
birthday.mon=source->
birthday.mon;
birthday.day=source->
birthday.day;
gender=source->
gender;
phonenumber=source->
phonenumber;
intDeletenode(LINK_LIST*head,LINK_LIST*delnode)//删除特定节点
LINK_LIST*p,*del;
del=delnode;
p=delnode->
if(del==NULL)
要删除的信息不存在\n"
p=head;
while(p->
next!
=delnode)
p->
free(del);
del=NULL;
return1;
del->
copystd_date(&
del->
student,&
p->
student);
free(p);
p=NULL;
voidDeletestd(LINK_LIST*head)//询问所要要删的节点调用上面的删除节点函数
intnum=0;
请输入要删除第几个学生:
num);
//输入函数
num-1;
if(p==NULL)
break;
if(p)
Deletenode(head,p);
删除成功\n"
没有找到该学生"
voidtitle()
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"
@学生信息管理系统@\n"
@[1]输入学生信息@\n"
@[2]查询信息@\n"
@[3]浏览学生信息@\n"
@[4]插入学生信息@\n"
@[5]删除学生信息@\n"
@[6]退出系统@\n"
@(具体操作请选择相应数字)@\n"
return;
intmain()
intfindnum=0;
LINK_LIST*head=NULL;
LINK_LIST*p=NULL;
while
(1)
title();
//scanf表示从键盘输入指定格式的数据
switch(num)//C语言中它经常跟Case一起使用,是一个判断选择代码。
其功能就是控制业务流程流转的
case1:
head=CreatLink();
break;
//跳出当前语句
case2:
findnode(head);
break;
case3:
printfList(head);
case4:
Insertnode(head);
case5:
Deletestd(head);
case6:
gotoend;
default:
\n请按回车键继续\n"
//清空输入缓冲区,通常是为了确保不影响后面的数据读取
getchar();
system("
cls"
//调用系统命令cls就是清楚屏幕
end:
while(head)
head=head->
free(p);
p=NULL;
}
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 分析 系统 语言 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)