学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx

上传人:b****1 文档编号:615445 上传时间:2023-04-29 格式:DOCX 页数:25 大小:63.13KB
下载 相关 举报
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第1页
第1页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第2页
第2页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第3页
第3页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第4页
第4页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第5页
第5页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第6页
第6页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第7页
第7页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第8页
第8页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第9页
第9页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第10页
第10页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第11页
第11页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第12页
第12页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第13页
第13页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第14页
第14页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第15页
第15页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第16页
第16页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第17页
第17页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第18页
第18页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第19页
第19页 / 共25页
学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx

《学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx(25页珍藏版)》请在冰点文库上搜索。

学生信息管理系统课程设计实验报告之欧阳育创编Word文件下载.docx

num来控制输入,当输入的学号为0时,用break跳出循环。

即if(p1->

num==0)break。

输入值的范围:

学号、年龄为整型longnum;

intage;

姓名为字符串型15个字节charname[15];

性别为字符串型,10个字节charsex[10];

出生为字符串型,20个字节charchushen[20];

地址为字符串型,30个字节chardizhi[30];

邮箱为字符串型,输入11位数字charemail[11]。

二、输出的形式

输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第二行是显示第二个学生的信息。

三、程序所能达到的功能

对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。

(2)学生信息录入功能。

(至少一种查询方式),如按学号查询、按姓名查询等。

(6)添加学生信息。

【测试数据】

输入:

设输入四个学生信息,以最后一个学生的学号为0来结束输入,学号是整型。

预期的输出结果:

预期的输出结果请参见程序后的运行结果。

【数据结构】

排序记录的数据元素表采用一维数组存储结构,每个元素包含8个关键字段,其类型描述为:

#include<

stdio.h>

malloc.h>

//分配size字节的存储区

string.h>

//包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数

#definelensizeof(structstudent)//宏定义求字节运算符

stdlib.h>

//清屏功能

structstudent//声明一个结构体类型structstudent

{

longnum;

//定义学号为long型数据

charname[15];

//定义姓名

intage;

//定义年龄

charsex[3];

//定义性别

charchushen[10];

//定义出生

chardizhi[20];

//定义出生地址

charphone[11];

//定义电话

charemail[20];

//定义邮箱

structstudent*next;

//next是指针变量,指向结构体变量

【算法思想】

利用一维结构体存放所有学生的信息,输入后,在输出时要对学生按学号的高低排序,然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入学号可以找出该学生信息,然后选择修改学生信息,如果来了新学生,还可以添加学生信息。

【总体设计】

主菜单包括:

输入函数、学号排序、浏览函数、删除函数、修改函数、添加函数。

图1-1学生管理总体设计

【模块划分】

一、主函数:

main()

显示系统工作菜单,显示该系统的所有功能。

告诉使用者所有将会调用的被

调函数,再运用选择函数switch即可根据使用者所输入的学号进入对应的功能程序。

并且对菜单做了一个循环,进行完一个选择后,按回车键可进行清屏功能,把屏幕上除了主菜单以外都清空,然后可以继续选择那些可以使用的功能,这样可以方便使用者使用,并且每一步都很清晰。

以8退出系统。

二、输入函数:

structstudent*creat()

在该程序的前面已经定义了一个结构体structstudent用来储存学生的所有信息,(学号、年龄、姓名、性别、出生日期、地址、电话、邮箱)。

定义p1和p2,structstudent*p1,*p2;

p1,p2是指向structstudent类型数据的指针变量。

定义一个n=0,n是输入的个数,主要作用是:

如果输入一个学生信息,首地址指向p1,head=p1;

否则p2的下一个地址指向p1,p2指向p1.p2->

next=p1;

p2=p1;

学号控制循环。

三、排序函数:

voidpaixu(structstudent*head)

用一个for语句做循环,不是NULL的话,指针指向下一个,按学生学号高低排序。

整形直接交换,字符型用strcpy交换,类型相当于两个数据之间的交换。

四、输出函数:

voidprintlist(structstudent*head)

在主函数里边用while控制循环,输出学生信息,然后指针指向下一个。

五、查询函数:

voidfindList_num(structstudent*head)和

voidfindList_num(structstudent*head)

输入一个学号或姓名,做一个for循环,即指针pt指向第一个地址,再定义一个指针p1,让它等于pt,他是紧跟着pt后面的一个指针,让p1->

next不等于NULL,pt指向下一个地址。

这样就能修改最后一个学生信息了。

如果要查询的学生的学号在学生里,就输出该学生信息,否则,就输出查询的学生信息不存在。

六、删除函数:

intshanchu(structstudent*head)

输入一个学号,先找到这个学生的信息。

如果输入的学号在学生信息中,就进行以下循环:

如果输入的是第一个学生的话,就head等于第二个学生信息;

如果输入的学生信息是最后一个,就让倒数第二个等于NULL;

否则的话,就让下一个学生信息覆盖前一个。

如果输入的学号不在学生信息中,输出“此学生信息不存在”。

七、修改函数:

structstudent*delList(structstudent*head,longdel_num)

输入要修改的学号,找到该学生并且输出该学生的信息。

然后屏幕上会出现学生信息的所有项目,用switch进行选择修改的项目。

选择后输入新的学生信息,用它来覆盖原来的学生信息。

八、添加函数:

voidinsert(structstudent*head)

用一个while语句while(p2->

next!

=NULL)控制循环,p2的指针指向下一个地址,即p2=p2->

next;

这是找到最后一个地址,然后开辟动态存储区,p1=(structstudent*)malloc(len);

输入要添加的学号,用学号为0来终止循环,如果不为0,就继续输入学生信息。

【源程序】

#definelensizeof(structstudent)//求字节运算符

FILE*fp;

{intnum;

//学号为整型

charname[20];

//姓名为字符串

chargenter[10];

//性别为字符串

//年龄为整型

charxueli[20];

//学历为字符串

intgongzi;

charaddress[30];

//地址为字符串

charphone[11];

//电话为字符串

};

voidmenu()

printf("

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

);

1、录入学生信息\n"

2、浏览学生信息\n"

3、查询学生信息\n"

4、删除学生信息\n"

printf("

5、插入学生信息\n"

6、修改学生信息\n"

7、排序学生信息\n"

8、退出管理系统\n"

=====================================\n"

}

structstudent*creat()//录入学生信息

intn;

structstudent*head;

structstudent*p1,*p2;

n=0;

p1=p2=(structstudent*)malloc(len);

scanf("

%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s"

&

p1->

num,&

age,p1->

name,p1->

sex,p1->

chushen,p1->

dizhi,p1->

phone,p1->

email);

head=NULL;

while(p1->

num!

=0)

n=n+1;

if(n==1)head=p1;

elsep2->

next=p1;

p2=p1;

p1=(structstudent*)malloc(len);

scanf("

}

p2->

next=NULL;

return(head);

voidinsert(structstudent*head)//插入学生信息

intsearch_num;

structstudent*p,*q,*s;

p=head;

在哪个学生前插入请输入学号:

\n"

%d"

search_num);

