程序设计实践_第1页
程序设计实践_第2页
程序设计实践_第3页
程序设计实践_第4页
程序设计实践_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

程序设计实践程序设计实践程序设计实践xxx公司程序设计实践文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度苏州科技学院二○一四~二○一五学年第二学期电子与信息工程学院课程设计报告书课程名称:班级:学号:姓名:指导教师:二○一五年三月1.题目小型图书信息管理系统2.功能 1、信息录入,包括记录的追加和插入;2、信息删除;3、信息修改;4、信息排序和查询; 5、信息的保存和装载; 6、简单的帮助。3.要求(1)整个系统均用C语言实现;(2)利用指针、链表来实现图书馆的数据结构设计;(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将图书信息保存在文件中。(6)可以将图书信息从文件中读取出来。4.设计内容整个系统除了主函数外,另外还有6个函数,实现八大功能:输入功能,查找功能,插入功能,保存功能,删除功能,读取功能。各个函数的详细设计说明分别如下:主函数main()利用无限次循环for(;;)实现各函数的调用,系统根据输入的数字选项来调用相应的函数。初始化函数book*create()这是一个无参函数,它的作用是使链表初始化,使head的值为NULL。输入函数Insert(book*head)这是一个无参函数,用来执行图书信息的输入。算法:先声明一个首节点head,并将head->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。N-S流程图如下:while(p->next!=NULL) 输入图书信息 INSERTSUCCESS 修改函数change(book*head)用于修改图书信息。算法:输入需修改图书的书名,判断是否有本书,若有,再进行修改。N-S流程图如下:当输入的图书名存在 输入新的图书信息 Pd=1 当pd=0,没有此书显示记录函数voidPrint(book*head)这是一个不返回值的有参函数,将记录的输出。算法:先将p结点的指针指向第一个结点,将p结点的数据输出,再将p结点的指针指向下一结点,将下一结点的数据输出。重复执行此步聚直到p指针指向NULL为止。N-S流程图如下:p=head,使指向第一个结点 输出p所指向的结点 p指向一下个结点 当p指的不是表尾查找记录函数voidsearch(book*head)这是一个不返回值的有参函数,形参为“链表头的指针”,实现按书名对某书进行查找,并显示所查找到的记录。算法:采用线性查找法往下一个节点查找。输入所要查找的图书的名称,设一个指针变量p,先指向第一个结点,当strcmp(p->name,name1)&&p!=NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。N-S流程图如下:输入要查找的学生的学号sp=head,使p指向第一结点当记录的书名不是要找的,或指针不为空时 p=p->nextp!=NULL如果指针不为空 是 否 显示没有该 输出p所指向的结点 图书删除记录函数Delete(book*head)这是一个有参函数,形参为“链表头的指针”,先输入要删除的图书的名称,找到后进行删除。算法:从p指向的第一个结点开始,检查该结点中的bookname是否等于输入的要求删除的那个书名。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。N-S流程图如下:p=head 输入入要删除的图书当(strcmp(p->bookname,temp)==0) pd=1p=p->next; p是要删除的结点是 否删除成功 未找到本书

调试分析在编写完程序后,点击编译,显示是1个错误。但是往上看的时候,却是很多。改的时候发现有些是句子写错了,然后再看看书,上网查下,就改好了。还有2处是打错字母了……最后0error(s),0warning(s)。但是在信息录入的时候,输入到pubtime后出错,程序停止运行,仔细看了程序,才发现在输入pubtime和price时,句子中&忘记打了……后面程序中也有几处关于&的问题,还有是%d与%f写错了。能输入信息后,在浏览和查询时,输出的信息和上面对应的项目不对应,还有一些是地址。然后输入数据,多次更改后,把数据对应了起来。总结通过这个作业,我又对链表,指针等有了一些了解,能更好的运用。还上网查了一些资料,对这门课有了加强。当编写完这个程序,并成功运行起来,我感觉到有一种成就感,我觉得这种感觉对学习是很有帮助的,能帮我在学习中找到乐趣。程序如下#include<>#include<>#include<>structbook{ charauthor[25]; charbookname[25]; charpublisher[25]; intpubtime; intinnum; floatprice; structbook*next;};structbook*create(){ structbook*head; head=(structbook*)malloc(sizeof(structbook)); head->next=NULL; returnhead;}voidSave(structbook*head){ structbook*p; FILE*fp; p=head; if((fp=fopen("","w+"))==NULL) { printf("cannotopenthisfile\n");exit(0); } fprintf(fp,"innumbooknameauthorpublisherpubtimeprice\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"); }}voidInsert(structbook*head){ structbook*s,*p; p=head; while(p->next!=NULL) { p=p->next; } s=(structbook*)malloc(sizeof(structbook)); printf("inputtheinnum:\n"); scanf("%d",&s->innum); printf("inputthebookname:\n"); scanf("%s",s->bookname); printf("inputtheauthorname:\n"); scanf("%s",s->author); printf("inputthepublisher:\n"); scanf("%s",s->publisher); printf("inputthepubtime:\n"); scanf("%d",&s->pubtime); printf("inputtheprice:\n"); scanf("%f",&s->price); printf("\n"); p->next=s; p=s; s->next=NULL; printf("INSERTSUCCESS!\n");} voidSearch(structbook*head){ structbook*p; charname1[20]; p=head; if(head==NULL||head->next==NULL) printf("libraryisempty!"); else printf("inputthename1:\n"); scanf("%s",name1); while(p->next!=NULL) { p=p->next; if(strcmp(p->bookname,name1)==0) { printf("found!\n"); printf("innum:%d\n",p->innum); printf("bookname:%s\n",p->bookname); printf("author:%s\n",p->author); printf("pubtime:%d\n",p->pubtime); printf("publisher:%s\n",p->publisher); printf("price:%f\n",p->price); } if(p->next==NULL) printf("\n查询结束!"); }}voidPrint(structbook*head){ structbook*p; if(head==NULL||head->next==NULL) { printf("\n\t无记录\n"); return; } p=head; printf("\n登录号书名作者出版单位出版时间价格\n"); while(p->next!=NULL) { p=p->next; printf("%-d%-8s%-8s%-8s%-5d%-8f\n",p->innum,p->bookname,p->author,p->publisher,p->pubtime,p->price); }}voidchange(structbook*head){ structbook*p; intpd=0; chartemp[20]; 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;}voidDelete(structbook*head){ structbook*s,*p; chartemp[20]; intpd; 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("删除成功!"); } else { printf("未找到本书"); } return;}intmain(void){ structbook*head; charchoice; head=NULL; for(;;) {

温馨提示

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

评论

0/150

提交评论