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

风随心动 范文 报告范文
精选回答

c语言图书信息管理系统课程设计报告本文简介:高级语言程序设计课程设计报告目录1课程设计目的与要求12问题描述23总体设计33.1功能分析33.2系统使用的主要函数33.3系统使用的主要数据结构44详细设计54.1程序总体结构图54.2程序流程图75功能测试105.1系统主界面105.2系统输入信息的界面115.3系统信息查询的界面125.4系

c语言图书信息管理系统课程设计报告本文内容:

高级语言程序设计课程设计报告

1

课程设计目的与要求1

2

问题描述2

3总体设计3

3.1

功能分析3

3.2

系统使用的主要函数3

3.3

系统使用的主要数据结构4

4

详细设计5

4.1

程序总体结构图5

4.2

程序流程图7

5

功能测试10

5.1

系统主界面10

5.2

系统输入信息的界面11

5.3

系统信息查询的界面12

5.4

系统信息按作者名查询的界面13

5.5

系统信息按作者名排序14

6

程序设计调试情况分析15

7

课程设计小结16

参考文献17

附录

系统源程序18

8

图书信息管理系统

1

课程设计目的与要求

图书信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能;查询和排序功能要求实现查找操作(至少两种依据);还应该提供图书信息删除和修改的功能;另外还应该提供键盘式选择菜单以实现功能选择。

图书管理系统,其中包括:

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

功能包括:

1)

系统以菜单方式工作;

2)

图书信息录入功能(图书信息用文件保存);

3)

图书信息浏览功能;

4)

查询和排序功能;

5)图书信息的删除与修改功能

2

问题描述

1.设计一个图书管理系统,其中包括:

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

功能包括:

1)

系统以菜单方式工作;

2)

图书信息录入功能(图书信息用文件保存);

3)

图书信息浏览功能;

4)

查询和排序功能;

5)图书信息的删除与修改功能

2.需求分析:

图书信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能;查询和排序功能要求实现查找操作(至少两种依据);还应该提供图书信息删除和修改的功能;另外还应该提供键盘式选择菜单以实现功能选择。

显示模块

通过设计一个模块,来实现图书信息的显示,以便于浏览图书的信息。

查询模块

通过设计一个模块,这个模块可以按图书的书名、作者来查询图书所有的信息,以便查询者阅读。

删除模块

通过设计一个模块,当输入一个图书的登入号或者书名的时候,可以通过这个模块,将输入登入号或者书名的书籍的所有信息从数据库中删除出去。以后,这本图书的信息不再出现在数据库中。

修改模块

通过设计一个模块,当某本图书的信息发生变化的时候,可以通过修改模块来进行修改。修改模块时一具有多级子菜单的模块。

排序模块

通过设计一个模块,来实现数据库的信息按某项成员名的升序或者降序排列,这个模块提供了按书名,作者名,分类号三种方式来实现排序。

3总体设计

3.1

功能分析

(系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现通讯录的管理,同时对操作结果在计算机中做永久保存。)

整个系统可以分为信息录入、信息浏览、信息查询、信息排序、信息删除和信息修改的功能。系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现图书信息的管理,同时对操作结果在计算机中做永久保存。

3.2

系统使用的主要函数

void

menu();

int

bookluru(struct

book*p,int

n);

(录入图书信息)

void

bookliulan(struct

book*p,int

n);

(图书信息浏览)

void

bookchaxun(struct

book*p,int

n);(图书信息查询)

void

bookxiugai(struct

book*p,int

n);

(图书信息修改)

int

bookzengjia(struct

book*p,int

n);

(图书信息增加)

int

bookshanchu(struct

book*p,int

n);

(图书信息删除)

void

bookpaixu(struct

book*p,int

n);

(图书信息排序)

void

DLsearch(struct

book*p,int

n);

(按登入号查询)

void

AUsearch(struct

book*p,int

n);

(按作者名查询)

int

bookzairu(struct

book*p,int

n);

