资源描述
精选优质文档-倾情为你奉上苏州科技学院二一四 二一五学年第二学期电子与信息工程学院课程设计报告书课程名称: 班 级: 学 号: 姓 名: 指导教师: 二一五年三月1.题目 小型图书信息管理系统2.功能 1、信息录入,包括记录的追加和插入;2、信息删除;3、信息修改;4、信息排序和查询;5、信息的保存和装载;6、简单的帮助。3.要求(1)整个系统均用C语言实现;(2)利用指针、链表来实现图书馆的数据结构设计;(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将图书信息保存在文件中。(6)可以将图书信息从文件中读取出来。4.设计内容整个系统除了主函数外,另外还有6个函数,实现八大功能:输入功能,查找功能,插入功能,保存功能,删除功能,读取功能。各个函数的详细设计说明分别如下:4.1主函数 main()利用无限次循环for(;)实现各函数的调用,系统根据输入的数字选项来调用相应的函数。4.2初始化函数 book *create()这是一个无参函数,它的作用是使链表初始化,使head的值为NULL。4.3输入函数 Insert(book *head)这是一个无参函数,用来执行图书信息的输入。算法:先声明一个首节点head,并将head-next设为NULL。每输入一个数据就声明一个新节点p,把p-next设为NULL,并且链接到之前列表的尾端。N-S流程图如下:while(p-next!=NULL) 输入图书信息INSERT SUCCESS4.4修改函数 change(book *head)用于修改图书信息。算法:输入需修改图书的书名,判断是否有本书,若有,再进行修改。N-S流程图如下:当输入的图书名存在 输入新的图书信息Pd=1当pd=0,没有此书4.5显示记录函数 void Print(book *head)这是一个不返回值的有参函数,将记录的输出。算法:先将p结点的指针指向第一个结点,将p结点的数据输出,再将p结点的指针指向下一结点,将下一结点的数据输出。重复执行此步聚直到p指针指向NULL为止。N-S流程图如下: p=head,使指向第一个结点 输出p所指向的结点p指向一下个结点当p指的不是表尾4.6查找记录函数 void search(book *head)这是一个不返回值的有参函数,形参为“链表头的指针”,实现按书名对某书进行查找,并显示所查找到的记录。算法:采用线性查找法往下一个节点查找。输入所要查找的图书的名称,设一个指针变量p,先指向第一个结点,当strcmp(p-name,name1) & p != NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。N-S流程图如下:输入要查找的学生的学号sp=head,使p指向第一结点当记录的书名不是要找的,或指针不为空时p=p-next p!=NULL如果指针不为空是否显示没有该输出p所指向的结点图书4.7删除记录函数 Delete(book *head)这是一个有参函数,形参为“链表头的指针”,先输入要删除的图书的名称,找到后进行删除。算法:从p指向的第一个结点开始,检查该结点中的bookname是否等于输入的要求删除的那个书名。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。N-S流程图如下:p=head输入入要删除的图书当(strcmp(p-bookname,temp)=0)pd=1 p=p-next;p是要删除的结点是 否删除成功未找到本书5. 调试分析在编写完程序后,点击编译,显示是1个错误。但是往上看的时候,却是很多。改的时候发现有些是句子写错了,然后再看看书,上网查下,就改好了。还有2处是打错字母了最后0 error(s), 0 warning(s)。但是在信息录入的时候,输入到pubtime后出错,程序停止运行,仔细看了程序,才发现在输入pubtime和price时,句子中&忘记打了后面程序中也有几处关于&的问题,还有是%d与%f写错了。能输入信息后,在浏览和查询时,输出的信息和上面对应的项目不对应,还有一些是地址。然后输入数据,多次更改后,把数据对应了起来。6. 总结通过这个作业,我又对链表,指针等有了一些了解,能更好的运用。还上网查了一些资料,对这门课有了加强。当编写完这个程序,并成功运行起来,我感觉到有一种成就感,我觉得这种感觉对学习是很有帮助的,能帮我在学习中找到乐趣。程序如下#include#include#includestruct bookchar author25;char bookname25;char publisher25;int pubtime;int innum;float price;struct book *next;struct book *create()struct book *head;head=(struct book *)malloc(sizeof(struct book);head-next=NULL;return head;void Save(struct book *head)struct book *p;FILE *fp;p=head;if(fp=fopen(data.txt,w+)=NULL)printf(can not open this filen); exit(0);fprintf(fp, innum bookname author publisher pubtime price n);while(p-next!=NULL)p=p-next;fprintf(fp,%-6d%-10s%-10s%-10s%-10d%-8f,p-innum,p-bookname,p-author,p-publisher,p-pubtime,p-price);fclose(fp);printf( 信息已保存! n);void Insert(struct book *head)struct book *s,*p;p=head;while(p-next!=NULL)p=p-next;s=(struct book *)malloc(sizeof(struct book);printf(input the innum :n);scanf(%d,&s-innum);printf(input the bookname :n);scanf(%s,s-bookname);printf(input the author name :n);scanf(%s,s-author);printf(input the publisher :n);scanf(%s,s-publisher);printf(input the pubtime :n);scanf(%d,&s-pubtime);printf(input the price :n);scanf(%f,&s-price);printf(n);p-next=s;p=s;s-next=NULL;printf( INSERT SUCCESS !n);void Search(struct book *head)struct book *p;char name120;p=head;if(head=NULL|head-next=NULL)printf( library is empty !);elseprintf(input the name1 :n);scanf(%s,name1);while(p-next!=NULL)p=p-next;if(strcmp(p-bookname,name1)=0)printf( found ! n);printf(innum:%dn,p-innum);printf(bookname:%sn,p-bookname);printf(author:%sn,p-author);printf(pubtime:%dn,p-pubtime);printf(publisher:%sn,p-publisher);printf(price:%fn,p-price);if(p-next=NULL)printf(n查询结束!);void Print(struct book *head)struct book *p;if(head=NULL|head-next=NULL)printf(nt无记录n);return;p=head;printf(n登录号 书名 作者 出版单位 出版时间 价格 n);while(p-next!=NULL)p=p-next;printf(%-d %-8s %-8s %-8s %-5d %-8fn,p-innum,p-bookname,p-author,p-publisher,p-pubtime,p-price);void change(struct book *head)struct book *p;int pd=0;char temp20;p=head;printf(要修改的书名:);scanf(%s,temp);while(p-next!=NULL)p=p-next;if(strcmp(p-bookname,temp)=0)printf(输入登录号码:);fflush(stdin);scanf(%d,&p-innum);printf(输入书名:);fflush(stdin);scanf(%s,p-bookname);printf(输入作者名:);fflush(stdin);scanf(%s,p-author);printf(输入出版社:);fflush(stdin);scanf(%s,p-publisher);printf(输入出版时间:);fflush(stdin);scanf(%d,&p-pubtime);printf(输入价格:);fflush(stdin);scanf(%d,&p-price);printf(n);pd=1;if(pd=0)printf(没有记录);return;void Delete(struct book *head)struct book *s,*p;char temp20;int pd;pd=0;p=s=head;printf(请输入要删除的书名!);scanf(%s,temp);while(p!=NULL)if(strcmp(p-bookname,temp)=0)pd+;break;p=p-next;if(pd=1)for(;s-next!=p;)s=s-next;s-next=p-next;free(p);printf(删除成功!);elseprintf(未找到本书);return;int main(void)struct book *head;char choice;head=NULL;for(;)printf(图书管理系统n);printf(1 信息录入n);printf(2信息浏览n);printf(3信息查询n);printf(4信息修改n);printf(5信息删除n);printf(6退出n);fflush(stdin);scanf(%c,&choice);if(choice=1)if(head=NULL)head=create();Insert(head);else if(choice=2)Print(head);else if(choice=3)Search(head);else if(choice=4)change(head);else if(choice=5)Delete(head);else if(choice=6)printf(n);printf(谢谢使用n);break;elseprintf(输入错误n);break;return 0;专心-专注-专业
展开阅读全文