有头头指针双向链.docx

上传人:b****8 文档编号:9676682 上传时间:2023-02-05 格式:DOCX 页数:57 大小:23.79KB
下载 相关 举报
有头头指针双向链.docx_第1页
第1页 / 共57页
有头头指针双向链.docx_第2页
第2页 / 共57页
有头头指针双向链.docx_第3页
第3页 / 共57页
有头头指针双向链.docx_第4页
第4页 / 共57页
有头头指针双向链.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

有头头指针双向链.docx

《有头头指针双向链.docx》由会员分享,可在线阅读,更多相关《有头头指针双向链.docx(57页珍藏版)》请在冰豆网上搜索。

有头头指针双向链.docx

有头头指针双向链

有头结点的双向链表(只有头指针)

/*说明:

不同类型的结构在定义和存盘及装载时算法不同*/

#include

#include

#include

/*结构定义*/

typedefstructnode

{

charnumb[15];/*编号*/

charname[15];/*姓名*/

intage;/*年龄*/

charsex[2];/*性别*/

floatywcj;/*语文成绩*/

floatsxcj;/*数学成绩*/

floatyycj;/*英语成绩*/

floatzcj;/*总成绩*/

structnode*next;/*结构指针*/

structnode*pre;

}LNode,*Link;

/*变量定义*/

LNode*head,*p;

charchs,ch,sname[15];

/*函数说明*/

intmenu_select();/*主程序选择菜单*/

intmenu_delselect();/*删除选择菜单*/

intmenu_inselect();/*插入选择菜单*/

intmenu_findselect();/*查找选择菜单*/

voidmenu_prog();/*主程序执行菜单*/

voidmenu_delprog();/*删除执行菜单*/

voidmenu_inprog();/*插入执行菜单*/

voidmenu_findprog();/*查找执行菜单*/

voidplaypasword(char*s);/*密码采用*号表示*/

voidsetpasword();/*建立密码*/

voidmadpasword();/*修改密码*/

voidsave();/*保存文件*/

voidload();/*装载文件*/

LNode*inilink(LNode*head);/*初始化*/

voidsetlink(LNode*head);/*建立链表*/

voidprintlink(LNode*head);/*输出链表*/

voidprintlinks(LNode*head);/*逆向输出链表*/

voiddistroylink(LNode*head);/*消链表*/

voidinsert(LNode*head);/*插入尾部数据*/

voidinserts(LNode*head);/*插入任意位置数据*/

voiddelnumb(LNode*head);/*删除编号*/

voiddelname(LNode*head);/*删除姓名*/

LNode*findnumb(LNode*head);/*查找编号*/

LNode*findname(charstrname[],LNode*p);/*查找姓名*/

voidsortdata(LNode*head);/*数据排序*/

voidmadedata(LNode*head);/*修改数据*/

voidsortsdata(LNode*head);/*数据统计*/

intflagint(charstrnum[]);/*判字串中是否均为数字*/

intflagints(charstrnum[]);/*判字串中是否为数字或小数点*/

main()

