c语言课程设计图书信息管理系统.docx

上传人:b****7 文档编号:8879829 上传时间:2023-02-02 格式:DOCX 页数:16 大小:93.49KB
下载 相关 举报
c语言课程设计图书信息管理系统.docx_第1页
第1页 / 共16页
c语言课程设计图书信息管理系统.docx_第2页
第2页 / 共16页
c语言课程设计图书信息管理系统.docx_第3页
第3页 / 共16页
c语言课程设计图书信息管理系统.docx_第4页
第4页 / 共16页
c语言课程设计图书信息管理系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

c语言课程设计图书信息管理系统.docx

《c语言课程设计图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计图书信息管理系统.docx(16页珍藏版)》请在冰豆网上搜索。

c语言课程设计图书信息管理系统.docx

c语言课程设计图书信息管理系统

c语言课程设计图书信息管理系统

课程:

高级语言程序设计学号:

1010431059姓名:

胡维维班级:

嵌入式一班教师:

王群芳时间:

2011年6月

计算机科学与技术系

1.设计名称:

图书信息管理系统设计

图书信息包括:

登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一

图书信息管理系统,使之能提供以下功能:

1、图书信息录入功能

2、图书信息浏览功能

3、图书信息查询功能

查询方式:

按书名查询、按作者名查询、条件组合查询

4、图书信息的删除功能

5、图书信息的修改功能

图书信息用文件保存。

设计目的与要求:

目的:

设计一个图书馆信息管理系统的程序,能分别实现图书信息的录入、浏

览、查询、删除以及修改的功能。

根据用户需求,选择相应的功能,

通过程序实现该功能。

要求:

所设计的程序简洁,能实现个功能,且效率高。

设计所用软件环境:

windowsXP,,,(,

问题的模型化描述及求解算法的简要描述:

1.系统结构如下:

图书信息

管理系统

信信信信信

息息息息息

录浏查删修

览询除改入

按(姓名按按(姓名

+作者)姓+类型)

系统各模块说明如下:

(1)信息输入模块:

完成图书信息的输入功能,输入信息包括书名、作者名、分类号、出版单位、出版时间、价格等;

(2)信息浏览模块:

完成已录入图书信息的显示;

(3)信息查询模块:

完成图书信息的查询,查询时对应有按书名查询和按作者名查询以及组合查询三种方式;(4)信息修改模块完成图书信息的修改功能;

(5)信息删除模块完成图书信息的删除功能;

(6)菜单选择模块完成用户命令的接收,此模块也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;

2、数据结构

本系统中主要的数据结构就是图书的信息,包含书名、作者名、分类号、出版单位、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。

3、程序流程

系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。

系统的流程图如下:

开始

菜单

否输入否

查询是

浏览是

修改

删除是

是按按否书作名按者条信息修改名信息信息浏览件信息删除输入组

结束

注:

条件组合查询按书名和价格组合查询,修改删除按书名查找结构体修改删除。

程序清单:

#include//输入输出函数#include//字符串函数头文件#include

#include//调用函数#include//申请内存#defineMAXNAME11//书名最大长度#defineMAXwriter21

#defineMENU_COUNT5//菜单选项个数#defineMAXN15

//自定义枚举类型fi_type,用来表示图书信息typedefenum_fi_type

{

news=1,//图书信息

}fi_type;

//图书信息结构体

structfi_info

{charname[MAXNAME];

charwriter[MAXwriter];

inttypenum;

charpublish_from[MAXN];

intpublish_time;

floatprice;

fi_typetype;

structfi_info*next;//结构体的指针域,用于存放链表的下个结点的地址

};

structfi_info*head=NULL,*head_=NULL;//将图书信息写成链表,头指针分别为空

intBook_num;//图书信息的统计数voidmenu();

intReadinfoFromFile();//读入数据//函数申明

intcreat_news();

voidsearch_news();

voiddelete_news();

voidupdate_news();

voidshow();

voidquit();

intmain()

{

intselected=0,land_num;//菜单选择变量

ReadinfoFromFile();//数据导入

printf("请输入您的图书管理系统登录号:

");

scanf("%d",&land_num);

while(selected>=0&&selected<=MENU_COUNT)

{

system("cls");//清屏

menu();//显示主菜单

printf(">请选择要进行的操作(%d_%d):

",0,MENU_COUNT);

if(scanf("%d",&selected)!

=1||selected<0||selected>MENU_COUNT)

{

printf(">输入有误!

请选择(%d-%d)之间的数字!

按任意键重试...",0,MENU_COUNT);

fflush(stdin);//清空输入缓冲区

getchar();

}

else

{

switch(selected)

{

case1:

creat_news();break;

case2:

search_news();break;

case3:

delete_news();break;

case4:

update_news();break;

case5:

show();break;

case0:

quit();

}

}

selected=0;

}

return0;

}

intReadinfoFromFile()//读入数据

{

FILE*fp=NULL;//文件指针

structfi_info*p=NULL;//结构体指针

inti;

if((fp=fopen("sun.txt","r+"))==NULL)

{

printf("文件不存在~\n");

fp=fopen("sun.txt","w");//为输出打开一个文件

printf("文件建立成功~\n");

}

fscanf(fp,"%d",&Book_num);////从文件中分别读入图书信息统计数,以便于下面for循环的条件控制

for(i=0;i

p=(structfi_info*)malloc(sizeof(structfi_info));//P为动作指针,申请内存空间

fscanf(fp,"%s",p->name);

fscanf(fp,"%s",p->writer);

fscanf(fp,"%d",&p->typenum);

fscanf(fp,"%s",p->publish_from);

fscanf(fp,"%d",&p->publish_time);

fscanf(fp,"%f",&p->price);

fscanf(fp,"%d",&p->type);

if(p->type==1)

{

if(head==NULL){

head=p;

p->next=NULL;

}

else{

p->next=head;

head=p;

}

}

else{

if(head_==NULL){

head_=p;

p->next=NULL;

}

else{

p->next=head_;

head_=p;

}

}

}

fclose(fp);

return0;

}

voidmenu(){

printf("\n\n*******************************图书信息管理系统********************************\n");

printf("\t\t\t1;录入图书信息\n");

printf("\t\t\t2;查找图书信息\n");

printf("\t\t\t3;删除图书信息\n");

printf("\t\t\t4;修改图书信息\n");

printf("\t\t\t5;显示图书信息\n");

printf("\t\t\t0;退出\n");}

intcreat_news()//添加图书信息{

structfi_info*p=NULL;

p=(structfi_info*)malloc(sizeof(structfi_info));

printf("请输入书名:

");

scanf("%s",p->name);

printf("请输入作者名:

");

scanf("%s",p->writer);

printf("请输入分类号:

");

scanf("%d",&p->typenum);

printf("请输入出版单位:

");

scanf("%s",p->publish_from);

printf("请输入出版时间:

");

scanf("%d",&p->publish_time);

printf("请输入书本价格:

");

scanf("%f",&p->price);

p->type=news;

Book_num+=1;

p->next=head;

head=p;

return0;

}

voidsearch_news()//查询图书信息{

structfi_info*p=NULL;

charname[10],writer[21];

intprice;

intb=1,i;

printf("按书名查找请按1.\n按作者名查找请按2.\n按组合查询请按3.\n");

scanf("%d",&i);

if(i=1)

{

printf("请输入要查找的书名:

");

scanf("%s",name);

for(p=head;p!

=NULL;p=p->next)//一个链表指针p的遍历,直到结尾p==NULL

{

if(strcmp(name,p->name)==0)//字符串的比较函数,若前后相等则等于0

{b=0;//若存在,则b=0

printf("你找到了要查找的图书信息:

\n");

printf("%s\n",p->name);

printf("%s\n",p->writer);

printf("%d\n",p->typenum);

printf("%s\n",p->publish_from);

printf("%d\n",p->publish_time);

printf("%f\n",p->price);

}

}

if(head==NULL)printf("没有此图书信息\n");

if(b)printf("你要查找的图书信息不存在!

\n");//若b=1,则不存在

}

elseif(i=2)

{

printf("请输入要查找的作者名:

");

scanf("%s",writer);

for(p=head;p!

=NULL;p=p->next)//一个链表指针p的遍历,直到结尾p==NULL

{

if(strcmp(writer,p->writer)==0)//字符串的比较函数,若前后相等则等于0

{b=0;//若存在,则b=0

printf("你找到了要查找的图书信息:

\n");

printf("%s\n",p->name);

printf("%s\n",p->writer);

printf("%d\n",p->typenum);

printf("%s\n",p->publish_from);

printf("%d\n",p->publish_time);

printf("%f\n",p->price);

}

}

if(head==NULL)printf("没有此图书信息\n");

if(b)printf("你要查找的图书信息不存在!

\n");//若b=1,则不存在

}

elseif(i=3)

{

printf("请输入要查找的书名价格\n:

");

scanf("%s%d",name,&price);

for(p=head;p!

=NULL;p=p->next)//一个链表指针p的遍历,直到结尾p==NULL

{

if(strcmp(name,p->name)==0&&price==p->price)//字符串的比较函数,若前后相等则等于0

{b=0;//若存在,则b=0

printf("你找到了要查找的图书信息:

\n");

printf("%s\n",p->name);

printf("%s\n",p->writer);

printf("%d\n",p->typenum);

printf("%s\n",p->publish_from);

printf("%d\n",p->publish_time);

printf("%f\n",p->price);

}

}

if(head==NULL)printf("没有此图书信息\n");

if(b)printf("你要查找的图书信息不存在!

\n");//若b=1,则不存在

}elseprintf("提醒:

没有该功能选项,请重新选择:

\n");

system("PAUSE");//暂停

}

voiddelete_news()//删除图书信息

{

structfi_info*p=NULL;//定义两个结构体指针

structfi_info*q=NULL;

charname[10];

intb=1;

inta;

printf("请输入要删除的书名:

\n");

scanf("%s",name);

for(p=head,q=head;p!

=NULL;p=p->next)

{

if(strcmp(name,p->name)==0)

{

b=0;

printf("确定删除?

0(是)or1(否)\n");

scanf("%d",&a);

if(a==0)

{

if(p==head)

head=head->next;

else

q->next=p->next;

printf("删除成功~\n");

}

}

elseq=p;

}

if(b)printf("提示:

查不到图书信息\n");

system("PAUSE");

}

voidupdate_news()//修改图书信息{

structfi_info*p=NULL;

inta,b=1;

charname[10];

printf("请输入书名:

\n\n");

scanf("%s",name);

for(p=head;p!

=NULL;p=p->next)

{

if(strcmp(p->name,name)==0){

b=0;

printf("%s\n",p->name);

printf("%s\n",p->writer);

printf("%d\n",p->typenum);

printf("%s\n",p->publish_from);

printf("%d\n",p->publish_time);

printf("%f\n",p->price);

printf("是否确定修改,0(是)or1(否)\n");

scanf("%d",&a);

if(a==0){

printf("**********请重新输入信息*********\n");

printf("请输入书名:

");

scanf("%s",p->name);

printf("请输入作者名:

");

scanf("%s",p->writer);

printf("请输入分类号");

scanf("%d",&p->typenum);

printf("请输入出版单位:

");

scanf("%s",&p->publish_from);

printf("请输入出版时间:

");

scanf("%d",&p->publish_time);

printf("请输入书本价格:

");

scanf("%f",&p->price);

p->type=news;

printf("\n\n提醒:

您修改成功!

\n\n");

}

}

if(b==1)printf("没有您要修改的信息~\n");

}

system("PAUSE");

}

voidshow()//显示图书信息{

structfi_info*p=NULL;

system("cls");

for(p=head;p!

=NULL;p=p->next){

printf("%s\n",p->name);

printf("%s\n",p->writer);

printf("%d\n",p->typenum);

printf("%s\n",p->publish_from);

printf("%d\n",p->publish_time);

printf("%f\n",p->price);

system("PAUSE");

}

}

voidquit()//退出系统退出先保存

{FILE*fp=NULL;

structfi_info*p=NULL;system("cls");

fp=fopen("sun.txt","w");

fprintf(fp,"%d",Book_num);

for(p=head;p!

=NULL;p=p->next)

{fprintf(fp,"%s",p->name);

fprintf(fp,"%s\n",p->writer);

fprintf(fp,"%d",p->typenum);

fprintf(fp,"%s",p->publish_from);

fprintf(fp,"%d",p->publish_time);

fprintf(fp,"%f",p->price);

fprintf(fp,"%d",p->type);

}

printf("\n");

printf("感谢使用本图书信息管理系统!

\n");

printf("\n");

fclose(fp);

exit(0);

}

程序运行结果:

设计总结和体会:

总结1:

熟悉了链表,结构体,数组指针的知识,还自学了枚举类型以及文件部分。

2:

上机运行更加熟练,能及时地修改语法及程序错误。

3:

团队合作很重要,我从搭档的身上学习了很多。

4:

对C语言的细节知识点及程序上机有了更深入的认识及了解。

体会:

图书管理系统花了我将近整整三天的时间,前两天是构建框架,着手写源程序,效率有些低,第三天真

的是一天都对着电脑,调试再调试,忘乎所有,心里想的都是程序代码。

这样的投入与认真让我更加坚

定了深入学习C语言以及自学C++等语言的兴趣,当程序没有错误并成功运行,我觉得什么付出都值得,

不睡觉算什么,没有好好吃饭算什么,辐射算什么、、、、、、。

虽然最后的结果是写了两个源程序并成功运

行,但还是觉得自己可以做的更好一点,至少在效率方面应该更高些。

以后更要好好学习,打好稳固的

基础,为梦想而奋斗~

设计成绩:

教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1