(图书信息文件储存

void

goout();

(退出程序)

int

bookbaocun(struct

book*p,int

n);

(图书信息保存)

void

main()

3.3

系统使用的主要数据结构

struct

book

//定义一个book类结构体。

{

char

no[L];

char

name[L];

char

author[L];

char

fenlei[L];

char

puttime[L];

char

putfrom[L];

char

price[L];

};

4

详细设计

4.1

程序总体结构图

N

Y

图4.1

程序总体结构图

0

1

2

3

4

5

6

7

图4.2

程序层次图

4.2

程序流程图

图4.3信息登入功能流程图

图4.4

查询功能流程图

图4.5

修改功能流程图

5

功能测试

5.1

系统主界面

图5.1

系统主界面

5.2

系统输入信息的界面

5.2

输入信息界面

5.3

系统信息查询的界面

图5.3信息查询界面

5.4

系统信息按作者名查询的界面

图5.4

按作者名查询

5.5

系统信息按作者名排序

图5.5

信息排序界面

6

程序设计调试情况分析

1)问题:在信息查询完成后,无法跳出该界面,无法回到主界面。

图6.1

查询后无法回到主界面

解决方法:在信息查询那个版块的程序中,把原先用scanf输入字符改成gets(no),排除由于回车键出现的问题。

2)问题:“登录号书名作者。。。”之间无空格号

解决方法:改为printf(“\n

%9s%9s%9s%9s%9s%9s%9s\n“,“登录号“,“书名“,“作者名“,“分类号“,“出版单位“,“出版时间“,“价格“);

拉宽长度。

7

课程设计小结

通过一周的课程设计,第一次我们试着用所学的C语言知识去编制生活中常用的程序。我们是小组选择编辑图书信息管理系统程序。由于分工合作,我负责的是查询和排除模块。起初对知识掌握的不够全面,在整个设计过程中遇到很多问题。比如,编译出现错误,对于格式的掌握还不够透彻;在分界面运行完后,回不到系统的主界面,出现了死循环;在删除信息的板块中,删除了要保留的;运行时,屏幕显示的字之间无空格。后来,通过小组互相帮组讨论,查阅书籍,改善了程序。首先把原程序中的运用scanf()输入字符,改为getchar(),排除了接受回车键所出现的问题,能够顺利的返回主界面。其次,printf()中字符串控制的长度拉宽。最后还是能如期的完成此次实训。

当然,由于初次接触图书管理系统的设计,程序还是存在缺陷。比如操作起来不够简便、连贯,同时也没考虑到实际问题。如图书的价格要取大于等于零的数等。

总之,此次的课程设计还是对我们的专业很有帮助。既巩固了我们的C语言知识,让我们对一部分函数的功能有了更加深刻的理解,把所学运用到实际,也使我们在系统设计领域有了新的拓展,开发我们的思维。

参考文献

[1]

吉顺如.

《C程序设计教程与实验》.

北京

:清华大学出版社.

2011.

48-103

附录

系统源程序

#include

//头文件

#include

#include

#define

L

30

//宏定义

#define

Q

200

struct

book

//定义一个book类结构体。

{

char

no[L];

char

name[L];

char

author[L];

char

fenlei[L];

char

puttime[L];

char

putfrom[L];

char

price[L];

};

//函数声明

//函数声明

void

menu();

int

bookluru(struct

book*p,int

n);

void

bookliulan(struct

book*p,int

n);

void

bookchaxun(struct

book*p,int

n);

void

bookxiugai(struct

book*p,int

n);

int

bookzhengjia(struct

book*p,int

n);

int

bookshanchu(struct

book*p,int

n);

void

bookpaixu(struct

book*p,int

n);

void

DLsearch(struct

book*p,int

n);

void

AUsearch(struct

book*p,int

n);

int

bookzairu(struct

book*p,int

n);

void

goout();

int

bookbaocun(struct

book*p,int

n);

void

main()

//主函数

