C语言程序设计报告图书管理系统.docx
- 文档编号:12808073
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:53
- 大小:39.37KB
C语言程序设计报告图书管理系统.docx
《C语言程序设计报告图书管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计报告图书管理系统.docx(53页珍藏版)》请在冰豆网上搜索。
C语言程序设计报告图书管理系统
南京航空航天大学金城学院
《C语言程序设计》课程设计报告
图书信息管理系统
学号:
姓名:
学号:
姓名:
日期:
一、需求分析:
………………………………………………………3
二、程序的主要功能:
……………………………………………….3
三、程序运行平台:
………………………………………………….3
四、系统总框架图:
………………………………………………….6
五、程序类的说明:
……………………………………………….6
六、模块分析:
……………………………………………………….8
七、比较有特色的函数:
…………………………………………….9
八、存在的不足与编程体会…………………………………………10
九、程序源代码:
…………………………………………………….10
一、需求分析
设计与分析一个图书信息管理系统,能够对图书的根据书名、价格或出版社进行统计、处理和更新,并且可以方便学校老师和领导对图书进行整体分析。
二、程序的主要功能
图书信息界面美观、简洁,采用菜单式显示功能选择;
能够从磁盘文件输入和输出数据;
能够对图书信息进行检索操作;
具有增、删、改信息的功能;
使用结构体链表数据类型对图书信息进行描述和存储。
三、程序运行平台
VC6.0
运行程序“library.exe”,进入登录界面如下
**
**********欢迎光临**********
**********************图书信息管理系统************************
============1-用户登录===========
============0-退出系统===========
请输入您的选择:
一、输入1进行登录
------------------
*图书信息管理系统*
------------------
**********************************************
**********************************************
||1-添加图书2-删除图书||
||3-图书列表4-图书排序||
||5-查询图书6-修改图书||
||7-录入数据0-退出系统||
**********************************************
**********************************************
请输入所选择的序号:
选择1进入添加图书模块:
请输入您要添加的图书的编号:
选择2进入删除图书信息模块:
请输入要删除的图书编号:
选择3进入显示图书列表模块
图书信息列表如下
==========================================================
编号图书名作者名出版社类别出版时间价格
2222222.00
3333333.00
3315525525.00
5555555.00
==========================================================:
选择4.进入修改个人信息模块
1-按姓名修改
请输入您的数字选择:
选择5.进入图书排序模块
================================================================
**1-按图书编号排序2-按出版时间排序**
**3-按图书价格排序4-按图书名排序**
**5-按作者名排序0-取消排序操作**
================================================================
请输入您选择的编号:
选择6.进入修改图书模块
*请输入要修改的图书编号:
选择7.进入录入信息模块
注意:
输入图书编码为0时结束!
请输入图书编号:
选择0.退出系统
四、系统总框架图
五、程序类的说明
structbook{
intnum;
charbname[50];
charwname[20];
charpress[50];
charsort[50];
inttime;
floatprice;
structbook*next;//定义文件头指针
};
六、模块分析
1.添加模块
系统将提示用户输入新添加的图书的信息,插入在链表中
2.删除模块
首先由用户输入图书的编号,然后由删除模块判断p->num和用户输入的编号是否相同,相同则从链表中删除。
3.图书列表模块
传递一个头指针给print_book函数,若头指针不为空,则将整个链表的数据输出。
4.图书排序模块
首先由用户判断由什么关键词进行排序,然后运行相应的运行模块。
5.查询图书模块
系统将会把所有航班的信息显示出来。
由用户输入图书的编号,判断是p->num和用户输入的编号是否相同,相同则输出。
6.修改图书模块
按照编号检索,然后修改相应的内容。
7.录入模块
用while循环批量录入图书信息。
0.退出系统
七、比较有特色的函数
voidnum_paixu(structbook*head)
{
structbook*a[1000],*p,*p1,*temp;
inti,k,index,n=0;
charb;
p1=head;
for(p=head;p;p=p->next)
n++;
for(i=0;i a[i]=p1; p1=p1->next; } for(k=0;k index=k; for(i=k+1;i if(a[i]->numnum) index=i; } temp=a[index]; a[index]=a[k]; a[k]=temp; } printf("排序成功! \n"); printf("是否显示排序结果? (y/n)\n"); scanf("%s",&b); getchar(); switch(b){ case'n': break; case'y': printf("================================================================\n"); printf("**编号图书名作者名出版社类别出版时间价格**\n"); for(i=0;i printf("**%d%s%s%s%s%d%.2f**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price); } printf("================================================================\n"); break; default: printf("您的输入有误! \n"); break; } } 八、存在的不足与对策、编程体会。 排序的方式过于复杂,有待改进。 九、参考文献 XX文库 十、程序源代码 #include #include #include structbook{ intnum; charbname[50]; charwname[20]; charpress[50]; charsort[50]; inttime; floatprice; structbook*next;//定义文件头指针 }; structbook*creatbook();//创建链表 structbook*addbook(structbook*head);//添加图书 intyanzheng(structbook*head,intm);//验证新添加的图书编码是否已存在 voiddeletebook(structbook*head);//删除图书 voidfprint(structbook*head);//将链表写入文件 structbook*load();//从文件中读取信息并建成链表 voidprint_book(structbook*head);//将链表信息输出 voidchaxun(structbook*head);//查询图书信息 voidnum_chaxun(structbook*head);//按图书编号查询图书 voidwname_chaxun(structbook*head);//按作者名查询图书 voidsort_chaxun(structbook*head);//按类别查询图书 voidtime_chaxun(structbook*head);//按出版时间查询图书 voidbname_chaxun(structbook*head);//按图书名查询图书 voidxiugai(structbook*head);//修改图书信息 voidpaixu(structbook*head);//对图书进行排序 voidnum_paixu(structbook*head);//按图书编号排序 voidtime_paixu(structbook*head);//按图书出版时间排序 voidprice_paixu(structbook*head);//按图书价格排序 voidbname_paixu(structbook*head);//按图书名排序 voidwname_paixu(structbook*head);//按作者名排序 intmain() { intchoice,n,x,y=1,c,c1=1234; chara,d,b[10],b1[10]="yjk"; structbook*head=NULL; while(y){ system("cls"); printf("\n\n\n\n\n\n\n"); printf("**********欢迎光临**********\n\n"); printf("**********************图书信息管理系统************************\n\n\n"); printf("\n\n"); printf("============1-用户登录===========\n"); printf("============0-退出系统===========\n"); printf("请输入您的选择: "); scanf("%d",&n); printf("\n"); getchar(); switch(n){ case0: y=0; break; case1: printf("请输入您的用户名: "); gets(b); printf("\n"); printf("请输入您的密码: "); scanf("%d",&c); printf("\n"); if(strcmp(b,b1)! =0||c! =c1){ printf("验证失败,请重新输入! \n"); scanf("%c",&d); getchar(); system("cls"); } else{ printf("验证通过! 请按Enter键进入! \n"); scanf("%c",&d); getchar(); x=1; while(x){ system("cls"); printf("------------------\n"); printf("*图书信息管理系统*\n"); printf("------------------\n\n"); printf("**********************************************\n\n"); printf("**********************************************\n\n"); printf("||1-添加图书2-删除图书||\n\n"); printf("||3-图书列表4-图书排序||\n\n"); printf("||5-查询图书6-修改图书||\n\n"); printf("||7-录入数据0-退出系统||\n\n"); printf("**********************************************\n\n"); printf("**********************************************\n\n"); printf("请输入所选择的序号: "); scanf("%d",&choice); getchar(); system("cls"); switch(choice) { case0: x=0;break; case1: head=load(); if(head==NULL){ printf("文件为空,请先录入数据! \n"); getchar(); break; } else{ head=addbook(head); printf("添加成功! \n"); printf("是否将新信息保存到文件? (y/n)\n"); scanf("%c",&a); getchar(); switch(a){ case'n': break; case'y': fprint(head); printf("保存成功! \n"); getchar(); break; } break; } case2: head=load(); if(head==NULL){ printf("文件为空,请先录入数据! \n"); getchar(); break; } else{ deletebook(head); getchar(); break; } break; case3: head=load(); if(head==NULL){ printf("文件为空,请先录入数据! \n"); getchar(); break; } else{ print_book(head); getchar(); break; } case4: head=load(); if(head==NULL){ printf("文件为空,请先录入数据! \n"); getchar(); break; } else{ paixu(head); getchar(); } break; case5: head=load(); if(head==NULL){ printf("文件为空,请先录入数据! \n"); getchar(); break; } else{ chaxun(head); getchar(); } break; case6: head=load(); if(head==NULL){ printf("文件为空,请先录入数据! \n"); getchar(); break; } else{ xiugai(head); getchar(); break; } break; case7: printf("注意: 输入图书编码为0时结束! \n"); head=creatbook(); printf("是否将输入的信息保存到文件以覆盖文件中已存在的信息? (y/n)\n"); getchar(); scanf("%c",&a); getchar(); switch(a){ case'n': break; case'y': fprint(head); printf("保存成功! \n"); getchar(); break; } break; default: printf("您的输入有误,请重新输入! \n"); getchar(); break; } } } break; default: printf("您的输入有误! 请重新输入! \n"); getchar(); break; } } } //录入数据并形成链表 structbook*creatbook() { structbook*head,*tail,*p; intnum,time,n; charbname[50],wname[20],press[50],sort[50]; floatprice; intsize=sizeof(structbook); head=tail=NULL; printf("请输入图书编号: "); scanf("%d",&num); printf("请输入图书名: "); scanf("%s",bname); getchar(); printf("请输入作者名: "); scanf("%s",wname); getchar(); printf("请输入出版社: "); scanf("%s",press); getchar(); printf("请输入类别: "); scanf("%s",sort); getchar(); printf("请输入出版时间: "); scanf("%d",&time); getchar(); printf("请输入价格: "); scanf("%f",&price); getchar(); while (1){ p=(structbook*)malloc(size); p->num=num; strcpy(p->bname,bname); strcpy(p->wname,wname); strcpy(p->press,press); strcpy(p->sort,sort); p->time=time; p->price=price; p->next=NULL; if(head==NULL) head=p; else tail->next=p; tail=p; do{ printf("请输入图书编号: "); scanf("%d",&num); n=yanzheng(head,num); if(n==0) break; else printf("您输入的编号已存在,请重新输入! \n"); }while (1); if(num==0) break; else { printf("请输入图书名: "); scanf("%s",bname); getchar(); printf("请输入作者名: "); scanf("%s",wname); getchar(); printf("请输入出版社: "); scanf("%s",press); getchar(); printf("请输入类别: "); scanf("%s",sort); getchar(); printf("请输入出版时间: "); scanf("%d",&time); getchar(); printf("请输入价格: "); scanf("%f",&price); getchar(); } } returnhead; } //插入结点,并且插入后仍按一定顺序 structbook*addbook(structbook*head) { structbook*ptr,*p1,*p2,*p; charbname[50],wname[20],press[50],sort[50]; intsize=sizeof(structbook); intnum,time,n=1; floatprice; do{ printf("请输入图书编号: "); scanf("%d",&num); n=yanzheng(head,num); if(n==0) break; else printf("您输入的编号已存在,请重新输入! \n"); }while (1); printf("请输入图书名: "); scanf("%s",bname); getchar(); printf("请输入作者名: "); scanf("%s",wname); getchar(); printf("请输入出版社: "); scanf("%s",press); getchar(); printf("请输入类别: "); scanf("%s",sort); getchar(); printf("请输入出版时间: "); scanf("%d",&time); getchar(); printf("请输入价格: "); scanf("%f",&price); getchar(); p=(structbook*)malloc(size); p-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告 图书 管理 系统