C语言图书借阅管理系统课程设计报告.doc
《C语言图书借阅管理系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《C语言图书借阅管理系统课程设计报告.doc(32页珍藏版)》请在咨信网上搜索。
. . 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称图书借阅管理系统 专 业机械设计 班 级 15机械二班 学 号2021 030220 姓 名 指导教师 2021年 6 月 14日 理工大学高科学院 课 程 设 计 任 务 书 课程名称 C语言程序设计 课 题 图书借阅管理系统 专业班级 网络工程1002班 学生XX 学 号 4 指导教师 唐北平、淑红、谭小兰 审 批 任务书下达日期 2021 年 6 月20 日 任务完成日期 2021 年 7 月 03 日 一、设计容与设计要求 1.设计容:对一个有N本图书的图书馆,通过该系统实现对该班级学生的根本信息进展录入、显示、修改、删除、保存等操作的管理。 〔1〕、本系统采用一个包含N个数据的构造体数组,每个数据的构造应当包括:书号、书名、作者、、出版日期、单价、是否借出等。 〔2〕、本系统显示这样的菜单: a. 图书根本信息录入 b. 图书根本信息显示 c. 图书根本信息删除 d. 图书根本信息修改 e. 图书根本信息查询〔按书号查询、书名等〕 g. 退出系统 〔3〕、执行一个具体的功能之后,程序将重新显示菜单。 2.设计要求:掌握构造化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经历。 1. 设计正确,方案合理。 2. 界面友好,使用方便。 3. 程序精炼,构造清晰。 4. 设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。 5. 上机演示。 6. 按学号顺序选课题号,并在规定的时间单独完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中; 7. 按本任务书的要求,按附录的要求编写?课程设计报告?〔Word文档格式〕。并用A4的复印纸打印并装订; 二、进度安排 第 十八 周 星期1 8时00分——11时30分 星期2 14时00分——18时15分 星期3 8时00分——11时30分 星期4 8时00分——11时30分 第 十九 周 星期1 8时00分——11时30分 星期2 14时00分——18时15分 三、课程设计报告 1.程序设计准备 做系统前,首先,自己详细看了?C程序设计?〔教科书〕,根本自学会了文件的相关容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关容进一步理解。学习了C语言的容,图书信息管理系统有助于C语言学习的进一步稳固,在本系统可以增强对指针、文件、函数、构造体变量等根本知识的进一步理解。另外图书信息管理系统也是学校常用的根本系统之一,它有助于学校对图书馆书籍的根本管理。 2.程序设计说明 根据题目要求,应当把图书信息用构造体形式输入,再定义一个全局变量和文件指针进展整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个构造体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时到达所要求的目的。 3.程序的主要功能 图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进展管理。图书借阅管理系统是对图书信息的根本管理,它包括:图书信息的录入、图书信息的显示、图书信息的删除、图书信息的修改、图书信息的查询。 通过编译一个C语言函数,其中包含一个主函数,多个子函数,主函数调用其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能。 1、图书根本信息录入:对新到图书馆的图书的信息〔编号、书名、、作者、价格〕进展录入。 2、图书根本信息显示:显示已被录入图书的所有信息。 3、图书根本信息删除:通过输入书名,判断此图书是否存在,假设存在, 那么删除该图书所有信息,假设不存在那么提示用户重新输入图书书名。 4、图书根本信息修改:通过输入书名,判断此图书是否存在,假设不存在那么提示用户重新输入图书书名,假设存在,那么可对图书各项信息进展修改。 5、图书根本信息查询:将所有图书信息包括编号、书名、、作者、价格等显示在屏幕上。 6、退出系统:即退出图书借阅管理系统。 使用模块化编程的方法每项功能有一个或多个函数组合来完成,其中菜单项选择项模块对应如下: 图书根本信息录入==> void insert() 图书根本信息显示==> void print() 图书根本信息删除==> void del() 图书根本信息修改==> void modify() 图书根本信息查询==> void find() 这份代码中各个变量的定义如下: num 图书编号 name 书名 author 作者 pub where 出版日期 count 单价 四.功能模块的划分 1.主函数模块 根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。在主函数中定义全局变量,即是在函数外部定义的变量,其不属于某一个函数,而属于一个源程序文件,在整个程序可以屡次被引用。 2.图书根本信息显示模块 当用户选择图书根本信息显示时,程序会将所有图书信息列出。 3.图书根本信息输入模块 在程序开场运行,创立文件库时,调动此模块,提示用户输入新的图书编号〔编号为0时完毕输入〕,然后继续输入图书书名,作者,,出版日期,单价等信息。完毕输入时提示用户图书输入完成 4.图书根本信息查询模块 用户先选择图书查询方式〔按书名查找或按书号查找〕输入图书书名或书号后,查找出该图书是否存在,假设存在,那么显示该图书信息,假设不存在那么提示用户无此图书信息。 5.图书根本信息删除模块 用户输入所要删除的图书书名,先查找该图书是否存在,假设存在,那么删除该图书所有信息,假设不存在那么提示无此图书信息。 6.图书根本信息录入模块 首先输入图书录入的编号〔不为0〕判断是否有重复的编号,假设有,那么提示用户该书已存在,假设无那么继续录入书名、作者、、单价。 7.图书根本信息修改模块 用户输入要修改的书名,判断该书是否存在,假设不存在,那么提示用户无此图书信息;假设存在,那么提示用户选择修改工程,然后提示用户图书信息修改完成。 8.读文件模块 在运行该程序时,程序会自动检测是否存在图书信息,假设存在,那么会显示图书信息,假设不存在,那么会提示用户创立文件库,录入图书信息。 9.文件保存模块 当用户对图书信息有录入,修改,删除等操作时,程序会自动保存操作和新的图书信息。 五.主要功能的实现 程序运行流程:但每个模块运行完即会回到主函数,然后选择其他或退出。 六.程序调试 1.第一次运行程序时,库文件不存在图书信息,于是录入图书信息。 图书编号 书名 作者 出版日期 单价 1 英语 三 人民教育 2021.06 30 2.主界面。 3. 在主界面选择1,开场录入新的图书信息。 图书编号 书名 作者 出版日期 单价 2 数学 四 高等教育 2021.06 28 4. 在主界面选择2,查询图书信息,按1或2分别选择按书名或书号查询。〔以?英语?为例〕 选择2,按书号查找,输入书号:1,即可查询图书?英语?所有信息。 选择1,按书名查找,输入书名:英语,即可获得图书?英语?所有信息。 5.在主界面选择3,对图书资料进展删除〔以?数学?为例〕,在后续图书信息显示时无?数学?图书信息。 6.在主界面选择4,对图书进展修改〔以?英语?为例,修改图书作者,将作者更换为王五〕,在后续图书根本信息显示时,作者不将是三,而是王五。 7.在主界面选择5,图书根本信息显示,此时图书信息经过删除和修改,和初始信息不同。 七.总结 通过为期一周的课程设计,对?C语言?这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术根底,在我们网络工程专业的学习中占据着十分重要的地位。自己C语言编程的能力有了提高,特别是在文件、指针、数组、函数和构造体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会。 循环是C语言的重要方法,也是本程序的灵魂,它在本程序中既有“穿针引线〞的作用,也起到了对数据进展分析、存贮、读取等重要的作用,本程序在使用循环过程中对循环进展了多方法的应用也是一个“亮点〞,它使程序变得构造合理,通俗易懂,也降低了程序的难度。以后要对这种方法进展深刻的体会。 数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进展输入、贮存、读取方便了对数据的处理和输入,数组的的使用在本程序中有很大的好处。 函数是实现模块化编程的根底,它使程序变得方面易懂,对修改起了很大作用,降低了编程的难度,一个函数就是一个功能,它使各个功能之间有了一定的独立性,但也有了一定的联系性,一个函数的错误,不会导致整个程序的失败〔主函数除外〕,对函数的良好应用时在本程序中又以深刻的体会,有了很大提高。 构造体的使用,为本程序提供了很大方便,也提高了程序的可读性,构造数组方便了对数据的管理。 这个程序的构造大体是从网络上借鉴的,但是大局部功能模块与任务要求不同,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。同时提高了自己对编程的兴趣,使自己对编程有了更深的理解,体会到编程的乐趣。 八.附件 原代码清单及注释 #include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #define N sizeof(struct book) #define PT "%-5d %10s %6s %6s %8s %3d \n",p->num,p->name,p->author,p->pub,p->where,p->count struct book /*图书信息*/ { int num; /*书号*/ char name[10]; /*书名*/ char where[10]; /*出版日期*/ char author[15]; /*作者*/ char pub[20]; /**/ int count; /*单价*/ struct book *next; }; void find1 (struct book *p0); void find2 (struct book *p0); /*输出模块*/ void print(struct book *p0) { struct book *p; system("cls"); p=p0->next; printf("\n\n^^^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^^^"); printf("\n\n图书编号----图书名称---作者--------------出版日期---单价\n\n"); while(p!=NULL) { printf(PT); p=p->next; } getch(); //输入任意值返回 system("cls"); } /*输入模块*/ struct book *creat() { struct book *head,*p1,*p2; int i=0; head=p2=(struct book *)malloc(N);//分配新的存给p2 head->next=NULL; printf("\n\n\t\t录入图书信息"); printf("\n---------------------------------------------"); while(1) { p1=(struct book *)malloc(N); printf("\n 请输入图书编号(书号0为完毕): "); scanf("%d",&p1->num); if(p1->num!=0) { printf("\n\n书名 作者 出版日期 单价\n\n\n"); scanf("%s%s%s%s%d",p1->name,p1->author,p1->pub,p1->where,&p1->count); p2->next=p1; p2=p1; i++; } else break; } p2->next=NULL; free(p1); printf("\n---------------------------------------------"); printf("\n\t\t %d 种书录入完毕",i); getch(); system("cls"); return head; } /*查找模块*/ void find(struct book *p0) { int v; system("cls"); printf("1.按书名查找\n\n\n"); printf("2.按书号查找\n"); scanf("%d",&v); switch(v) { case 1 : find1(p0);break; case 2:find2(p0);break; default: ; } } void find1 (struct book *p0) { system("cls"); char name[10]; int flag=1; struct book *p; p=p0->next; printf("请输入要查找的书名:\n"); scanf("%s",&name); for(p=p0;p;p=p->next) if(strcmp(p->name,name)==0) { printf("\n\n图书编号----图书名称---作者--------------出版日期---单价\n\n"); printf(PT); flag=0; break; } if(flag) printf("\n 暂无此图书信息\n");//当flag=1时执行 getch(); } void find2 (struct book *p0) { system("cls"); int num; int flag=1; struct book *p; p=p0->next; printf("请输入要查找的书号:\n"); scanf("%d",&num); for(p=p0;p;p=p->next) if(p->num==num) { printf("\n\n图书编号----图书名称---作者--------------出版日期---单价\n\n"); printf(PT); flag=0; break; } if(flag) printf("\n 暂无此图书信息\n"); getch(); } /*删除模块*/ void del(struct book *p0) { system("cls"); char name[10]; int flag=1; struct book *p; p=p0; printf("请输入要删除的书名:\n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->name,name)==0) { p0->next=p->next; //后续结点连接到前驱结点之后 free(p); printf("\t该书资料已删除."); flag=0; break; } p0=p; p=p->next; } if(flag) printf("\n\t无此图书信息。"); getch(); system("cls"); } /*录入模块*/ void insert(struct book *p0) { struct book *p; system("cls"); p=(struct book *)malloc(N); while(1) { printf("\n 请输入要录入的图书编号(书号0为退出): "); scanf("%d",&p->num); if(p->num!=0) { if(p0->next!=NULL&&p0->next->num==p->num) //找到重号 { p=p->next; free(p); printf("\t该书已存在"); } else {printf("\n\n书名 作者 出版日期 单价\n\n\n"); scanf("%s%s%s%s%d",p->name,p->author,p->pub,p->where,&p->count); p->next=p0->next; p0->next=p; printf("\t已成功录入."); } } else break; } getch(); system("cls"); } /*修改模块*/ void modify(struct book *p0) { system("cls"); char name[10]; int flag=1; int choice; struct book *p; p=p0->next; printf("请输入要修改的书名:\n\n"); scanf("%s",name); while(p!=NULL&&flag==1) { if(strcmp(p->name,name)==0) { printf("\n\t请选择要修改的项:"); printf("\n\t 1.修改图书编号\n"); printf("\n\t 2.修改图书出版日期\n"); printf("\n\t 3.修改图书作者\n"); printf("\n\t 4.修改图书\n"); printf("\n\t 5.修改图书单价\n"); scanf("%d",&choice); switch(choice) { case 1: { printf("\n 请输入新的图书编号:"); scanf("%d",p->num); break; } case 2: { printf("\n 请输入新的图书出版日期:"); scanf("%s",p->where); break; } case 3: { printf("\n 请输入新的图书作者:"); scanf("%s",p->author); break; } case 4: {printf("\n 请输入新的图书:"); scanf("%s",p->pub); break; } case 5: {printf("\n 请输入新的图书单价:"); scanf("%d",p->count); break; } } printf("\n\t该项已成功修改。\n\t 新的图书信息:"); printf("\n\n图书编号----图书名称---作者--------------出版日期---单价\n\n"); printf(PT); flag=0; } p0=p; p=p0->next; } if(flag) printf("\n\t暂无此图书信息。"); getch(); system("cls"); } /*读文件*/ struct book *read_file() { int i=0; struct book *p,*p1,*head=NULL; FILE *fp; if((fp=fopen("library.txt","rb"))==NULL〕//以只读的方式翻开文件 {printf("\n\n \t********库文件不存在,请创立!**********"); getch(); return NULL; } head=(struct book *)malloc(N); p1=head; head->next=NULL; printf("\n 已有图书信息:"); printf("\n\n图书编号----图书名称---作者--------------出版日期---单价\n\n"); while(!feof(fp)) { p=(struct book *)malloc(N); while(fscanf(fp,"%d%s%s%s%s%d",&p->num,p->name,p->author,p->pub,p->where,&p->count)!=EOF) { printf(PT); i++; } p1->next=p; p1=p; } p1->next=NULL; fclose(fp); printf("\n 共种%d 图书信息",i); printf("\n\n\n 文件中的信息以正确读出。按任意键返回。"); getch(); system("cls"); return (head); } /*保存文件*/ void save(struct book *head) { FILE *fp; struct book *p; fp=fopen("library.txt","wb"); //以只写方式翻开二进制文件 if(fp==NULL) //翻开文件失败 { printf("\n=====>翻开文件失败!\n"); getch(); return ; } else for(p=head->next;p!=NULL;p=p->next) fprintf(fp,"%d %s %s %s %s %d\n",p->num,p->name,p->author,p->pub,p->where,p->count); fclose(fp); printf("\n\t保存文件成功!\n"); } void main() { struct book *head=NULL; int choice=1; head=read_file(); if(head==NULL) { printf("\n\t\t********************"); getch(); head=creat(); } do { system("cls"); printf("----------------Wele-----------------\n"); printf("欢迎您,图书管理员\n\n\n\n"); printf("****************************************\n\n"); printf("\n 请选择:"); printf("\n 1.图书根本信息录入\n"); printf("\n 2.图书根本信息查询\n"); printf("\n 3.图书根本信息删除\n"); printf("\n 4.图书根本信息修改\n"); printf("\n 5.图书根本信息显示\n"); printf("\n 0.退出系统\n"); printf("****************************************\n"); scanf("%d",&choice); switch(choice) { case 2: find(head); break; case 4: modify(head); break; case 1: insert(head); break; case 3: del(head); break; case 5: print(head); break; case 0: system("cls"); break; } } while(choice!=0); save(head); } 附: 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件〔A4大小的图纸及程序清单〕。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。 正文的容:一、课题的主要功能;二、课题的功能模块的划分〔要求画出模块图〕;三、主要功能的实现〔至少要有一个主要模块的流程图〕;四、程序调试;五、总结;六、附件〔所有程序的原代码,要求对程序写出必要的注释〕。 正文总字数要求在5000字以上〔不含程序原代码〕。 计算机科学与技术系课程设计评分表 课题名称: 项 目 评 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 辩论述与答复以下问题情况 课程设计周表现情况 综合成绩 教师签名: 日 期: 〔注:1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。〕 . .word.zl.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 借阅 管理 系统 课程设计 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文