版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学与技术 专业课程设计任务书学生姓名专业班级学号题 目个人图书管理系统课题性质A工程设计课题来源D自拟课题指导教师同组姓名无主要内容综合应用所学知识,设计完成个人图书管理系统。本系统拟实现以下功能:1.用户从键盘录入图书信息2.以文件保存在磁盘中并读取3可根据图书的每一项信息查询该图书的所有信息4.可根据图书的编号删除无用的图书5.可按照图书的每一项信息对图书进行排序6.统计每类图书的总数7.按照图书的输入顺序输出全部图书的信息系统要求采用vc工具进行开发实现。任务要求 综合运用和融化所学理论知识,提高分析和解决实际问题的能力,使用C语言设计一个个人图书管理系统。完成课程设计报告,报告
2、中对关键部分给出图表说明。要求格式规范,工作量饱满。参考文献C程序设计(第三版) 谭浩强数据结构(严蔚敏)高质量的编程指南数据结构与算法 (科学出版社)审查意见指导教师签字:教研室主任签字: 2009 年 6 月 19 日 1 需求分析1本演示程序中,用户从键盘输入图书信息,图书编号,名称,类别,作者,出版社,价格,购买日期。2演示程序以用户和计算机的对话方式执行,即在运行窗口出现提示信息,有用户从键盘录入,显示结果会在显示之后。3程序执行的命令包括:查询图书信息,删除图书信息,对所有图书进行排序,统计各种类的图书数目。显示所有图书信息4 测试数据:2001 离散数学 X 左孝凌 上海科学出版
3、社 18.00 2009/6/8 2002 数据结构 B 严蔚敏 清华大学出版社 30.00 2010/4/12 程序总体设计 (1)数据结构 依据输入的数据信息和数据格式,连表结点用结构体实现。采用链表方式存储,typedef:typedef struct /定义表示日期数据的结构体数据类型 intmonth;intday;intyear; DATE;typedef struct Booktype /定义表示图书信息的结构体数据类型 charid10; /* 图书编号 */charname40; /* 图书名称 */chartype; /* 图书类型 */charwriter10; /* 图
4、书作者 */charpublisher20; /* 图书出版社 */floatprice; /* 图书价格 */DATEbuydate; /* 图书购买日期 */ Btype;typedef struct Booklist /* 定义表示所有图书信息的链表数据类型 */Btype *bk;struct Booklist *next; Blist; (2)模块划分主菜单1录入图书信息2查询图书信息3删除图书信息4图书信息排序5显示图书信息6统计图书数目7退出图书系统 程序函数清单: Void maininterface(); /* 主界面函数*/void Bookinput(); /* 输入图书
5、信息函数*/void Bookdisplay(); /* 显示所有图书信息函数*/void Booksort(); /* 对图书分类排序函数*/void Booksearch(); /* 查找图书详细信息函数*/void Bookdelete(); /* 删除图书信息函数*/void Bookstat(); /* 统计全部图书数目*/(3)程序总体框架main() 个人图书管理系统 菜单代码1录入图书信息2查询图书信息3删除图书信息4图书信息排序5显示图书信息6统计图书数目7退出图书系统3 功能块函数与调试 录入图书信息函数 1 函数名称:voidBookinput(); 函数功能:从键盘祸从
6、文件读入图书信息。 2 程序清单 int n=0; Btype bk; FILE *fp; Loop: printf("nnnttt图书信息录入n"); printf("ntt1: 图书编号:"); scanf("%s",bk.id); printf("ntt2: 图书名称:"); scanf("%s",); printf("ntt3: 图书类别(X:学习 B:编程 Y:娱乐 G:工具 Q:其它):"); scanf("%s",&bk
7、.type); printf("ntt4: 图书作者:"); scanf("%s",bk.writer); printf("ntt5: 图书出版社:"); scanf("%s",bk.publisher); printf("ntt6: 图书价格(元):"); scanf("%f",&bk.price); printf("ntt7: 购买日期(mm/dd/yyyy):"); scanf("%d/%d/%d",&bk.buy
8、date.month,&bk.buydate.day,&bk.buydate.year); printf("ntt1: 保存并继续输入n"); printf("ntt2: 保存并返回n"); printf("ntt3: 取消并重新输入n"); printf("ntt4: 返回主菜单n"); printf("tt请输入选项:"); scanf("%d",&n); if(n=1) if(fp=fopen("Book.lib","
9、;ab")=NULL) fp=fopen("Book.lib","wb+"); fwrite(&bk,sizeof(Btype),1,fp); goto Loop;if(n=2) if(fp=fopen("Book.lib","ab")=NULL) fp=fopen("Book.lib","wb+"); fwrite(&bk,sizeof(Btype),1,fp); fclose(fp);if(n=3) goto Loop; 3 运行结果 查询图书信
10、息函数1.函数原型,功能和形参说明函数原型:void Booksearch();函数功能:查询图书信息;2.程序清单:Btype bk,ts;FILE *fp;int i;int j=0;if(fp=fopen("Book.lib","rb+")=NULL)printf("找不到文件Book.lib !n");exit(0);rewind(fp);printf("n请选择按哪个参数查询(1:编号 2:名称 3:作者 4:出版社 5:价格 ):");scanf("%d",&i);if(i=
11、1)printf("请输入您要查询的图书的编号n");scanf("%s",ts.id);while(!feof(fp) if (fread(&bk,sizeof(Btype),1,fp) if(strcmp(ts.id,bk.id)=0) printf("n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期
12、"); printf("n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk.publisher,bk.price,bk.buydate.month,bk.buydate.day,bk.buydate.year); j+; fclose(fp);if(j=0) printf("n找不到您要查询的图书信息!n");if(i=2)printf("请输入您要查询的图书的名称n");scanf("%s",ts.n
13、ame);while(!feof(fp) if (fread(&bk,sizeof(Btype),1,fp) if(strcmp(,)=0) printf("n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期"); printf("n%4s %-18s %-3c %-8s %-18s%8.2f %2
14、d/%d/%d",bk.id,,bk.type,bk.writer,bk.publisher,bk.price,bk.buydate.month,bk.buydate.day,bk.buydate.year); j+; fclose(fp);if(j=0) printf("n找不到您要查询的图书信息!n");if(i=3)printf("请输入您要查询的图书的作者n");scanf("%s",ts.writer);while(!feof(fp) if (fread(&bk,sizeof(Btype),1
15、,fp) if(strcmp(ts.writer,bk.writer)=0) printf("n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期"); printf("n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk.p
16、ublisher,bk.price,bk.buydate.month,bk.buydate.day,bk.buydate.year); j+; fclose(fp);if(j=0) printf("n找不到您要查询的图书信息!n");if(i=4)printf("请输入您要查询的图书的出版社n");scanf("%s",ts.publisher);while(!feof(fp) if (fread(&bk,sizeof(Btype),1,fp) if(strcmp(ts.publisher,bk.publisher)=0) p
17、rintf("n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期"); printf("n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk.publisher,bk.price,bk.buydate.month,bk.bu
18、ydate.day,bk.buydate.year); j+; fclose(fp);if(j=0) printf("n找不到您要查询的图书信息!n");if(i=5)printf("请输入您要查询的图书的价格n");scanf("%f",&ts.price);while(!feof(fp) if (fread(&bk,sizeof(Btype),1,fp) if(ts.price=bk.price) printf("n%4s %-20s%4s %-8s %-20s%-8s %8s","编
19、号","图书名称","类别","作者","出版社","价格","购买日期"); printf("n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk.publisher,bk.price,bk.buydate.month,bk.buydate.day,bk.buydate.year); j+; fclose(fp); if(j=0) printf
20、("n找不到您要查询的图书信息!n");3 运行结果: 删除图书信息函数1.函数原型,功能和形参说明函数原型:void Bookdelete();函数功能:查询图书信息;2.程序清单: void Bookdelete()Blist *head, *p, *q;Blist *s,*h;FILE *fp;int n=0;int i=0;if(fp=fopen("Book.lib","rb+")=NULL)printf("找不到文件Book.lib !n");exit(0); head= (Blist *)malloc(
21、sizeof(Blist);head->bk = (Btype *)malloc(sizeof(Btype);head->bk = NULL;q=p = (Blist *)malloc(sizeof(Blist);q->bk=p->bk = (Btype *)malloc(sizeof(Btype);rewind(fp);printf("n");while(!feof(fp) p= (Blist *)malloc(sizeof(Blist);p->bk = (Btype *)malloc(sizeof(Btype);if (fread(p-&g
22、t;bk,sizeof(Btype),1,fp)n+;if(n=1) head->next=p;else q->next=p;q=p; q->next=NULL;fclose(fp);s=head;h = (Blist *)malloc(sizeof(Blist);h->bk = (Btype *)malloc(sizeof(Btype);printf("请输入您要删除的图书的编号!n");scanf("%s",h->bk->id); for(s=head;s->next;s=s->next) if(str
23、cmp(h->bk->id,s->next->bk->id)=NULL) if(!s->next->next) s->next=NULL; printf("已删除编号为:%d的图书!n",s->next->bk->id);i+;break; else s->next=s->next->next; printf("已删除编号为:%d的图书!n",s->next->bk->id);i+;break; if(i!=0) for(s=head->next;
24、s;s=s->next) printf("n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",s->bk->id,s->bk->name,s->bk->type,s->bk->writer,s->bk->publisher,s->bk->price,s->bk->buydate.month,s->bk->buydate.day,s->bk->buydate.year); if(fp=fopen("Book.lib&qu
25、ot;,"w+")=NULL) fp=fopen("Book.lib","wb+"); /* 将输入的图书信息写入磁盘文件"Book.lib" */ for(s=head->next;s;s=s->next) fwrite(s->bk,sizeof(Btype),1,fp); fclose(fp); if(i=0) printf("找不到该编号的图书信息!n");3 运行结果:图书排序函数1.函数原型,功能和形参说明函数原型:void Bookdelete();函数功能:查询图
26、书信息;2.程序清单: int sort(Btype *str1, Btype *str2, int type); void Booksort() Blist *head, *p, *q;FILE *fp;int type;printf("n请选择对哪一个参数排序(1:编号 2:名称 3:作者 4:出版社 5:价格 6:类别):");printf("n");scanf("%d",&type);/* 打开文件 */if(fp=fopen("Book.lib","rb+")=NULL)pri
27、ntf("找不到文件Book.lib !n");exit(0);if (!(head = (Blist *)malloc(sizeof(Blist)printf("内存不足 !n");exit(0);head->bk= NULL;head->next = NULL;rewind(fp);printf("n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社",
28、"价格","购买日期");while(!feof(fp)if (!(p = (Blist *)malloc(sizeof(Blist) | !(p->bk = (Btype *)malloc(sizeof(Btype)printf("内存不足 !n");exit(0);if (fread(p->bk,sizeof(Btype),1,fp)for (q = head; q->next && sort(q->next->bk, p->bk, type) < 0; q = q->
29、;next);p->next = q->next;q->next = p;fclose(fp);for (q = head->next; q; q=q->next)printf("n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",q->bk->id,q->bk->name,q->bk->type,q->bk->writer,q->bk->publisher,q->bk->price,q->bk->buydate.month,q
30、->bk->buydate.day,q->bk->buydate.year);int strsort(char *str1, char *str2, int len)int i = 0;for (; i < len && str1i != '0' && str2i != '0' && str1i = str2i; i +);if (i = len | str1i = str2i)return 0;else if (str1i > str2i)return 1;elsereturn
31、 -1;int sort(Btype *bk1, Btype *bk2, int type)switch (type)case 1:return strsort(bk1->id, bk2->id, 10);case 2:return strsort(bk1->name, bk2->name, 40);case 3:return strsort(bk1->writer, bk2->writer, 10);case 4:return strsort(bk1->publisher, bk2->publisher, 20);case 5:if (bk1-
32、>price > bk2->price)return 1;else if (bk1->price < bk2->price)return -1;elsereturn 0;default:if (bk1->type > bk2->type)return 1;else if (bk1->type < bk2->type)return -1;elsereturn 0;3 运行结果:图书总数统计函数1.函数原型,功能和形参说明函数原型:void Bookstat();函数功能:图书总数统计函数;2.程序清单:void Bookst
33、at() /图书总数统计函数Blist *head, *p, *q;FILE *fp;int n;/* 打开文件 */if(fp=fopen("Book.lib","rb+")=NULL)printf("找不到文件Book.lib !n");exit(0);if (!(head = (Blist *)malloc(sizeof(Blist)printf("内存不足 !n");exit(0);head->bk = NULL;head->next = NULL;rewind(fp);printf("
34、;n");while(!feof(fp)if (!(p = (Blist *)malloc(sizeof(Blist) | !(p->bk = (Btype *)malloc(sizeof(Btype)printf("内存不足 !n");exit(0);if (fread(p->bk,sizeof(Btype),1,fp)for (q = head; q->next && sort(q->next->bk, p->bk, 6) < 0; q = q->next);p->next = q->
35、next;q->next = p;fclose(fp);for (q = head->next; q; q=q->next)for (n = 1; q->next && q->bk->type = q->next->bk->type; n +, q = q->next);printf("tt%c 类型的图书共有 %d 本n", q->bk->type, n);3 运行结果:全部图书信息显示函数1.函数原型,功能和形参说明函数原型:void Bookdisplay();函数功能:图书总数统计函数;2.程序清单:void Bookdisplay() /Btype bk;FILE *fp;if(fp=fopen("Book.lib","rb+")=NULL) printf("找不到文件B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滨州职业学院《面向对象程序设计与开发》2023-2024学年第一学期期末试卷
- 毕节职业技术学院《药用植物栽培学实验》2023-2024学年第一学期期末试卷
- 毕节职业技术学院《法语节目制作》2023-2024学年第一学期期末试卷
- 毕节幼儿师范高等专科学校《思想政治学科教学艺术》2023-2024学年第一学期期末试卷
- 北京中医药大学东方学院《数据库》2023-2024学年第一学期期末试卷
- 租赁合同模板租金上涨法务修改
- 房屋拆除合同范本
- 2025版鸡类产品出口代理购销合同标准版3篇
- 2025年度房产代理服务合同范本汇编3篇
- 二零二五年度10kv配电站施工档案管理合同
- 七年级上册数学压轴题几何试卷(带答案)
- 网络安全保密教育知识普及培训课件
- 小学语文-部编版四年级语文上册第六单元习作:记一次游戏教学设计学情分析教材分析课后反思
- 装饰公司与项目经理合作协议
- 接待上级领导工作总结
- 《新时代高校劳动教育理论与实践教程》教案 第9课 强化劳动安全意识
- 小学数学项目化教学这:基于教学评一体化的大单元整体设计《测量》
- ACC-AHA-HRSICD治疗适应证指南
- 共享单车电动车加盟城市代理协议模板
- 2024年上海市交大附中嘉定高二物理第一学期期末达标检测试题含解析
- 新版《电力设备典型消防规程》
评论
0/150
提交评论