




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上东莞理工学院C语言程序设计课程设计题 目:图书信息管理系统院 系:会计学院专 业:会计学年 级:2012班 别: 4班 指导教师:组 长: 同组成员:目录一 目的 本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。 二 需求分析 根据图书馆图书信息管理的需要,建立一个“图书信息管理系统”,以方便对图书的各项管理操作。开发目的如下:1、图书信息包括:登录号、书名、作者名、分类
2、号、出版单位、出版时间、价格等。2、图书信息管理系统,提供以下功能: 1)图书信息录入功能(图书信息用文件保存)输入;2)图书信息浏览功能输出 ;3)查询和排序功能:算法 ;4)按书名查询 ;5)按作者名查询 ;6) 按登录号从大到小排列;7)图书信息的删除与修改 三 概要设计 程序总体功能框架: 开 始 界 面 主 要 提 示 的 菜 单 界 面 删 除 图 书 信 息 浏 览 图 书 信 息 查 询 图 书 信 息 修 改 图 书 信 息 插 入 图 书 信 息采用结构: struct tsxx/定义结构long dlnum;/定义登录号char bname10;/定义书名ch
3、ar aname10;/定义作者名char scnum10;/定义分类号char plname10;/定义出版社名char time11;/定义录入时间float price;/定义价格struct tsxx * next;/定义指向下一个结构的首地址;链表结构:struct tsxx Bstruct tsxx Aheadstruct tsxx DNULLstruct tsxx C各功能独立自定义的函数:1、插入图书信息(按登录号从大到小排序):struct tsxx * zengjia(struct tsxx * head)/传递链表的首地址,并返回链表的首地址2. 、浏览全部的图书信息:v
4、oid Ptrint_Stu_Doc(struct tsxx *head)/传递链表的首地址3、查询图书信息(包括书名查询和作者名查询):void Check(struct tsxx * head)/传递链表的首地址4、删除图书信息:struct tsxx * Delete(struct tsxx * head)/传递链表的首地址,并返回链表的首地址5.、修改图书信息:struct tsxx * revise(struct tsxx * head)/传递链表的首地址,并返回链表的首地址其他一些变量的定义:long size;/定义结构的大小FILE * fp;/定义文件指针,指向文件struc
5、t tsxx * head;/定义链表的首地址struct tsxx * p;/定义结构指针char choice;/定义选择变量四 详细设计 1、 设计思路: 首先,输入一些图书信息,申请一个结构类型的动态内存,把图书信息赋值到动态内存内,每一快动态内存存放一本图书的信息,并形成一条链表,比较登录号的大小,按登录号从大到小排列;然后,建立并打开一个文件,把链表中的数据写入文件中,然后关闭文件;最后,插入功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你想要插入的图书信息,比较登录号的大小,然后把新的图书信息按照登录号的大小顺序插入链表里面,新建一个文间,把新
6、的链表写入文件中;浏览功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,然后链表头开始,把结构中的数据一个一个输出到界面上;查询功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表;选择你要查询的方式:1是按书名查询,2是按作者名查询。输入你的选择,判断你的查询方式。书名查询:输入你要查询的书名,在链表中查找你这本书,然后把这本书的信息输出到界面上;作者名查询:输入你要查询的作者名,在链表中查找对应作者名的图书的信息,并把信息输入到界面上;修改功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你要修改的图书的登录号,在链表中查找对应登录号的图书信
7、息的结构,重新输入你要修改的图书的全部信息,并把这些新的图书信息赋值给找到的结构,覆盖旧的图书信息,新建一个文件,存放新的图书信息;删除功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你要删除的图书的登录号,在链表中查找对应登录号的图书信息的结构与前一个结构,让前一个结构的next指向对应登录号结构的下一个结构,释放动态内存,新建一个新的文件,存放新的图示信息;2、 数据结构的选择:据图书信息表特点,决定选用链表这种数据结构(也可用其它的数据结构)来作为组成成绩数据库的基本框架。链表是最简单也是最常用的一种动态数据结构。它是对动态获得的内存进行组织的一种结构。选用链表有得
8、好处:1. 即用即申请,不会造成内存空间的浪费;2. 是数据之间既有独立性,又便于数据的相互连系;3. 便于数据的添加及删除等优点。3、设计思想的选择: 用模块化程序设计理念,对各个功能定义不同函数,分块处理,这样有利于后期调试及今后对功能的完善。五 调试分析 1、 把数据从文件中拿出来时,当文件是空的,它也会读数据,这时的数据时0;当文件不空时,最后的数据会被读两次。因此,这样读出来的文件就会出现一些小差错,必须做适当的调整。当文件为空,把链表的首地址head赋值为NULL,然后释放动态内存;当文件不为空时,把链表的最后第二个结构的next赋值为NULL,然后释放动态内存。2、
9、因为开始时定义choice为整型变量,所以只能输入整数,如果不小心输入字符数时,整个程序就出现错误,不能继续运行。因此,我们把choice重新定义成字符型,这样就可以输入字符数,所以后面用switch时,也要改成字符型。3、 一开始运行程序是,因为还没有创建文件,所以在读取文件中的数据时,就会出现“不能打开文件”的错误。因此,在一开始运行程序时必须要先创建一个文件,以后程序就会自动建立一个新的文件。4、 在作者名查询那里,一开始是当查找到一条对应的结构数据时,因为用了break,所以就直接退出了循环,因此如果一个作者有多本书是,以只能查询一本书的信息。调试后,我们把break删掉,这样它就会一
10、直循环,直到链表的最后一条数据,它才会跳出循环。这样就能把一个作者全部的书都显示出来。六 测试结果1、 数据的输入:新建一个文件,并把数据写入文件中:增加功能:查询功能:浏览功能:修改功能:删除功能:七 用户使用说明一开始运行程序时,就会出现一个让你选择的界面,1.是增加数据,2是查询数据,3是浏览数据,4是修改数据,5是删除数据,6是输入数据,并新建一个文本存这些数据,0是退出程序。当你输入1时,界面就会输出“Enter the static(lognum bookname authorname scorenum publishname time price):”,接
11、着你就输入你要增加的图书的信息就可以了。当你输入2时,就会在出现一个让你选择的界面,1是书名查询,2是作者名查询。当你输入1时,如果文件时空的,界面就会输出“N0 Records”,如果文件不是空的,界面就会输出“Input bname:”,就着你就输入你要查询的图书的书名,如果文件中没有你要查询的这本书,界面就会输出“There isn't this static!”,当文件中有你要查询的这本书时,界面就会输出这本书的全部信息。当你输入2时,如果文件时空的,界面就会输出“N0 Records”,如果文件不是空的,界面就会输出“Input aname:”,就着你就输入你要查询的图书的作
12、者名,如果文件中没有你要查询的这本书,界面就会输出“There isn't this static!”,当文件中有你要查询的这本书时,界面就会输出这本书的全部信息。当你输入3时,界面就会输出全部图书的全部信息;当你输入4时,界面就会输出“Input the lognum:”,接着你要输入你要修改的图书的登录号,如果文件时空的,界面就会输出“Not records!”,如果文件不是空的,但没有你所输入的登录号的图书,界面就会输出“There isn't this static!”,如果文件不是空的,并且有你输入的登录号的图书,界面就会输出这本书的全部信息,很“Retype the
13、 static:”,接着你重新输入这本书的全部信息就可以了。当你输入4时,界面就会输出“Input dlnum:”,接着你就输入你要删除的图书的登录号就可以了。当你输入6时,界面就会输出“Enter the static(lognum bookname authorname scorenum publishname time price):”,接着你就输入你要增加的图书的信息就可以了。当你输入0时,就退出程序当你输入的是其他的数字或是字符时,界面就会输出“Enter error!”。八 课程设计总结做为这个小组的组长,我觉得我们所设计的程序今本上已经能够实现题目的要求,并且运用的链
14、表,还用文件来存数据。但是,我觉得我们的程序还是存在着一些不足之处。首先建立一个文件是文件名和拓展名都已经被规定好的,其次是当文件为空时,程序运行时,当你输入得选择不是6是,会发生错误,所以一开始要先运行选择6,后才能运行其他选择,最后是运行查询、修改、删除功能,你输入的信息要跟文件中的一致,才能实现,如果稍有不同,就不够实现这些功能了。另外,我想感谢我的组员,因为我们是分工合作的,他们有的负责一个功能,有的负责两个功能,而我主要是些主函数,在他们的积极配合下,我们很快就把总程序写好,并调试完毕。所以我想感谢他们的配合。因为集体的力量是强大的,只有我们的积极合作,才能够准时的完成这个课程设计。
15、最后,我觉得在这个课程设计的过程中,我学到了很多东西。第一是耐心,当你在调试程序中,看到了你设计的程序出现了那么多错误,或者当显示0错误0警告,却不能运行,或者是运行结果不是你所期望时,我觉得这时候最是考验耐心的时候,也只有耐心和永不言败的信念,才能支持你逆流而上,解决所有的困难。在这个过程中,我试过用了几个钟的时间找一个错误,而结果只是打错了一个定义。第二是沟通,因为我对C语言也比较熟了,有一些同学比较陌生,所以他们来问我,在我解答他们的问题是,我深刻的体会了沟通的重要性,因为只有你沟通的好,他们容易理解,你也不用浪费口舌去讲一些不必要的知识点程序参考代码:/*.主函数.*/#include
16、<stdio.h>#include<string.h>#include<stdlib.h>struct bookinf /定义结构int num; char bname20; char wname10; char clanum14; char pubcom10; char pubtime10; float price; struct bookinf *next;long size;FILE * fp;struct bookinf * vitil(void)/从文件中拿出数据struct bookinf * p1,* p2,* p3;int num; char
17、 bname20; char wname10; char clanum14; char pubcom10; char pubtime10; float price; long i=0;if(fp=fopen("程序设计.txt","r")=NULL)/打开文件printf("can not open file 程序设计.txt!n");exit(0);while(! feof(fp)if(feof(fp) break;if(i>=1)p3=p1;if(p1=(struct bookinf *)calloc(1,size)=NUL
18、L)printf("Not able to allocate memory.n");exit(1);fscanf(fp,"%ld%s%s%s%s%s%f",&num,bname,wname,clanum,pubcom,pubtime,&price);p1->num=num;strcpy(p1->bname,bname);strcpy(p1->wname,wname);strcpy(p1->clanum,clanum);strcpy(p1->pubcom,pubcom);strcpy(p1->pubtim
19、e,pubtime);p1->price=price;if(i=0)p2=p1;elsep3->next=p1;i+; if(p2->next=p1)p2->next=NULL;elsep3->next=NULL;free(p1);fclose(fp);/关闭文件return p2;void inputchoice(void)printf("n Choice:n");printf("1.Addn");printf("2.Checkn");printf("3.Scann");printf
20、("4.Revisen");printf("5.Delectn");printf("6.Enter the stacticn");printf("0.Exitn");void write_to_txt(struct bookinf * head)/写入文件struct bookinf * p;if(fp=fopen("程序设计.txt","w")=NULL)printf("can not open file 程序设计.txt!n");exit(0);for
21、(p=head;p;p=p->next)fprintf(fp,"%ld %s %s %s %s %s %fn",p->num,p->bname,p->wname,p->clanum,p->pubcom,p->pubtime,p->price);fclose(fp);/*.增加功能.*/struct bookinf * Enter(struct bookinf * head)/增加数据struct bookinf * p1,* p2,*p3;int num;char bname20; char wname10; char cla
22、num14; char pubcom10; char pubtime10; float price; if(p1=(struct bookinf *)calloc(1,size)=NULL)printf("Not able to allocate memory.n");exit(1);printf("Enter the static(lognum bookname authorname scorenum publishname time price):n");scanf("%ld%s%s%s%s%s%f",&num,bname
23、,wname,clanum,pubcom,pubtime,&price);p1->num=num;strcpy(p1->bname,bname);strcpy(p1->wname,wname);strcpy(p1->clanum,clanum);strcpy(p1->pubcom,pubcom);strcpy(p1->pubtime,pubtime);p1->price=price;p2=head;if(head=NULL)head=p1;head->next=NULL;elsewhile(p1->num>p2->num
24、)&&(p2->next!=NULL)p3=p2;p2=p2->next;if(p1->num<=p2->num)if(head=p2)head=p1;elsep3->next=p1;p1->next=p2;elsep2->next=p1;p1->next=NULL;return head;/*.查询功能.*/void Check(struct bookinf * head) /查询,书名,作者名struct bookinf * ptr;char a;char bname10;char wname10;printf(&quo
25、t;n Choice:n");printf("1:bnamen2:anamen");scanf("%s",&a);if(head=NULL)printf("nN0 Recordsn");else/链表非空 switch(a)case '1':/按书名查询printf("Input bname:");scanf("%s",bname);for(ptr=head;ptr;ptr=ptr->next)if(strcmp(ptr->bname,bname)=
26、0 )printf(" dlnum bname aname scnum plname time pricen");printf("%5ld %10s %10s %10s %10s %10s %8fn",ptr->num,ptr->bname,ptr->wname,ptr->clanum,ptr->pubcom,ptr->pubtime,ptr->price);if(ptr=NULL)printf("There isn't this static!n");break;case '
27、2':/按作者名查询printf("Input wname:");scanf("%s",wname);for(ptr=head;ptr;ptr=ptr->next)if(strcmp(ptr->wname,wname)=0)printf(" num bname wname clanum pubcom pubtime pricen");printf("%3ld %3s %3s %3s %3s %3s %3fn",ptr->num,ptr->bname,ptr->wname,ptr
28、->clanum,ptr->pubcom,ptr->pubtime,ptr->price);if(ptr=NULL)printf("There isn't this static!n");break;default:printf("Enter error!n");break;/*.浏览功能.*/void Ptrint_Stu_Doc(struct bookinf *head)/浏览struct bookinf * ptr;if(head=NULL)printf("nNo Recordsn");else
29、printf("nThe Books Information Are: n"); printf(" dlnum bname aname scnum plname time price n"); ptr=head;while(ptr!=NULL)printf(" %ld %s %s %s %s %s %6.3f n",ptr->num,ptr->bname,ptr->wname,ptr->clanum,ptr->pubcom,ptr->pubtime,ptr->price);ptr=ptr-&g
30、t;next;/*.修改功能.*/struct bookinf * Revise(struct bookinf * head) /定义子函数struct bookinf * p1;int num; char bname20; char wname10; char clanum14; char pubcom10; char pubtime10; float price; printf("Input the lognumn"); /输出scanf("%ld",&num); /读取 长整形输出if(head=NULL) /开头空printf("
31、;Not records!n"); /输出没结果 换行elsefor(p1=head;p1;p1=p1->next)if(p1->num=num) printf("%ld %s %s %s %s %s %fn",p1->num,p1->bname,p1->wname,p1->clanum,p1->pubcom,p1->pubtime,p1->price); /字节 大小printf("Retype the static:n"); /输出scanf("%ld%s%s%s%s%s%f&
32、quot;,&num,bname,wname,clanum,pubcom,pubtime,&price); /读取p1->num=num;strcpy(p1->bname,bname); /读取strcpy(p1->wname,wname);strcpy(p1->clanum,clanum);strcpy(p1->pubcom,pubcom);strcpy(p1->pubtime,pubtime);p1->price=price;break; /退出循环if(p1=NULL)/ p1空printf("There isn'
33、;t this static!n");return head;/*.删除功能.*/struct bookinf * Delete(struct bookinf * head) /删除struct bookinf * ptr1,* ptr2; /定义 指针1 2int num;printf("Input num:n");scanf("%ld",&num);if(head=NULL) /链表空return NULL;elsewhile(head!=NULL && head->num=num) /要被删除结点为表头结点
34、ptr2=head;head=head->next;printf(" num bname wname clanum pubcom pubtime pricen");printf("%5ld %10s %10s %10s %10s %10s %8fn",ptr2->num,ptr2->bname,ptr2->wname, /字节ptr2->clanum,ptr2->pubcom,ptr2->pubtime,ptr2->price);free(ptr2); /释放/要被删除结点为非表头结点ptr1=head;ptr2=head->next;while(ptr2!=NULL) /指针2非空if(ptr2->num=num)/ptr2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际教育交流项目2025年学生跨文化适应能力培养模式与跨文化心理调适研究报告
- 2025年智能建筑系统集成与智能安防系统在节能降耗中的应用报告
- 生态公园规划初步设计评估报告2025:生态公园与城市可持续发展路径
- 幼儿园数学探索与表达试题及答案
- 新能源汽车制造领域关键技术专利布局与竞争分析报告
- 新能源汽车用户与制造商之间的互动模式研究试题及答案
- 牡丹审美测试题及答案
- 政策制定对创业策略的引导作用试题及答案
- 小学反思促进学生自主学习的案例试题及答案
- 江西省吉安市新干县第二中学2024-2025学年全国高三冲刺考(四)全国I卷语文试题含解析
- 湖北省武汉市2025届高中毕业生四月调研考试生物试题及答案(武汉四调)
- 武汉2025届高中毕业生二月调研考试数学试题及答案
- 物业财务知识培训课件
- 第四单元 社会争议解决(大单元教学设计)高二政治同步备课系列(统编版选择性必修2)
- 泌尿外科学(医学高级)-案例分析题-9
- 2024年中考物理试题分类汇编:浮力及其应用(原卷版 )
- 2025-2030年中国废铝行业前景规划及投资决策建议研究报告
- 中期妊娠引产的护理
- 《摄影基础知识讲座》课件
- 全屋硬装 工具-版本信息 v2-2021041课件讲解
- 东华全民健康信息平台建设方案
评论
0/150
提交评论