C语言-图书借阅管理系统.doc_第1页
C语言-图书借阅管理系统.doc_第2页
C语言-图书借阅管理系统.doc_第3页
C语言-图书借阅管理系统.doc_第4页
C语言-图书借阅管理系统.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

成 绩 评 定 表学生姓名任春雷班级学号1203050126专 业计算机科学与技术课程设计题目图书借阅系统评语组长签字: 成绩日期 201 年 月 日课程设计任务书学 院信息科学与工程学院专 业计算机科学与技术学生姓名任春雷班级学号1203050126课程设计题目图书借阅系统实践教学要求与任务:设计一个图书借阅系统,功能包括:图书管理子系统,由管理员负责录入书籍(包括ISBN号、书名、作者、数量等信息),废旧图书销毁等功能;图书借阅子系统(保存用户名、借阅的书的ISBN号、借阅日期等信息),负责图书的借阅、归还、续借、超期罚款等功能;查询子系统,包括可以查询书库中的书、客户借阅情况等,信息保存到文件中。工作计划与进度安排:第14周: 问题分析,方案设计,软件编码和调试;第19周: 软件测试,书写课设报告,答辩。指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日一、实训题目和实训任务1. 实训题目 图书借阅系统2. 实训任务 设计一个图书借阅系统,功能包括:图书管理子系统,由管理员负责录入书籍(包括ISBN号、书名、作者、数量等信息),废旧图书销毁等功能;图书借阅子系统(保存用户名、借阅的书的ISBN号、借阅日期等信息),负责图书的借阅、归还、续借、超期罚款等功能;查询子系统,包括可以查询书库中的书、客户借阅情况等。(可以自己发挥);信息保存到文件中。3. 题目分析 一个学校的图书馆,其图书借阅管理系统应有如下几个功能:1, 图书管理员将图书的ISBN号,书名,书名,作者,价格等输入到系统中存储区来,以便以后使用。而且还能修改图书的内容。2, 读者可以按照图书的ISBN号或书名,作者到系统中查找并借阅所需要的图书,每人借阅图书的数量不超过20本。3, 建立文件,将信息保存在文件中。方法:1, 建立一个关于图书的结构体,内含ISBN号,书名,作者,出版社和价格。2, InsertDoc函数,负责新书信息的插入。3, void sort_maopao函数,用冒泡法将图书的ISBN号以由小到大的顺序进行排列。 4, void DeleteDoc函数,将废旧图书信息进行删除。5, void Print_Book_Doc函数,输出图书的信息,方便读者选书。6, void search_book函数,进行图书的查询。7, void info_change函数,将图书信息进行修改。8, 主函数,用switch-case结构进行函数的调用。4. 开发工具和环境开发工具:Visual C+ 6.0, CodeBlock10.05,等环境:Windows 7二、软件设计1. 关键技术分析 设计一个图书借阅系统,功能包括:图书管理子系统,由管理员负责录入书籍(包括ISBN号、书名、作者、数量等信息),废旧图书销毁等功能;图书借阅子系统(保存用户名、借阅的书的ISBN号、借阅日期等信息),负责图书的借阅、归还、等功能;查询子系统,包括可以查询书库中的书,信息保存到文件中。 2. 软件模块设计图书管理系统图书排序图书借阅信息删除信息查询信息修改信息浏览信息录入 图2-2-13. 软件界面设计 图2-3-1三、软件测试及运行结果1测试方案选择1,输入01 大学英语 李梦华 上海外语 38 02 大学物理 许嵩宁 科学出版社 51选择2,输出图3-2-1选择7,输出图3-2-2 2. 测试结结果 图3-2-1图3-2-2四、收获和体会1实习收获在编程实践中,我才知道自己基础知识的不足,通过一段时间的努力学习,我的基础知识更加牢固,尤其是后面指针,结构体,链表,文件的知识了解的更加深入。其次是知识的运用,以前学到的知识都是片面的了解,一到编程序时就无从下手,现在能熟练的应用各种知识,使知识得到应用。最后是编程的技巧,从整体构型到各个函数的应用都有了很大的进步。2. 实习体会通过一段时间的编程实践,使我c语言的知识了解的更加深刻,知识面更加宽广。同时,在编程实践中遇到了很多困难,明显的了解到自己知识运用能力的不足,通过查书和与同学交流,使我取得了很大的进步。 在编程过程中,与同学的交流使我获得了很大的进步,老师的指导更是使我获益匪浅,一些难懂的知识经老师点拨瞬间变得豁然开朗。 以前看到能力强的同学编数百行的程序就吓住了自己,总觉得自己不行,但经过努力,当程序运行出来时才觉得,原来编程并不是很难,这极大地增加了自己的自信心,为以后的学习和工作打下了良好地基础,我认为这才是我最重要的收获。五、源代码清单#include#include#include#includestruct books_list char writer20; /*作者名*/ char title20; char ISBN20; /*书名*/ char publishinghouse20; /*出版单位*/ int price,borrowed; /*价格*/ struct books_list * next; /*链表的指针域*/; struct books_list * Create_Books_Doc(); /*新建链表*/void InsertDoc(struct books_list * head); /*插入*/void sort_maopao(struct books_list * head ); / 排序void DeleteDoc(struct books_list * head , int num); /*删除*/void Print_Book_Doc(struct books_list * head); /*浏览*/void search_book(struct books_list * head); /*查询*/void info_change(struct books_list * head); /*修改*/void save(struct books_list * head); /*保存数据至文件*/ /*新建链表头节点*/struct books_list * Create_Books_Doc() struct books_list * head; head=(struct books_list *)malloc(sizeof(struct books_list); /*分配头节点空间*/ head-next=NULL; /*头节点指针域初始化,定为空*/ return head; /*保存数据至文件*/void save(struct books_list * head) struct books_list *p; FILE *fp; p=head; fp=fopen(data.txt,w+); /*以写方式新建并打开 data.txt文件*/ fprintf(fp, -编号-书 名-作 者-出版社-价格 n); /*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/ while(p-next!= NULL) p=p-next; fprintf(fp,%-6.6s %-15.10s %-10.10s %-10.10s %-10.10dn,p-ISBN,p-title,p-writer,p-publishinghouse,p-price); fprintf(fp,n); fclose(fp); printf( 已将图书数据保存到 data.txt 文件n);void sort_maopao(struct books_list * head ) struct books_list *tail,*p,*q,*p1,*t; /p1等于head t等于head q保存p的next节点 p1=(struct books_list *)malloc(sizeof (struct books_list); for(t=head-next;t!=NULL;t=t-next) for(p=head-next,p1=head;p-next!=NULL;p=p-next,p1=p1-next) if(strcmp(p-ISBN,p-next-ISBN)0) q=p-next-next; tail=p-next; tail-next=NULL; p-next=q; p1-next=tail; tail-next=p; p=p1; save(head); /保存文件 /*插入*/void InsertDoc(struct books_list *head) /*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/ struct books_list *s, *p; char flag=Y; /*定义flag,方便用户选择重复输入*/ p=head; /*遍历到尾结点,p指向尾结点*/ while(p-next!= NULL) p=p-next; /*开辟新空间,存入数据,添加进链表*/ while(flag=Y|flag=y) system(cls); p-borrowed=0; s=(struct books_list *)malloc(sizeof(struct books_list); printf(n 请输入图书编号:); fflush(stdin); scanf(%s,s-ISBN); printf(n 请输入图书书名:); fflush(stdin); scanf(%s,s-title); printf(n 请输入图书作者名:); fflush(stdin); scanf(%s,s-writer); printf(n 请输入图书出版社:); fflush(stdin); scanf(%s,s-publishinghouse); printf(n 请输入图书价格:); fflush(stdin); scanf(%d,&s-price); printf(n); p-next=s; /*将新增加的节点添加进链表*/ p=s; /*p指向尾节点,向后移*/ s-next=NULL; printf( 添加成功!); printf(n 继续添加?(Y/N):); fflush(stdin); scanf(%c,&flag); printf(n); if(flag=N|flag=n) break; else if(flag=Y|flag=y) continue; save(head); /*保存数据至文件*/ system(cls); return;/*查询操作*/void search_book(struct books_list *head) struct books_list * p; char temp20; p=head; if(head=NULL | head-next=NULL) /*判断数据库是否为空*/ printf( 图书库为空!n); else printf(请输入您要查找的书名: ); fflush(stdin); scanf(%s,temp); /*指针从头节点开始移动,遍历至尾结点,查找书目信息*/ while(p-next!= NULL) p=p-next; if(strcmp(p-title,temp)=0) printf(n图书已找到!n); printf(n); printf(编号: %stn,p-ISBN); printf(书名: %stn,p-writer); printf(作者名: %stn,p-writer); printf(出版单位: %stn,p-publishinghouse); printf(价格: %.2dtn,p-price); if(p-next=NULL) printf(n查询完毕!n); return; /*浏览操作*/ void Print_Book_Doc(struct books_list * head) struct books_list * p; if(head=NULL | head-next=NULL) /*判断数据库是否为空*/ printf(n 没有图书记录! nn); return; p=head; printf(nnntt编号 书 名 作 者 出版单位 价格 n); /*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/ while(p-next!= NULL) p=p-next; printf(tt%-7.6s %-13.10s %-10.10s %-10.10s %d n,p-ISBN,p-title,p-writer,p-publishinghouse,p-price); printf(n); /*修改操作*/void info_change(struct books_list * head) struct books_list * p; int panduan=0; /*此变量用于判断是否找到书目*/ char temp20; p=head; printf(请输入要修改的书名:); scanf(%s,temp); while(p-next!= NULL) p=p-next; if(strcmp(p-title,temp)=0) printf(n 请输入图书编号:); fflush(stdin); scanf(%d,p-ISBN); printf(n 请输入图书书名:); fflush(stdin); scanf(%s,p-title); printf(n 请输入图书作者名:); fflush(stdin); scanf(%s,p-writer); printf(n 请输入图书出版社:); fflush(stdin); scanf(%s,p-publishinghouse); printf(n 请输入图书价格:); fflush(stdin); scanf(%d,&p-price); printf(n); panduan=1; if(panduan=0) printf(n 没有图书记录! nn); return;void book_borrow(struct books_list * head) struct books_list * p; int panduan=0; /*此变量用于判断是否找到书目*/ char temp20; p=head; printf(请输入要借的书名:); scanf(%s,temp); while(p-next!= NULL) p=p-next; if(strcmp(p-title,temp)=0)&(p-borrowed=0) p-borrowed=1; panduan=1; printf(图书已经成功借出n); if(panduan=0) printf(n 没有要借阅的图书! nn); return;/*删除操作*/void DeleteDoc(struct books_list * head) struct books_list *s,*p; /*s为中间变量,p为遍历时使用的指针*/ char temp20; int panduan; /*此变量用于判断是否找到了书目*/ panduan=0; p=s=head; printf( 请输入您要删除的书名:); scanf(%s,temp); /*遍历到尾结点*/ while(p!= NULL) if(strcmp(p-title,temp)=0) panduan+; break; p=p-next; if(panduan=1) for(;s-next!=p;) /*找到所需删除卡号结点的上一个结点*/ s=s-next; s-next=p-next; /*将后一节点地址赋值给前一节点的指针域*/ free(p); printf(n 删除成功! n); else /*未找到相应书目*/ printf( 您输入的书目不存在,请确认后输入!n); return;int main(void) struct books_list * head; int choice; head=NULL; do printf( n)

温馨提示

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

评论

0/150

提交评论