{/*主程序*/

FILE*fp;

charcha[20],chb[20];

inti=0;

fp=fopen("pasword.exe","rb");

if(fp==NULL)setpasword();

elsefclose(fp);

head=NULL;/*头指针初值为空*/

clrscr();/*清屏*/

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("************************************\n");

printf("**\n");

printf("*数据结构课程设计实例*\n");

printf("**\n");

printf("*学生成绩管理系统*\n");

printf("*(有头双链表)*\n");

printf("**\n");

printf("*作者:

孙俊杰*\n");

printf("**\n");

printf("*2008年1月1日*\n");

printf("**\n");

printf("*初始密码:

1234*\n");

printf("**\n");

printf("*数据库名:

ee.dat*\n");

printf("**\n");

printf("************************************\n");

printf("\n");

printf("\n");

fp=fopen("pasword.exe","rb");

fgets(cha,81,fp);

printf("请输入密码:

");

playpasword(chb);

while(strcmp(cha,chb)<0||strcmp(cha,chb)>0)

{

i++;

if(i==3)

{

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("************************************\n");

printf("**\n");

printf("*密码错误无权使用!

!

!

*\n");

printf("**\n");

printf("*谢谢*\n");

printf("**\n");

printf("**\n");

printf("*如想使用本软件请与作者联系*\n");

printf("**\n");

printf("*2007年1月1日*\n");

printf("**\n");

printf("************************************\n");

printf("\n");

printf("\n");

scanf("%*c");

exit(0);

}

printf("密码错误!

!

!

\n");

printf("请输入密码:

");

playpasword(chb);

}

menu_prog();

}

voidmenu_prog()

{/*选项菜单执行系统*/

for(;;)

{

switch(menu_select())

{

case1:

if(head!

=NULL)

{

printf("\n系统中已经存在数据库!

不能新建立数据库!

!

!

");

printf("\n请退出系统后重新操作!

!

!

");

printf("\n");

printf("按任意键继续.........");

getch();

break;

}

else{

head=inilink(head);/*初始化链表算法*/

setlink(head);/*建立链表算法*/

if(head!

=NULL&&head->next!

=NULL)printlink(head);/*输出链表

算法*/

elseif(head->next==NULL)

{

free(head);head=NULL;

}

printf("\n");

printf("按任意键继续.........");

getch();

break;

}

case2:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

printlink(head);/*显示数据算法*/

printlinks(head);/*逆向输出链表*/

printf("\n");

}

printf("按任意键继续.........");

getch();

break;

case3:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

menu_delprog();/*调用删除窗口*/

}

printf("按任意键继续.........");

getch();

break;

case4:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

menu_inprog();/*调用插入窗口*/

}

printf("按任意键继续.........");

getch();

break;

case5:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

menu_findprog();/*调用查找窗口*/

}

printf("按任意键继续.........");

getch();

break;

case6:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

madedata(head);/*修改算法*/

}

printf("按任意键继续.........");

getch();

break;

case7:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

sortdata(head);/*排序算法*/

}

printf("按任意键继续.........");

getch();

break;

case8:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

sortsdata(head);/*统计算法*/

}

printf("按任意键继续.........");

getch();

break;

case9:

madpasword();/*修改密码*/

printf("按任意键继续.........");

getch();

break;

case10:

save();/*将程序中数据保存到磁盘文件中*/

printf("按任意键继续.........");

getch();

break;

case11:

if(head!

=NULL)

{

printf("\n系统中已经存在数据库!

不能打开新数据库!

!

!

");

printf("\n请退出系统后重新操作!

!

!

");

printf("\n");

printf("按任意键继续.........");

getch();

break;

}

else{

load();/*将磁盘文件内容装载到内存中*/

printf("按任意键继续.........");

getch();

break;

}

case12:

if(head!

=NULL)

{

printf("\n是否保存内存中的数据?

(y/n):

");

scanf("%c%*c",&ch);

if(ch=='y')save();/*将程序中数据保存到磁盘文件中*/

distroylink(head);

}

exit(0);

}

}

}

voidmenu_delprog()

{/*删除菜单执行系统*/

inti;

for(;;)

{

i=menu_delselect();

switch(i)

{

case1:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

delnumb(head);/*删除编号算法*/

}

printf("按任意键继续.........");

getch();

break;

case2:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

delname(head);/*删除姓名算法*/

}

printf("按任意键继续.........");

getch();

break;

case3:

break;

}

if(i==3)break;

}

}

voidmenu_inprog()

{/*插入菜单执行系统*/

inti;

for(;;)

{

i=menu_inselect();

switch(i)

{

case1:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

insert(head);/*插入尾部数据算法*/

}

printf("按任意键继续.........");

getch();

break;

case2:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{

inserts(head);/*插入任意位置数据算法*/

}

printf("按任意键继续.........");

getch();

break;

case3:

break;

}

if(i==3)break;

}

}

voidmenu_findprog()

{/*查找菜单执行系统*/

inti;

for(;;)

{

i=menu_findselect();

switch(i)

{

case1:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{/*编号查找算法*/

ch='y';

while(ch=='y')

{

p=findnumb(head);

if(p!

=NULL)

{

printf("编号姓名年龄性别语文成绩数

学成绩英语成绩总成绩\n");

printf("%s%8s%6d%6s%11.2f%11.2f%11.2f%11.2f\n",p-

>numb,p->name,p->age,p->sex,p->ywcj,p->sxcj,p->yycj,p->zcj);

}

elseprintf("数据库中无此编号的数据!

!

!

");

printf("\n是否重新查找另一个编号的记录?

(y/n):

");

scanf("%c%*c",&ch);

}

}

printf("按任意键继续.........");

getch();

break;

case2:

if(head==NULL)printf("请先建立链表后再进行操作!

");

else{/*姓名查找算法*/

printlink(head);

chs='y';ch='y';

while(chs=='y')

{

printf("请输入要查找记录的姓名:

");

gets(sname);

p=head->next;

while(ch=='y')

{

p=findname(sname,p);

if(p!

=NULL)

{

printf("编号姓名年龄性别语文成绩

数学成绩英语成绩总成绩\n");

printf("%s%8s%6d%6s%11.2f%11.2f%11.2f%11.2f\n",p-

>numb,p->name,p->age,p->sex,p->ywcj,p->sxcj,p->yycj,p->zcj);

printf("\n是否继续查找相同姓名的记录?

(y/n):

");

scanf("%c%*c",&ch);

if(ch=='y')p=p->next;

}

else{

printf("查找结束或该数据库中无此姓名的记录!

!

!

");

break;

}

}

printf("\n是否重新进行查找操作?

(y/n):

");

scanf("%c%*c",&chs);

}

}

printf("按任意键继续.........");

getch();

break;

case3:

break;

}

if(i==3)break;

}

}

intmenu_select()

{/*选项菜单系统*/

chars[8];

intc;

clrscr();/*清屏*/

printf("\n");

printf("\n");

printf("************************************\n");

printf("**\n");

printf("**\n");

printf("*有头双向链表基本操作窗口*\n");

printf("**\n");

printf("**\n");

printf("************************************\n");

printf("\n");

printf("01:

学生成绩库的建立操作\n");

printf("02:

学生成绩库的显示操作\n");

printf("03:

学生成绩库的删除操作\n");

printf("04:

学生成绩库的插入操作\n");

printf("05:

学生成绩库的查找操作\n");

printf("06:

学生成绩库的修改操作\n");

printf("07:

学生成绩库的排序操作\n");

printf("08:

学生成绩库的统计操作\n");

printf("09:

修改系统的密码操作\n");

printf("10:

将数据存入磁盘文件\n");

printf("11:

将磁盘文件装入内存\n");

printf("12:

退出系统\n");

do{

printf("\n");

printf("输入你的选择号:

1---12:

");

gets(s);

c=atoi(s);

}while(c<0||c>12);

return(c);

}

intmenu_delselect()

{/*删除菜单系统*/

chars[8];

intc;

clrscr();/*清屏*/

printf("\n");

printf("\n");

printf("************************************\n");

printf("**\n");

printf("**\n");

printf("*学生成绩库的删除操作窗口*\n");

printf("**\n");

printf("**\n");

printf("************************************\n");

printf("\n");

printf("01:

按编号删除记录\n");

printf("02:

按姓名删除记录\n");

printf("03:

退出\n");

do{

printf("\n");

printf("输入你的选择号:

1---3:

");

gets(s);

c=atoi(s);

}while(c<0||c>3);

return(c);

}

intmenu_inselect()

{/*插入菜单系统*/

chars[8];

intc;

clrscr();/*清屏*/

printf("\n");

printf("\n");

printf("************************************\n");

printf("**\n");

printf("**\n");

printf("*学生成绩库的插入操作窗口*\n");

printf("**\n");

printf("**\n");

printf("************************************\n");

printf("\n");

printf("01:

插入到数据库尾部\n");

printf("02:

插入到任意位置处\n");

printf("03:

退出\n");

do{

printf("\n");

printf("输入你的选择号:

1---3:

");

gets(s);

c=atoi(s);

}while(c<0||c>3);

return(c);

}

intmenu_findselect()

{/*查找菜单系统*/

chars[8];

intc;

clrscr();/*清屏*/

printf("\n");

printf("\n");

printf("************************************\n");

printf("**\n");

printf("**\n");

printf("*学生成绩库的查找操作窗口*\n");

printf("**\n");

printf("**\n");

printf("************************************\n");

pr

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

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1