C语言图书管理系统课设报告_图书管理系统课设报告

2020-02-27 其他范文 下载本文

C语言图书管理系统课设报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“图书管理系统课设报告”。

程序设计课设论文

论文题目: 图书信息管理系统

学 院: 年 级: 班 级: 姓 名: 学 号: 指导教师:

软件学院 2015级

软件工程1522班 韩汀

201515614100 邵回祖

2016年6月14日-2016年6月22日

目录

1.需求分析---------1

2.概要设计---------2

3.详细设计---------3

4.调试分析---------8

5.核心源程序清单和执行结果------------------------8

6.课程设计总结----19

1.需求分析

(1)程序的功能:

图书信息管理系统涉及5项功能,包括录入,浏览,查询,删除和修改,其中查询可通过书名或作者两种途径进行。

图书信息录入:将图书信息写入程序,包括序号,书名,作者,出版社,出版日期和价格。

图书信息浏览:将所有已录入的图书信息按序号排序列出。图书信息查询:可根据图书的书名或作者查找该书的具体信息。图书信息删除:可根据序号删除指定图书信息。图书信息修改:可根据序号修改图书所有信息。

(2)输入输出要求:

(3)测试数据:高等数学 1 高等教育出版社 2014.7 31.20 2 概率论 2 高等教育出版社 2008.6 37.40 3 线性代数 3 高等教育出版社 2007.5 17.30 4 C程序设计 4 清华大学出版社 2010.6 33.00 1

2.概要设计:(1)数据的存储结构

(2)系统流程: 2

3.详细设计:

(1)信息录入函数: 用scanf函数输入定义的书籍结构体的序号,书名,作者,出版社,出版时间和价格。建立10本书籍的书库,输入完毕,返回主函数。

(2)信息浏览函数:

(3)信息查询函数:

这里分两个项目,一个是通过书名进行查询,另一个是通过作者进行查询。在定义查询函数时使用switch函数:

通过书名进行查询:

通过作者进行查询:

(4)信息删除函数:

根据序号删除图书,操作成功后显示删除成功,任意键跳转。如果序号输入错误显示图书不存在。

(5)信息修改函数:

在此函数中,根据序号选择图书修改,存在一个问题,就是难以选择其中一项进行修改,只能全部修改。

出现的问题:只能全部进行修改:4.调试分析:

(1)在初次运行中,发现系统闪退问题存在于第2,3,4,5项中,输入序号点击回车系统闪退。最后在每一项最后加入system(“pause”);使得闪退问题修复。

(2)在最初编写代码过程中,始终输入:FILE *fp;

if((fp=fopen(“library”,“r”))==NULL)最后修改为:FILE *fp;

if((fp=fopen(“library.doc”,“r”))==NULL)

(3)在信息修改一栏中,目前仍无法实现单独修改一条信息的功能,只能根据序号,对序号所对应的全部图书信息进行修改。