{

char

slect,yn;

struct

book

record[Q];

//定义book类结构体变量存放图书信息共200条

int

total=0,flag;

total=bookzairu(record,Q);

//从文件读取图书信息,不超过200条

do

{

menu();

//显示菜单

printf(“请服务项编号:“);

slect=getchar();

getchar();

switch(slect)

{

case

0

:

goout();break;

case

1

:

total=bookluru(record,total);break;

//函数调用

case

2

:

bookliulan(record,total);break;

case

3

:

bookchaxun(record,total);break;

case

4

:

bookxiugai(record,total);break;

case

5

:

total=bookzhengjia(record,total);break;

case

6

:

total=bookshanchu(record,total);break;

case

7

:

bookpaixu(record,total);break;

case

8

:

flag=bookbaocun(record,total);

if(“flag==1“)

printf(“图书信息保存成功!\n“);

else

printf(“图书信息保存失败!\n“);

break;

default:continue;

}

if(slect==

0

)

break;

printf(“\n还要继续选择吗?(Y/N)“);

//提示是否结束

do

{

yn=getchar();

getchar();

if

(yn==

Y

||yn==

y

)

break;

else

if

(yn==

N

||yn==

n

)

break;

else

printf(“非法选项!\n还要继续选择吗?(Y/N)“);

}

while(1);

}

while(yn!=

N

}

//图书管理系统主菜单.

void

menu()

{

system(“cls“);

printf(“\n\n“);

printf(“请选择服务项目编号(0--8)\n“);

printf(“******************************************************************\n“);

printf(“********************欢迎使用图书信息管理系统******************\n“);

printf(“**************************************************************\n“);

printf(“

\n“);

printf(“

\n“);

printf(“

\n“);

printf(“

1

.

图书信息录入.

\n“);

printf(“

2

.

图书信息浏览.

\n“);

printf(“

3

.

图书信息查寻.

\n“);

printf(“

4

.

图书信息修改.

\n“);

printf(“

5

.

图书信息增加.

\n“);

printf(“

6

.

图书信息删除.

\n“);

printf(“

7

.

图书信息排序.

\n“);

printf(“

8

.

图书信息保存.

\n“);

printf(“

0

.

退出图书管理系统.

\n“);

printf(“

\n“);

printf(“

\n“);

printf(“

\n“);

printf(“******************************************************************\n“;

printf(“\n“);

}

int

bookluru(struct

bookp,int

n)//录入图书信息.

{

int

i=0;

int

m;

printf(“\n添加前的图书信息记录共有%d个:\n“,n);

//显示原有的图书信息

printf(“\n

%9s%9s%9s%9s%9s%9s%9s\n“,“登录号“,“书名“,“作者名“,“分类号“,“出版单位“,“出版时间“,“价格“);

i=0;

while((ino,““)!=0))

//输入的登录号不为空时,输出图书信息

{

printf(“%9s%9s%9s%9s%9s%9s%9s\n“,p->no,p->name,p->author,p->fenlei,p->puttime,p->putfrom,p->price);//信息输出

i++;

p++;

}

printf(“\n请输入要录入的图书数目X(0no);

//输入登录号,再输入其他信息

}

while(strcmp(p->no,““)==0);

printf(“书名为:“);

gets(p->name);

printf(“作者名为:“);

gets(p->author);

printf(“分类号为:“);

gets(p->fenlei);

printf(“出版时间为:“);

gets(p->puttime);

printf(“出版单位为:“);

gets(p->putfrom);

printf(“价格为:“);

gets(p->price);

p++;

i++;

}

return

m+n;

}

void

bookliulan(struct

book*p,int

n)//图书信息浏览.

{

int

i=0;

printf(“\n

%9s%9s%9s%9s%9s%9s%9s\n“,“登录号“,“书名“,“作者名“,“分类号“,“出版单位“,“出版时间“,“价格“);

while(ino,p->name,p->author,p->fenlei,p->puttime,p->putfrom,p->price);

p++;

i++;

}

}

void

bookchaxun(struct

book*p,int

n)//图书信息查寻.

