C语言课程设计.docx
- 文档编号:5362718
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:21
- 大小:226.43KB
C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
C语言课程设计
一、设计内容
2、设计开发一个图书管理程序:
实现图书的添加、查询、删除、修改、删除等操作。
图书信息包括书号、书名、作者、出版社、出版年、库存量等。
具体实现的管理功能要求如下,其中同一操作下不同方式的功能实现采用二级菜单。
(1)输入并显示多部图书的信息。
(2)按照作者、出版社对图书信息进行查询。
(3)对图书信息按照书号、书名进行删除,删除信息前需要进一步确认。
(4)按照书号或书名对图书信息进行修改。
(5)可根据需要添加图书信息到指定位置。
程序所显示的菜单内容如下:
图书管理系统:
1、创建2、添加3、查询4、删除5、修改6、显示7、退出请选择:
二、设计要求
1、用C语言实现系统;
2、利用数组或结构体实现上述题目的数据结构设计;
3、系统具有增加、查询、修改、删除、排序等基本功能;
4、系统各部分功能的使用采用菜单选择形式;
5、系统的各个功能模块要求用函数的形式实现;
6、完成设计任务并书写课程设计报告。
注:
显示或输出可根据需要显式输出(即选择菜单中的输出或显示)或隐式输出(完成某项操作后即刻输出);
三、设计分析
Create:
menu:
menu0
Find
Add
Delete:
四、课程设计小结
1、熟练掌握链表的创建、添加、查找、修改、删除、输出。
2、熟练掌握自定义函数及主函数调用。
3、熟练掌握C语言基础知识。
4、插入指针new时,要有newnext=NULL。
5、fflush(stdin);用于消除缓冲区,无法正确输入时要消除缓冲区
五、附源代码
#include
#include
#include
#defineNULL0
#include
structtushu/*结构体*/
{
charcno[8],cname[12],cwiter[8],cpublish[8];
intikc;
structtushu*next;
};
structtushu*create();
structtushu*output(structtushu*head);
voidmenu();
intmenu0();
structtushu*find(structtushu*head);
structtushu*witerfind(structtushu*head);
structtushu*publishfind(structtushu*head);
voidmenu00();
structtushu*find0(structtushu*head);
voiderror();
voidchange(structtushu*head);
structtushu*delete(structtushu*head);
voidseek(structtushu*head);
structtushu*add(structtushu*head);
menu000();
structtushu*nofind(structtushu*head);
structtushu*find0(structtushu*head);
structtushu*namefind(structtushu*head);
structtushu*create()/*创建*/
{
structtushu*head=NULL,*new,*tail;
intii=1;
clrscr();
fflush(stdin);
while
(1)
{
clrscr();
fflush(stdin);
new=(structtushu*)malloc(sizeof(structtushu));
new->next=NULL;
printf("\t\t\tputinto%dbook'informaitaion:
",ii);
printf("\n");
printf("\t1.putintono(ifno==0toend):
");
gets(new->cno);
if(strcmp(new->cno,"0")==0)
{
free(new);
returnhead;
}
printf("\t2.putintoname:
");
gets(new->cname);
printf("\t3.putintowiter:
");
gets(new->cwiter);
printf("\t4.putintopublish:
");
gets(new->cpublish);
printf("\t5.putintokucun:
");
scanf("%d",&new->ikc);
printf("\n");
if(ii==1)
{
new->next=head;
tail=head=new;
}
else
{
tail->next=new;
tail=new;
}
ii++;
}
}
structtushu*output(structtushu*head)/*输出*/
{
structtushu*p=head;
clrscr();
printf("no\tname\twiter\tpublish\tkucun\n");
if(p==NULL)
{
clrscr();
printf("Noidata");
}
while(p!
=NULL)
{
printf("%-s\t%-s\t%-s\t%-s\t%-d\n",p->cno,p->cname,p->cwiter,p->cpublish,p->ikc);
p=p->next;
}
fflush(stdin);
getchar();
}
voidmenu()/*主菜单*/
{
inti,ii=1;
for(i=0;i<8;i++)printf("\n");
printf("\t\t");
for(i=1;i<27;i++)
printf("%c",ii);
printf("\n\t\t%cWelcometobooksystem%c\n",ii,ii);
printf("\t\t");
for(i=1;i<27;i++)
printf("%c",ii);
printf("\n\t\t\t1.create.\n\t\t\t2.seek.\n\t\t\t3.add.\n\t\t\t4.delete.\n\t\t\t5.change.\n\t\t\t6.output.\n\t\t\t7.exit.\n\t\t\t%cchoose:
",ii+4);
}
intmenu0()/*选择菜单*/
{
intchoose;
scanf("%d",&choose);
fflush(stdin);
returnchoose;
}
structtushu*find(structtushu*head)/*查找(书号、书名)*/
{
intchoose;
charwiter[8],publish[8],no,name;
structtushu*p=head,*q;
clrscr();
menu00();
choose=menu0();
while(choose!
=3)
{
switch(choose)
{
case1:
clrscr();
printf("putintowitername:
");
gets(witer);
while(p!
=NULL&&strcmp(p->cwiter,witer)!
=0)
{
p=p->next;
}
if(p==NULL)
{
printf("\nnoposition");fflush(stdin);getchar();break;
}
else
returnp;
case2:
clrscr();
printf("putintopublishname:
");
gets(publish);
while(p!
=NULL&&strcmp(p->cpublish,publish)!
=0)
{
p=p->next;
}
if(p==NULL)
{
printf("\nnoposition");fflush(stdin);getchar();break;
}
else
returnp;
default:
error();fflush(stdin);break;
}
menu00();
choose=menu0();
}
}
voidmenu00()
{
intii=6;
printf("\t\t1.witer\n\t\t2.publish\n\t\t3.Exit\n\t\t%cchoose:
",ii);
}
structtushu*find0(structtushu*head)/*查找(删除,修改)*/
{
intchoose;
charcno[8],cname[12],no[8],name[8];
structtushu*p=head,*q;
clrscr();
menu000();
choose=menu0();
while(choose!
=3)
{
switch(choose)
{
case1:
clrscr();
printf("putintono:
");
gets(no);
if(strcmp(head->cno,no)==0)
returnhead;
else
{
q=p->next;
while(q!
=NULL&&strcmp(q->cno,no)!
=0)
{
p=p->next;
q=p->next;
}
if(p==NULL)
{
printf("\nnoposition");fflush(stdin);getchar();break;
}
else
returnp;
}
case2:
clrscr();
printf("putintobookname:
");
gets(name);
if(strcmp(head->cname,name)==0)
returnhead;
else
{
q=p->next;
while(q!
=NULL&&strcmp(q->cname,name)!
=0)
{
p=p->next;
q=p->next;
}
if(p==NULL)
{
printf("\nnoposition");fflush(stdin);getchar();break;
}
else
returnp;
}
default:
error();fflush(stdin);break;
}
menu000();
choose=menu0();
}
}
menu000()
{
intii=6;
printf("\t\t1.no\n\t\t2.name\n\t\t3.Exit\n\t\t%cchoose:
",ii);
}
structtushu*add(structtushu*head)/*添加*/
{
structtushu*p,*new,*q;
p=find(head);
fflush(stdin);
clrscr();
while
(1)
{
clrscr();
fflush(stdin);
new=(structtushu*)malloc(sizeof(structtushu));
printf("\t1.putintono(ifno==0toend):
");
gets(new->cno);
if(strcmp(new->cno,"0")==0)
{
free(new);
returnhead;
}
printf("\t2.putintoname:
");
gets(new->cname);
printf("\t3.putintowiter:
");
gets(new->cwiter);
printf("\t4.putintopublish:
");
gets(new->cpublish);
printf("\t5.putintokucun:
");
scanf("%d",&new->ikc);
printf("\n");
new->next=p->next;
p->next=new;
p=new;
}
returnhead;
}
voidseek(structtushu*head)/*查询*/
{
structtushu*p;
p=find(head);
printf("no\t\tname\t\twiter\t\tpublish\t\tkucun\n");clrscr();
printf("%-s\t\t%-s\t\t%-s\t\t%-s\t\t%-d",p->cno,p->cname,p->cwiter,p->cpublish,p->ikc);fflush(stdin);
getchar();
}
structtushu*delete(structtushu*head)/*删除*/
{
structtushu*x,*y;
intii;
x=find0(head);
if(x==head)
y=x;
else
y=x->next;
printf("no\t\tname\t\twiter\t\tpublish\t\tkucun\n");clrscr();
printf("%-s\t\t%-s\t\t%-s\t\t%-s\t\t%-d\n",y->cno,y->cname,y->cwiter,y->cpublish,y->ikc);
printf("Areyousuretodeleteit?
1.Yes.2.No:
");
scanf("%d",&ii);
if(ii==1)
{
if(x==head)
{
head=x->next;
free(x);
returnhead;
}
else
{
x->next=y->next;
free(y);
}
}
}
voidchange(structtushu*head)/*修改*/
{
structtushu*x,*y;
x=find0(head);
y=x->next;
printf("putintono:
");
gets(y->cno);
printf("putintoname:
");
gets(y->cname);
printf("putintowiter:
");
gets(y->cwiter);
printf("putintopublish:
");
gets(y->cpublish);
printf("putintokucun:
");
scanf("%d",&y->ikc);
printf("\n");
}
voiderror()/*错误提示*/
{
printf("error,putintoagain!
!
!
!
");
fflush(stdin);
getchar();
}
voidmain()/*主函数*/
{
intchoose,ik=1;
structtushu*head=NULL;
if(ik!
=1)
{
fflush(stdin);
clrscr();
}
menu();
ik++;
choose=menu0();
while(choose!
=7)
{switch(choose)
{
case1:
head=create();break;
case2:
seek(head);break;
case3:
add(head);break;
case4:
head=delete(head);break;
case5:
change(head);break;
case6:
output(head);break;
default:
error();
}
if(ik!
=1)
{
fflush(stdin);
clrscr();
}
menu();
ik++;
choose=menu0();
}
fflush(stdin);
printf("\t\tThanks,seeyouagain!
");getchar();
}
六、参考文献
1、《C语言程序设计》
2、GUESSnum.C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计