if(i!=library.count){

mbook book;

printf(“ntt请输入修改后此图书的信息n”);

printf(“t请输入图书号:”);

scanf(“%s”,book.number);

printf(“t请输入图书名:”);

scanf(“%s”,book.name);

printf(“t请输入作者名:”);

scanf(“%s”,book.author);

printf(“t请输入出版社:”);

scanf(“%s”,book.publish);

printf(“t请输入出版时间:”);

scanf(“%s”,book.time);

printf(“t请输入该书的价格:”);

fflush(stdin);

scanf(“%f”,&book.price);

strcpy(library.book[i].name,book.name);

strcpy(library.book[i].number,book.number);strcpy(library.book[i].publish,book.publish);strcpy(library.book[i].author,book.author);strcpy(library.book[i].time,book.time);library.book[i].price=book.price;save();5.核心源程序清单和执行结果:

(1)源代码:

#include #include #include typedef struct { char number[10];//书号 char name[20];//书名 char author[20];//作者 char publish[50];//出版社 char time[20];//出版时间 float price;}mbook;

typedef struct { int count;//书的本数

mbook book[100];//最大可有100本书 }mlibrary;

mlibrary library;void save()//保存图书信息。{ FILE *fp;if((fp=fopen(“library.doc”,“w”))==NULL){ printf(“n不能保存图书信息n”);return;} fwrite(&library.count,sizeof(int),1,fp);fwrite(library.book,sizeof(library.book[0]),library.count,fp);}

void putin()/*定义录入函数*/ {

int y=1;

system(“cls”);while(y)

{ printf(“t请输入您的书籍的书号:”);scanf(“%s”,library.book[library.count].number);printf(“t 请输入书名:”);scanf(“%s”,library.book[library.count].name);printf(“t 请输入作者名:”);scanf(“%s”,library.book[library.count].author);printf(“t 请输入出版社:”);scanf(“%s”,library.book[library.count].publish);printf(“t 请输入出版时间:”);scanf(“%s”,library.book[library.count].time);printf(“t 请输入该书的价格:”);fflush(stdin);scanf(“%f”,&library.book[library.count].price);library.count++;printf(“n 是否继续录入(1.继续;0,退出录入):”);fflush(stdin);scanf(“%d”,&y);if(y!=1){ y=0;break;} } save();} void lookup(){

int i;

system(“cls”);

printf(“图书号t图书名t作者名t出版社t出版日期t图书价格n”);for(i=0;i

fflush(stdin);getchar();system(“pause”);} void search_by_author()/*定义按作者名查询*/ { int i;char s3[20];int flag=1;printf(“请输入要查询的书的作者: ”);fflush(stdin);scanf(“%s”,s3);printf(“图书号t图书名t作者名t出版社t出版日期t图书价格n”);for(i=0;i

void search()/*定义查询函数*/ { int a;system(“cls”);/*进行清屏*/ printf(“tt******************************n”);printf(“开始查询n”);printf(“ttt1---------------search_by_namen”);printf(“ttt2---------------search_by_writern”);printf(“ttt0---------------exitn”);printf(“tt******************************n”);printf(“tt请选择你想要的查询方式:”);fflush(stdin);scanf(“%d”,&a);switch(a){ case 1: search_by_name();break;case 2: search_by_author();break;case 0: return;} system(“pause”);} void del()/*定义删除函数*/ { int i;char number[10];system(“cls”);/*清屏*/ printf(“n Please type in the number of the book you want to delete:”);fflush(stdin);scanf(“%s”,number);for(i=0;i

void update()//修改图书信息 { int i;char number[10];system(“cls”);/*清屏*/ printf(“n Please type in the number of the book you want to delete:”);fflush(stdin);scanf(“%s”,number);for(i=0;i

mbook book;

printf(“ntt请输入修改后此图书的信息n”);

printf(“t请输入图书号:”);

scanf(“%s”,book.number);

printf(“t请输入图书名:”);

scanf(“%s”,book.name);

printf(“t请输入作者名:”);

scanf(“%s”,book.author);

printf(“t请输入出版社:”);

scanf(“%s”,book.publish);

printf(“t请输入出版时间:”);

scanf(“%s”,book.time);

printf(“t请输入该书的价格:”);

fflush(stdin);

scanf(“%f”,&book.price);

strcpy(library.book[i].name,book.name);

strcpy(library.book[i].number,book.number);strcpy(library.book[i].publish,book.publish);strcpy(library.book[i].author,book.author);strcpy(library.book[i].time,book.time);library.book[i].price=book.price;save();} else

printf(“n cannot found!n”);

fflush(stdin);

getchar();

system(“pause”);}

int main(){

int a;

FILE *fp;

if((fp=fopen(“library.doc”,“r”))==NULL){ printf(“n不能打开图书信息库n”);fp=fopen(“library.doc”,“w+”);printf(“n初始化图书信息库,初始化之后要重启程序n”);library.count=0;fwrite(&library.count,sizeof(int),1,fp);fclose(fp);return;} fread(&library.count,sizeof(int),1,fp);fread(library.book,sizeof(library.book[0]),library.count,fp);fclose(fp);do { system(“cls”);printf(“nnnnntttt图书信息管理系统ttttn”);printf(“tt*********************************************n”);printf(“ttt1------------------图书信息录入n”);printf(“ttt2------------------图书信息浏览n”);printf(“ttt3------------------图书信息查询n”);printf(“ttt4------------------图书信息删除n”);printf(“ttt5------------------图书信息修改n”);printf(“ttt0-----------------退出图书管理系统n”);printf(“tt*********************************************n”);printf(“ttPlease Enter Choose: ”);fflush(stdin);scanf(“%d”,&a);switch(a){ case 1:

putin();

break;case 2:

lookup();

break;case 3:

search();

break;case 4:

del();

break;case 5:

update();

break;case 0:

printf(“nn退出nn”);

break;default:

printf(“n序号不对n”);} }while(a!=0);save();return 0;}(2)运行结果:

在codeblocks中编译、运行目标程序后,进入到主界面,显示如图1:

进入主界面后,显示信息选择操作,根据相应序号选择相应操作,输入1后进入图书信息录入选项,按顺序录入相应信息,完成后按1继续录入,按0结束录入,显示如图2:

按0返回主界面,进入到信息浏览界面,可查看已录入的全部图书信息(下图中只录入一本图书信息),查看结束后按任意键返回主界面,显示如图3:

根据选项进入信息查询界面,有两个选择,分别为根据书名和根据作者,按1进入根据书名进行查询,可显示相应图书信息,显示如图4:

根据作者进行查询,以查询无果为例,显示cannot found!显示如图5:

按5进入图书信息修改界面,输入序号显示图书信息并进行修改,按顺序依次修改信息(目前无法对单独某一条信息进行修改),显示如图6:

按4进入信息删除界面,输入相应序号后显示删除成功,按任意键返回,显示如图7:

在信息删除界面中,输入序号,如果没有存储该序号图书信息,显示cannot found!显示如图8:

6.课程设计总结:

在课程设计过程中,由于对代码和各种概念不是很清楚,所以对结构体变量的引用非常生疏。在调试程序的过程中,也存在许多问题,最后一一修改。通过自己对书本知识一遍又一遍的复习,自己感觉做系统不再那么的复杂,包括框架的建立,界面设计,调用函数等等。经过一个星期的锻炼,自己感觉到了明显的提高,以后还需多练习,多锻炼,加强对C语言综合知识的理解与应用。

请老师审阅我的课程设计报告。谢谢

软件学院

1522班

韩汀

201515614100

《C语言图书管理系统课设报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言图书管理系统课设报告
点击下载文档
相关专题 图书管理系统课设报告 报告 语言 图书管理系统 图书管理系统课设报告 报告 语言 图书管理系统
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文