C语言程序课程设计图书信息管理系统.doc_第1页
C语言程序课程设计图书信息管理系统.doc_第2页
C语言程序课程设计图书信息管理系统.doc_第3页
C语言程序课程设计图书信息管理系统.doc_第4页
C语言程序课程设计图书信息管理系统.doc_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告课程名称 C语言程序设计 课题名称 图书信息管理系统 专 业 土木工程 班 级 1381 学 号 201313170125 姓 名 李晨希 指导教师 王颖 2016年 1月 7日 前 言C语言程序设计课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。学习委员将课程设计报告与磁盘收齐后交指导老师。一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。1. 设计正确,方案合理。2. 界面友好,使用方便。3. 程序精炼,结构清晰。4. 设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。5. 上机演示。6. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;7. 按本任务书的要求,按附录的要求编写课程设计报告(Word文档格式)。并用A4的复印纸打印并装订; 8. 在2014年6月30日之前,请各班学习委员收齐课程设计报告和源程序交王颖老师 ,联系电话三、进度安排第一周 星期四: 课题讲解,查阅资料第二周星期一: 总体设计,详细设计星期二: 编程,上机调试、修改程序星期三:上机调试、完善程序星期四:上机调试、完善程序星期五: 答辩星期六-星期天:撰写课程设计报告课程设计报告规范一、 需求分析1、程序的功能。2、输入输出的要求。二、 概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。2、课题的总体数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。三、 详细设计1、采用C语言定义相关的数据类型。2、写出各模块的类C码算法。3、画出函数的调用关系图。四、 调试分析以及设计体会1、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。2、程序调试中遇到的问题以及解决问题的方法。3、课程设计过程经验教训、心得体会。五、 使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。六、 书写格式1、 设计报告要求用A4纸打印成册:2、 标题和正文要求见附13、 封面格式如下页。七、 附录1、参考书目2、源程序清单(带注释)湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 图书信息管理系统 专业班级 土木工程1381 学生姓名 李晨希 学 号 201313170125 指导老师 王颖 审 批 王颖 任务书下达日期 2015年 12月27日 任务完成日期 2016年 1月 7 日 设计课题七:图书信息管理系统1、 问题描述通过该系统实现对图书信息进行录入、显示、修改、删除、插入、排序、保存等操作的管理。2、 功能描述试设计一图书信息管理系统,使之能提供以下功能:1. 系统以菜单方式工作2. 图书信息录入功能(图书信息用文件保存)-输入3. 图书信息浏览功能-输出4. 图书信息查询功能 查询方式: (1)按书名查询 (2) 按作者名查询5. 图书信息的删除与修改(可选项)3、 算法提示1. 数据结构:结构体类型数组2. 数据库结构:下表构成该系统的基本数据库登录号书名作者名分类号出版单位出版时间价格intcharcharcharcharcharFloat4、 测试数据图书册数N=10 目录一、系统需求分析 -1 1.1系统设计的目的与意义-1 1.2系统功能需求-1二、总体设计-1 2.1系统功能分析-1 2.2系统功能模块划分与设计-1 2.3系统功能模块图-1三、概要设计-3四、详细设计-3 4.1头函数名- 3 4.2管理员登录系统模块 - 3 五、系统调试-10六、结果分析-11七、总结-感想与体会-11八、.附录 -12 附件1-12 附件2-13九、评分表-28一、系统需求分析1.1系统设计的目的与意义: 图书系统在生活中运用相当广泛,为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借还书带来便利。使用C语言编写了图书信息管理系统。1.2 系统功能需求: 本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。二、总体设计2.1 系统功能分析: 图书信息包括编号、书名、作者、出版社、出版日期、价格、在库状态等。 系统以菜单方式工作,通过调用函数来实现删除图书、读者信息,添加图书、读者信息等功能。choice_4_delete_according_name()函数用于删除图书信息;choice_1_input_new()函数用于增加图书信息;choice_2_display_all()显示全部图书信息操作等等;主函数用来调用这些函数。2.2系统功能模块划分与设计 (1)管理员登录系统模块(2)菜单选择模块(3)图书信息录入功能模块(4)图书信息浏览功能(5)图书信息查询功能(6)图书信息的删除和修改 2.3 系统功能模块图: 图1-1图1-2三、概要设计(1)系统主菜单显示系统主菜单,里面欧相应的功能代码,根据选择各功能代码进入不同的界面。功能主要包括:退出系统、查询图书、借书、还书。(2) 查询图书信息进入此菜单功能模块、输入您要查询的图书的编号、名字、作者着。 四、详细设计4.1头函数名 #include #include #include #include #include /*图书信息结构体*/ /*包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等*/ int number;*登录名 char bookname*书名 char authername*作者名 char publishcom*出版单位 char publishtime*出版时间 float price*价格 ;4.2管理员登录系统模块: (1)图书信息管理页面 void menu() char input; printf(nnttt*n); printf(ttt图书管理系统n); printf(ttt*nnn); printf(-n); printf(tnt); input=getchar(); (2)功能菜单页面 void menu() printf(nnnnnnn); printf(ttt图书管理系统n); printf(ttt1:新进图书基本信息的输入n); printf(ttt2:显示全部记录n); printf(ttt3:根据图书名称查询图书基本信息n); printf(ttt4:根据图书名称对撤销的图书信息进行删除n); printf(ttt5:按照图书名称从小大到排序n); printf(ttt6:统计某价格以上的图书数量n); printf(ttt7:列出所有未借出去的图书信息n); printf(ttt8:退出n); (3)图书信息录入功能模块 while(1) printf(请输入图书编号:); gets(newbook.number); printf(请输入图书名称:); gets(); printf(请输入图书单价:); scanf(%f,&newbook.price); while(getchar()!=n); printf(请输入图书的作者:); gets(newbook.auther); printf(请输入借书人姓名:); gets(newbook.lendername); printf(请输入借书人性别:); gets(newbook.lendersex); printf(请输入借书人学号:); gets(newbook.lendernum); printf(是否保存该条书目?(Y/N)n); choice=getch(); while(choice!=Y&choice!=y&choice!=N&choice!=n) choice=getch(); if(choice=Y|choice=y) (4)图书信息浏览功能模块 if(booknumber=0) printf(书库中没有任何信息!nn); printf(按任意键回到主菜单!nn); getch(); break; /*if结束*/ else for(n=0;n=booknumber) printf(没有查找该书的任何信息!n); printf(nn是否继续查询?(Y/N)n); choice=getch(); while(choice!=Y&choice!=y&choice!=N&choice!=n) choice=getch(); if(choice=Y|choice=y) continue; else break; /*else结束*/ /*while(1)结束*/ (5)图书信息删除功能模块 if(strcmp(,search)=0) break; if(n=booknumber) printf(没有查找该书的任何信息!n); else printf(是否确认需要删除该条书目?(Y/N); choice=getch(); while(choice!=Y&choice!=y&choice!=N&choice!=n) choice=getch(); if(choice=Y|choice=y) for(i=n;ibooknumber-1;i+) bookinfoi=bookinfoi+1; booknumber-; p=fopen(bookinfo.data,wb); for(n=0;nbooknumber;n+) fwrite(&bookinfon,sizeof(BOOKINFO),1,p); fclose(p); printf(删除成功!n); else printf(nn该条书目没有被删除!); printf(nn是否继续进行删除操作?(Y/N)n); choice=getch(); while(choice!=Y&choice!=y&choice!=N&choice!=n) choice=getch(); if(choice=Y|choice=y) continue; else break; /*else结束*/ /*while(1)结束*/ (6)图书信息查询功能模块 while(1) printf(输入要查询的书本名称:);gets(search);if(booknumber=0)printf(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/elsefor(n=0;n=booknumber)printf(没有查找该书的任何信息!n);printf(nn是否继续查询?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)choice=getch();if(choice=Y|choice=y)continue;else break; /*else结束*/*while(1)结束*/ 五、系统调试图2-1图2-1 六、结果分析 本程序满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C语言的编程思想来完成系统的设计,做到了每个借阅者建立一个账户,账户中存储借阅者的个人信息、借阅信息等要求。而且界面美观,容易操作。但是程序太长,不够简练,导致出现错误很难发现和修改。 七、感想和体会: 通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好C语言是多么的重要;让我掌握了许多有用的知识。 在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。 以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。八、附录附1:l 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 l 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。l 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。l 正文总字数要求在5000字以上(不含程序原代码)。附2. 源程序清单:#include #include #include #include #include typedef int BOOL;typedef struct bookinfo char number15;/*产品编号*/ char name30;/*产品名称*/ float price;/*单价*/ char auther20;/*作者*/ BOOL isExit;/*存在状态*/ char lendername20;/*借书人姓名*/ char lendersex2;/*借书人性别*/ char lendernum15;/*借书人学号*/BOOKINFO;void menu() printf(nnnnnnn); printf(ttt图书管理系统n); printf(ttt1:新进图书基本信息的输入n); printf(ttt2:显示全部记录n); printf(ttt3:根据图书名称查询图书基本信息n); printf(ttt4:根据图书名称对撤销的图书信息进行删除n); printf(ttt5:按照图书名称从小大到排序n); printf(ttt6:统计某价格以上的图书数量n); printf(ttt7:列出所有未借出去的图书信息n); printf(ttt8:退出n);void choice_1_input_new()/*输入新进的图书信息*/ char choice; FILE *p; BOOKINFO newbook; system(cls);printf(tt*新进图书基本信息的输入:*nnn);system(pause); while(1)printf(请输入图书编号:);gets(newbook.number);printf(请输入图书名称:);gets(); printf(请输入图书单价:);scanf(%f,&newbook.price);while(getchar()!=n);printf(请输入图书的作者:);gets(newbook.auther); printf(请输入借书人姓名:);gets(newbook.lendername); printf(请输入借书人性别:);gets(newbook.lendersex); printf(请输入借书人学号:);gets(newbook.lendernum);printf(是否保存该条书目?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)choice=getch();if(choice=Y|choice=y) newbook.isExit=1;/*将图书状态设置成1,表示没有借出*/p=fopen(bookinfo.data,ab);fwrite(&newbook,sizeof(BOOKINFO),1,p);fclose(p); printf(n该条书目已添加到bookinfo.data文件中!n); else printf(n本条书目未保存!n); printf(n是否继续添加书目?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)choice=getch();if(choice=Y|choice=y)continue;else break; void choice_2_display_all()/*显示全部图书信息*/ FILE *p; int n; BOOKINFO bookinfo100; int booknumber=0; system(cls); p=fopen(bookinfo.data,rb); while(!feof(p)fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; /*booknumber-;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); booknumber-; if(booknumber=0)printf(没有任何图书信息!nn); else n=0;printf( 图书信息如下n);printf( 图书信息 | 借书人信息 n);printf(编号 名称 单价 作者 图书状态 | 姓名 性别 学号n);while(nbooknumber) printf(%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8sn,bookinfon.number,,bookinfon.price,bookinfon.auther,bookinfon.isExit,bookinfon.lendername,bookinfon.lendersex,bookinfon.lendernum);n+; printf(nn按任意键回到主菜单!n); getch(); void choice_3_search_according_name()/*根据图书名称显示图书的信息*/ char search20=;/*search用来存放要查询的书名*/ int n; FILE *p; char choice; BOOKINFO bookinfo100; int booknumber=0; system(cls); p=fopen(bookinfo.data,rb); while(!feof(p)fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; booknumber-;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); while(1) printf(输入要查询的书本名称:);gets(search);if(booknumber=0)printf(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/elsefor(n=0;n=booknumber)printf(没有查找该书的任何信息!n);printf(nn是否继续查询?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)choice=getch();if(choice=Y|choice=y)continue;else break; /*else结束*/*while(1)结束*/ void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/ char search20=;/*search用来存放要删除的书名*/ int n,i; FILE *p; char choice; BOOKINFO bookinfo100; int booknumber; system(cls); while(1)printf(输入要删除的书本名称:);gets(search);p=fopen(bookinfo.data,rb);booknumber=0;while(!feof(p) fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; booknumber-;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/fclose(p); if(booknumber=0) printf(书库中没有任何信息!nn);printf(按任意键回到主菜单!nn);getch();break; /*if结束*/else for(n=0;n=booknumber)printf(没有查找该书的任何信息!n);elseprintf(是否确认需要删除该条书目?(Y/N);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)choice=getch();if(choice=Y|choice=y) for(i=n;ibooknumber-1;i+)bookinfoi=bookinfoi+1; booknumber-;p=fopen(bookinfo.data,wb);for(n=0;nbooknumber;n+)fwrite(&bookinfon,sizeof(BOOKINFO),1,p);fclose(p);printf(删除成功!n);elseprintf(nn该条书目没有被删除!); printf(nn是否继续进行删除操作?(Y/N)n);choice=getch();while(choice!=Y&choice!=y&choice!=N&choice!=n)choice=getch();if(choice=Y|choice=y)continue;else break; /*else结束*/*while(1)结束*/void choice_5_sort_according_name()/*根据图书名称排序*/ FILE *p; int m,n; BOOKINFO temp; BOOKINFO bookinfo100; int booknumber; p=fopen(bookinfo.data,rb); booknumber=0; system(cls); while(!feof(p)fread(&bookinfobooknumber,sizeof(BOOKINFO),1,p);booknumber+; booknumber-;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); if(booknumber=0)printf(没有任何图书信息!nn); elsefor(m=0;mbooknumber-1;m+)for(n=m+1;n0)temp=bookinfom;bookinfom=bookinfon;bookinfon=temp; p=fopen(bookinfo.data,wb);for(m=0;mbooknumber;m+)fwrite(&bookinfom,sizeo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论