{

char

c;

bookliulan(p,n);

do

{

printf(“\n请问按登录号查询(D),还是按作者名查询(A)?“);

//选择查询方式

c=getchar();

getchar();

if(c==

D

||c==

d

)

{

DLsearch(p,n);

break;

}

else

if(c==

A

||c==

a

)

{

AUsearch(p,n);

break;

}

else

{

printf(“\n输入的为非法字符!\n“);

continue;

}

}

while(c!=

D

||c!=

d

||c!=

A

||c!=

a

);

}

void

DLsearch(struct

book*p,int

n)//按登录号查询.

{

int

i,x=0;

char

DL[L];

printf(“\n请输入要查询图书的登录号:“);

gets(DL);

for(i=0;ino)!=0)

continue;

//输入的登录号不匹配,结束本次循环

else

{

printf(“\n请输入正确的图书登录号:“);

gets(p->no);

printf(“\n请输入正确的图书书名:“);

gets(p->name);

printf(“\n请输入正确的图书作者名:“);

gets(p->author);

printf(“\n请输入正确的图书分类号:“);

gets(p->fenlei);

printf(“\n请输入正确的图书出版时间:“);

gets(p->puttime);

printf(“\n请输入正确的图书出版单位:“);

gets(p->putfrom);

printf(“\n请输入正确的图书价格:“);

gets(p->price);

printf(“\n修改图书图书信息完成!!“);

k=1;

}

}

if(k==0)

printf(“\n对不起,图书系统中没有包含此书的信息!\n“);

}

int

bookzhengjia(struct

bookp,int

n)//图书信息增加.

{

int

i=0;

char

c;

struct

book

t,*q;

printf(“\n添加前图书信息的记录为:\n“);

bookliulan(p,n);//显示添加前图书信息的记录

do

{

printf(“请输入新图书信息的登录号:“);

gets(t.no);

printf(“\n请输入新图书信息的书名为:“);

gets(t.name);

printf(“\n请输入新图书信息的作者名为:“);

gets(t.author);

printf(“\n请输入新图书信息的分类号为:“);

gets(t.fenlei);

printf(“\n请输入新图书信息的出版时间为:“);

gets(t.puttime);

printf(“\n请输入新图书信息的出版单位为:“);

gets(t.putfrom);

printf(“\n请输入新图书信息的价格为:“);

gets(t.price);

for(i=0;ino)==0||strcmp(t.author,(p+i)->author)==0||strcmp(t.fenlei,(p+i)->fenlei)==0)

{

printf(“登录号、作者名和分类号重复,要重新输入吗(Y/N)?“);

c=getchar();

putchar(

\n

);

break;

}

if(i==n)

{(p+i)=t;

printf(“\n添加后图书的信息记录为:\n“);

//显示添加后图书的信息记录

printf(“\n

%9s%9s%9s%9s%9s%9s%9s\n“,“登录号“,“书名“,“作者名“,“分类号“,“出版单位“,“出版时间“,“价格“);

for(i=0;ino,(p+i)->name,(p+i)->author,(p+i)->fenlei,(p+i)->putfrom,(p+i)->puttime,p[i].price);

printf(“\n请输入要删除图书的登陆号:“);

gets(no);

for(x=0;xno,(p+i)->name,(p+i)->author,(p+i)->fenlei,(p+i)->putfrom,(p+i)->puttime,p[i].price);

printf(“\n按登录号排序(D),还是按作者名排序(A)?“);

//选择排序的方式

c1=getchar();

getchar();

if(c1==

d

||c1==

D

)

//选择登录号由小到大排序

{

for(i=0;i0)

//使用选择法进行排序

k=j;

if(k!=i)

//如果最小熟不熟默认的p[i],再交换,

{

temp=p[k];

p[k]=p[i];

p[i]=temp;

}

}

printf(“\n排序后图书的信息记录为:\n“);

//输出排序后图书的信息

printf(“\n

%9s%9s%9s%9s%9s%9s%9s\n“,“登录号“,“书名“,“作者名“,“分类号“,“出版单位“,“出版时间“,“价格“);

for(i=0;ino,(p+i)->name,(p+i)->author,(p+i)->fenlei,(p+i)->putfrom,(p+i)->puttime,p[i].price);

}

else

if(c1==

a

||c1==

A

)

//选择作者名由小到大排序

{

for(i=0;i0)

k=j;

if(k!=i)

//使用选择法进行排序

{

temp=p[k];

p[k]=p[i];

p[i]=temp;

}

}

printf(“\n排序后图书的信息记录为:\n“);

printf(“\n

%9s%9s%9s%9s%9s%9s%9s\n“,“登录号“,“书名“,“作者名“,“分类号“,“出版单位“,“出版时间“,“价格“);

//输出排序后图书的信息

for(i=0;ino,(p+i)->name,(p+i)->author,(p+i)->fenlei,(p+i)->putfrom,(p+i)->puttime,p[i].price);

}

