线性表应用实例数据结构.docx
《线性表应用实例数据结构.docx》由会员分享,可在线阅读,更多相关《线性表应用实例数据结构.docx(33页珍藏版)》请在冰豆网上搜索。
线性表应用实例数据结构
数据结构实例程序
————线性表的应用
一、图书管理程序一
二、图书管理程序二
三、学生管理程序
四、学生成绩管理程序
五、工资管理程序
六、汽车管理程序
#include<>
#definelensizeof(Book)
typedefstructBook{
charno[8];
d==i)
{
printf("书名:
%s\n",books[n].name);
printf("作者:
%s\n",books[n].author);
printf("存数:
%d\n",books[n].store);
printf("总数:
%d\n",books[n].total);
returnn;
}
printf("\n输入有错或图书序号不存在.\n");
return-1;
voidbook_out(void)
intn,s,l,d;
page_title("借书");
if((n=search_book())!
=-1&&books[n].store>0)
printf("请输入借书证号:
");
scanf("%d",&s);
printf("请输入可借天数:
scanf("%d",&d);
for(l=0;l<10;l++)
if(books[n].usr[l]==0)
books[n].usr[l]=s;
books[n].days[l]=d;
break;
books[n].store--;
if(n!
=-1&&books[n].store==0)printf("此书已经全数借出.\n");
return_confirm();
voidbook_in(void)
intn,s,l;
page_title("还书");
=-1&&books[n].store{printf("借阅者图书证列表:\n");for(l=0;l<10;l++)if(books[n].usr[l]!=0)printf("[%d]-%d天\n",books[n].usr[l],books[n].days[l]);printf("请输入借书证序号:");scanf("%d",&s);for(l=0;l<10;l++){if(books[n].usr[l]==s){books[n].usr[l]=0;books[n].days[l]=0;break;}}books[n].store++;}if(n!=-1&&books[n].store==books[n].total)printf("全数入藏.\n");return_confirm();}voidbook_add(void){intn;page_title("注册书");for(n=0;n<100;n++)if(books[n].id==0)break;printf("序号:");scanf("%d",&books[n].id);printf("书名:");scanf("%s",&books[n].name);printf("作者:");scanf("%s",&books[n].author);printf("数量:");scanf("%d",&books[n].total);books[n].store=books[n].total;return_confirm();}voidbook_del(void){intn;page_title("注销书");if((n=search_book())!=-1)books[n].id=0;printf("该书已注销.\n");return_confirm();}voidmain(void){menu:page_title("菜单");printf("请按以下要求选择操作\n\n");printf("1借书\n2还书\n\n");printf("3注册书\n4注销书\n\n");printf("\n0退出\n");switch(getch()){case'1':book_out();break;case'2':book_in();break;case'3':book_add();break;case'4':book_del();break;case'0':exit(0);}gotomenu;}三、学生管理程序#include<>#include<>#include<>#include<>#defineMAXSIZE100typedefstruct{charnum[10];charname[20];charsex[5];intscore;}DataType;typedefstruct{DataTypestu[MAXSIZE];intlength;}sequenlist;intmenu_select(){intsn;printf("\n学生信息管理系统\n");printf("=========================================\n");printf("********1.学生信息线性表的成立********\n");printf("********2.插入学生信息********\n");printf("********3.查询学生信息********\n");printf("********4.删除学生信息********\n");printf("********5.输出所有学生信息********\n");printf("********0.退出管理系统********\n");printf("==========================================\n");printf("请选择0-5:\n");for(;;){scanf("%d",&sn);if(sn<0||sn>5)printf("输入错误,重选0-5\n");elsebreak;}returnsn;}voidcreateList(sequenlist*L){intn,i;printf("有几位学生?请输入:\n");fflush(stdin);scanf("%d",&n);printf("请输入这%d位学生的信息:\n",n);for(i=1;i<=n;i++){printf("第%d位学生:",i);printf("\n学号姓名性别成绩\n");fflush(stdin);scanf("%s%s%s%d",L->stu[i].num,L->stu[i].name,L->stu[i].sex,&L->stu[i].score);}L->length=n;}voidprintList(sequenlist*L){inti;printf("\n学生姓名性别成绩\n");printf("-------------------------------------------\n");for(i=1;i<=L->length;i++){printf("第%d位学生:",i);printf("%s,%s,%s,%d\n",L->stu[i].num,L->stu[i].name,L->stu[i].sex,L->stu[i].score);printf("------------------------------------------------------------------\n");}}intinsert(sequenlist*L,DataType*student,inti){intj;if(L->length==MAXSIZE){printf("overflow!");return0;}elseif((i<0)||(i>L->length)){printf("error,pleaseinputtheright'i'");return0;}else{for(j=L->length-1;j>=i;j--){strcpy(L->stu[j+1].num,L->stu[j].num);strcpy(L->stu[j+1].name,L->stu[j].name);strcpy(L->stu[j+1].sex,L->stu[j].sex);L->stu[j+1].score=L->stu[j].score;}strcpy(L->stu[i].num,student->num);strcpy(L->stu[i].name,student->name);strcpy(L->stu[i].sex,student->sex);L->stu[i].score=student->score;L->length=L->length+1;}return1;}intfindList(sequenlist*L){charnum[8];charname[9];inti=0;printf("===========================\n");printf("请输入要查询的学生的学号或姓名\n");printf("===========================\n");fflush(stdin);{scanf("%s",num);for(i=1;i<=L->length;i++){if(strcmp(L->stu[i].num,num)==0)returni;}scanf("%s",name);for(i=0;ilength;i++){if(strcmp(L->stu[i].name,name)==0)returni;}}return-1;}voiddelNode(sequenlist*L){inti,j;i=findList(L);if(i==-1){printf("没有查到要删除的学生信息");return;}for(j=i;jlength;j++){L->stu[j].score=L->stu[j+1].score;strcpy(L->stu[j].num,L->stu[j+1].num
printf("借阅者图书证列表:
\n");
if(books[n].usr[l]!
=0)
printf("[%d]-%d天\n",books[n].usr[l],books[n].days[l]);
printf("请输入借书证序号:
if(books[n].usr[l]==s)
books[n].usr[l]=0;
books[n].days[l]=0;
books[n].store++;
=-1&&books[n].store==books[n].total)
printf("全数入藏.\n");
voidbook_add(void)
intn;
page_title("注册书");
for(n=0;n<100;n++)
if(books[n].id==0)break;
printf("序号:
scanf("%d",&books[n].id);
scanf("%s",&books[n].name);
scanf("%s",&books[n].author);
printf("数量:
scanf("%d",&books[n].total);
books[n].store=books[n].total;
voidbook_del(void)
page_title("注销书");
=-1)books[n].id=0;
printf("该书已注销.\n");
voidmain(void)
menu:
page_title("菜单");
printf("请按以下要求选择操作\n\n");
printf("1借书\n2还书\n\n");
printf("3注册书\n4注销书\n\n");
printf("\n0退出\n");
switch(getch())
case'1':
book_out();break;
case'2':
book_in();break;
case'3':
book_add();break;
case'4':
book_del();break;
case'0':
exit(0);
gotomenu;
#defineMAXSIZE100
typedefstruct{
charnum[10];
charname[20];
charsex[5];
intscore;
}DataType;
typedefstruct
DataTypestu[MAXSIZE];
intlength;
}sequenlist;
intmenu_select()
intsn;
printf("\n学生信息管理系统\n");
printf("=========================================\n");
printf("********1.学生信息线性表的成立********\n");
printf("********2.插入学生信息********\n");
printf("********3.查询学生信息********\n");
printf("********4.删除学生信息********\n");
printf("********5.输出所有学生信息********\n");
printf("********0.退出管理系统********\n");
printf("==========================================\n");
printf("请选择0-5:
for(;;)
scanf("%d",&sn);
if(sn<0||sn>5)
printf("输入错误,重选0-5\n");
else
returnsn;
voidcreateList(sequenlist*L)
intn,i;
printf("有几位学生?
请输入:
fflush(stdin);
scanf("%d",&n);
printf("请输入这%d位学生的信息:
\n",n);
for(i=1;i<=n;i++)
printf("第%d位学生:
",i);
printf("\n学号姓名性别成绩\n");
scanf("%s%s%s%d",L->stu[i].num,L->stu[i].name,L->stu[i].sex,&L->stu[i].score);
L->length=n;
voidprintList(sequenlist*L)
inti;
printf("\n学生姓名性别成绩\n");
printf("-------------------------------------------\n");
for(i=1;i<=L->length;i++)
printf("%s,%s,%s,%d\n",L->stu[i].num,L->stu[i].name,L->stu[i].sex,L->stu[i].score);
printf("------------------------------------------------------------------\n");
intinsert(sequenlist*L,DataType*student,inti)
intj;
if(L->length==MAXSIZE)
printf("overflow!
return0;
elseif((i<0)||(i>L->length))
printf("error,pleaseinputtheright'i'");
for(j=L->length-1;j>=i;j--)
strcpy(L->stu[j+1].num,L->stu[j].num);
strcpy(L->stu[j+1].name,L->stu[j].name);
strcpy(L->stu[j+1].sex,L->stu[j].sex);
L->stu[j+1].score=L->stu[j].score;
strcpy(L->stu[i].num,student->num);
strcpy(L->stu[i].name,student->name);
strcpy(L->stu[i].sex,student->sex);
L->stu[i].score=student->score;
L->length=L->length+1;
return1;
intfindList(sequenlist*L)
charnum[8];
charname[9];
inti=0;
printf("===========================\n");
printf("请输入要查询的学生的学号或姓名\n");
scanf("%s",num);
if(strcmp(L->stu[i].num,num)==0)
returni;
scanf("%s",name);
for(i=0;ilength;i++)
if(strcmp(L->stu[i].name,name)==0)
voiddelNode(sequenlist*L)
inti,j;
i=findList(L);
if(i==-1)
printf("没有查到要删除的学生信息");
return;
for(j=i;jlength;j++)
L->stu[j].score=L->stu[j+1].score;
strcpy(L->stu[j].num,L->stu[j+1].num
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1