while((p!

=NULL)&

&

(p->

=search_num))

{

q=p;

p=p->

s=(structstudent*)malloc(len);

q->

next=s;

system("

cls"

请输入学生信息:

学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n"

s->

age,s->

name,s->

sex,s->

chushen,s->

dizhi,s->

phone,s->

next=p;

voidprintList(structstudent*head)//浏览全部学生信息

structstudent*p;

if(head==NULL)

没有学生信息!

!

else

do

fread(p,len,1,fp);

%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n"

p->

num,p->

age,p->

name,p->

sex,p->

chushen,p->

dizhi,p->

phone,p->

}while(p!

=NULL);

voidfindList_num(structstudent*head,longsearch_num)//按学号查找

if(p!

=NULL)

没有该学生信息!

voidfindList_name(structstudent*head,char*search_name)//按姓名查找

intcmp1=0,cmp=0;

while(p!

if(strcmp(p->

name,search_name)!

cmp++;

cmp1=1;

if(cmp!

=0&

cmp1==0)

voidxiugai(structstudent*p1,longxiu_num)//修改学生信息

structstudent*p2;

while((p2!

(p2->

=xiu_num))

p2=p2->

if(p2!

age,p2->

name,p2->

sex,p2->

chushen,p2->

dizhi,p2->

phone,p2->

else

structstudent*delList(structstudent*head,longdel_num)//删除学生信息

structstudent*p,*q;

q=head;

while(p&

num!

=del_num))

if(p==NULL)

无此学号!

else{

if(p==head)

head=p->

free(p);

next=p->

returnhead;

voidpaixu(structstudent*head)//按学号排序

structstudent*p,*f,*t;

charch[100];

inti;

t=f=p=head;

for(p=head;

p->

=NULL;

p=p->

next)

for(t=head,f=t->

t->

t=t->

next,f=f->

if(t->

num>

f->

0)

i=t->

num;

num=f->

num=i;

age;

age=f->

age=i;

strcpy(ch,t->

name);

strcpy(t->

name,f->

strcpy(f->

name,ch);

sex);

sex,f->

sex,ch);

chushen);

chushen,f->

chushen,ch);

dizhi);

dizhi,f->

dizhi,ch);

phone);

phone,f->

phone,ch);

email,f->

email,ch);

//returnhead;

voidsave(structstudent*head)//保存为磁盘文件

structstudent*p;

if((fp=fopen("

keshe"

"

w"

))==NULL)//打开一个文件

cannotopenthisfile\n"

exit(0);

p=head;

while(p!

fprintf(fp,"

%d\n"

num);

age);

%s\n"

fclose(fp);

structstudent*read()//从磁盘读取文件

structstudent*head=NULL;

structstudent*p=NULL;

structstudent*t=NULL;

inta;

//fp=fopen("

r"

while

(1)

t=(structstudent*)malloc(len);

a=fscanf(fp,"

age,t->

name,t->

sex,t->

chushen,t->

dizhi,t->

phone,t->

if(a==0||a==-1)

returnhead;

if(p==NULL)

p=t;

head=t;

next=t;

voidmain()//主函数

intcode=0;

structstudent*pt=NULL;

for(code=1;

;

code++)//控制循环

menu();

//调用菜单函数

请输入序号:

//提示输入序号

code);

system("

//清屏(下边也是这样的功能)

switch(code)//选择序号进行功能选择

case1:

===========================输入学生信息==============================\n"

---------------------------------------------------------------------\n"

pt=creat();

//调用输入函数

save(pt);

//将数据存储到磁盘中

===========================输入学生信息==============================\n"

************成功输入学生信息***********!

\n\n"

按回车键返回主菜单\n"

getchar();

//按回车键返回

break;

case2:

===========================学生信息表================================\n"

printList(read());

//调用输出函数(是从磁盘中读出的)

=============================

========================================\n"

\n按回车键返回主菜单\n"

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

当前位置:首页 > 医药卫生 > 基础医学

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

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