else

printf(“\n您输入的为非法字符!\n“);

}

//图书信息文件存储.

int

bookzairu(struct

book*p,int

n)

{

FILEfp;

//定义FILE类型文件指针变量

int

i,all=0;

char

bookfile[200]=“book.txt“;

fp=fopen(“book.txt“,“r+“);

//以只读方式打开

if(fp==NULL)

{

printf(“\n***打开%s失败!!***“,bookfile);

return

0;

}

fscanf(fp,“%d\n“,//从文件指针指向的文本文件中按指定格式逐个输入信息到指定变量

if(all>200)

//读取记录总数

{

printf(“文件记录太多,不能读取!“);

return

0;

}

for(i=0;i

//图书信息按指定格式输入

{fscanf(fp,“%s

%s

%s

%s

%s

%s

%s\n“,p[i].no,p[i].name,p[i].author,p[i].fenlei,p[i].putfrom,p[i].puttime,p[i].price);

}

fclose(fp);

//关闭文件

return

all;

}

//图书信息文件保存.

int

bookbaocun(struct

book*p,int

n)

{

FILEfp;

//定义FILE类型文件指针变量

int

i,all=0;

char

bookfile[30]=“book.txt“;

fp=fopen(bookfile,“w“);

//以只写方式打开

if(fp==NULL)

//

{

printf(“\n***打开%s失败!!***“,bookfile);

return

0;

}

fprintf(fp,“%d\n“,n);

//将数据指定格式字符串输出到文件指针所指向的文本文件。

for(i=0;i

//图书信息按指定格式输出

{

fprintf(fp,“%s

%s

%s

%s

%s

%s

%s\n“,p[i].no,p[i].name,p[i].author,p[i].fenlei,p[i].putfrom,p[i].puttime,p[i].price);

}

fclose(fp);

//关闭文件

return

1;

}

//图书管理系统退出

void

goout()

{

printf(“\n请按Enter键退出图书信息管理系统!\n“);

泪咽却无声 2022-07-16 23:46:51

相关推荐

人不如旧 衣不如新的意思

人不如旧,衣不如新的意思是:衣服是新的好,朋友是旧的好。(因此旧的东西或朋友不可轻易舍弃)形容事物的前后比较。“衣不如新,人不如故”可以用作宾语、定语,一般常用作书面语。这句话最早出自于《晏子春秋·第五卷内篇杂...
展开详情

无人与我是什么

无人与我,意思是:没有人和我一起。“无人”,是一个汉语词汇,是没有人才、没有人、没人在的意思,出自《史记·范雎蔡泽列传》:“秦王屏左右,宫中虚无人。”...
展开详情

古人读书的方法

读书有很多种方法,适合自己的才是最好的,让我们来看看古代名人都是怎么读书的,并从中借鉴一些好的读书方法。1、董遇:“三余”读书法汉代的著名学者董遇提倡利用“三余”时间读书。他说:“冬者岁之余,夜者日之余,雨者晴...
展开详情

集中注意力的基础是

集中注意力的基础是对大脑进行科学的锻炼,促使脑神经变得发达和强壮。注意力是指人的心理活动指向和集中于某种事物的能力。“注意”,是一个古老而又永恒的话题。俄罗斯教育家乌申斯基曾精辟地指出:“注意是我们心灵的唯一门...
展开详情

一年之计在于春,一日之计在于晨是什么意思

这句话的意思是:只有在春天辛勤劳动才能获得丰收,一天最宝贵的时间是早晨。这句话一般用于激励人刻苦学习,充分利用学习时间,达到提升自我的目的!出处有:1、南朝·梁·萧绎《纂要》:“一年之计在于春,一日之计在于晨。...
展开详情

精选推荐更多>

ch是声母还是韵母

ch是声母。
声母:b、p、m、f、d、t、n、l、g、k、h、j、q、x、zh、ch、sh、r、c、s、y、w。
韵母:a、o、e、i、u、ü、ai、ei、ui、ao、ou、iu、ie、üe、r、an、en、in、un、ün、ang、eng、ing、ong。
韵母是一个中国汉语音韵学术语,汉语字音中声母、字调以外的部分。旧称为韵。韵母由韵头(介音)、韵腹(主要元音)、韵尾三部分组成。按韵母结构可分为单韵母、复韵母、鼻韵母。
汉语字音中声母、字调以外的部分。旧称为韵。韵母又可以分成韵头(介音)、韵腹(主要元音)、韵尾三部分。如“娘”niáng的韵母是iang,其中i是韵头,α是韵腹,ng是韵尾。每个韵母一定有韵腹,韵头和韵尾则可有可无。

戴的偏旁是什么偏旁

“戴”的偏旁是戈,指顶在头上,泛指把东西放在头、面、颈、手等处;也引申为“尊崇、爱戴”;还有“竖立”;“正对”等意思。
出处:
1、《左传·僖公十五年》:“君履后土而戴皇天。”
2、《舒州被召试不赴偶书》:“戴盆难与望天兼。”
3、《东京赋》:“戴金钲而建黄钺。”
造句:
1、我们的老校长受到了全校师生的衷心爱戴。
2、李老师待人和善,虚怀若谷,深受学生爱戴。
3、他为人民做了好事,人民爱戴他是理所当然的。
4、他无私无畏,一身正气,深受人民的爱戴。
5、张老师是一位深受同学爱戴的老教师。
6、从小到大,对您的感情永远是敬仰与爱戴。
7、这些劳苦功高的老师们,深受广大人民群众的爱戴。

关于鲁迅的对联

关于鲁迅的对联有:
1、上联:一生反封帝。下联:至死不宽容。
2、上联:一生不曾屈服。下联:临死还要斗争。
3、上联:平生功业尤拉化。下联:旷代文章数阿Q。
4、上联:返国空余挂墓剑。下联:斫泥难觅运风斤。
5、上联:一代高文树新帜。下联:千秋孤痛托遗言。
6、上联:侠骨柔肠,横眉俯首。下联:胸中海岳,笔底风雷。
7、上联:救亡阵线中,失一重镇。下联:学术思想界,见此完人。
8、上联:呐喊如狂人,为国为己。下联:华盖育彷徨,导民中流。
9、上联:笔耕大野,胸怀日月光和热。下联:墨洒长河,夜度春秋慨而慷。

一个人自愈是什么意思

“一个人自愈”意思是独自一个人治愈内心伤痛,没有人帮助。比喻什么事情都一个人,体现了生活的无助和无可奈何,不管经历多少风雨都要抬头挺胸站起来,不被困难打倒。
出自现代短语。
一个:
1、表数量。单个。用于人和各种事物。如:一个地方。
2、整个。如:他今天一个上午都没歇过。
3、用在动词和补语之间,表示程度。如:吃了一个饱。
人:
1、某人,某种人,某些人。出自《孟子·滕文公上》:“劳心者治人,劳力者治于人。”
2、人才,杰出人物。出自《左传·文公十三年》:“子无谓秦无人。”
3、能制造和使用工具进行劳动并能使用语言的高等动物。出自《说文》:“人,天地之性最贵者也。”
自愈:疾病不经治疗而自行痊愈。如:因为落枕是急性起病,仅为单纯性肌肉痉挛,本身有自愈的趋向。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200