C语言图书管理系统课程设计报告 - 副本

更新时间:2023-09-06 06:29:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

一、设计目的 ...................................................................................... 1 二、设计内容 ...................................................................................... 1 三、设计要求 ...................................................................................... 2 四、设计过程 ...................................................................................... 2

4.1详细设计 ................................................................................ 2 4.2运行结果 ................................................................................ 4 五 设计总结 .................................................................................... 6 参考文献 .............................................................................................. 7 附录 ...................................................................................................... 7

一、设计目的

掌握面向对象程序设计的基本方法,加深对面向对象的思想,

包括封装性、继承性、多态性的理解,掌握面向对象程序设计的分析、设计和实现方法。通过实题的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法,提高程序设计能力和综合知识运用能力。通过课程设计,培养学生严肃认真的工作作风。培养学生自学的能力。培养独立思考,深入研究,分析问题、解决问题的能力。

二、设计内容

(1) 系统信息应包括图书信息:书名、书号、作者、出版社、出版时间、入库时间、库存数量、借出数量、在库数量、缺损信息。 (2)用户登录界面设计

(3)系统提供简单的仓库信息管理,并能提供简单的入库、出库管理。

(4 ) 查询功能:可按书名查询、作者查询、或出版社查询该书的库存信息

(5) 对书目信息及仓库信息的添加、修改及删除等功能。

三、设计要求

(1) 只能使用C++语言,源程序要有适当的注释,使程序容易 阅读

(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 学生可自动增加新功能模块(视情况可另外加分) (4) 写出课程设计报告,具体要求见相关说明文档

四、设计过程

4.1详细设计 4.1.1系统的需求分析

图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。根据系统界面的提示信息对图书馆信息进行查询、初始化等操作 系统功能需求分析描述如下:

(1)系统主菜单:进入系统和退出系统 (2)功能菜单:显示可以进行的操作

(3)查询主菜单:根据图书编号、书名、作者进行查询,并可显示所有图书信息

(4)借还书主菜单:可以进行借书和还书等操作

4.1.2系统的总统设计

下面从系统的整体流程的功能模块、系统界面及数据结构进行总体设计。 (1)总体思想

本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、借书、还书等主要功能。系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。

(2)系统模块结构图

根据需求分析结果,图书管理系统可以分为三大模块:查询图书模块、借书功能模块、还书功能模块。 系统模块结构如图:

4.1.3 系统的概要设计 ㈠系统主菜单。

显示系统的主菜单,里面有相应的功能代码,根据选择各功能代码进入不同的界面。功能主要包括:退出系统、查询图书、借书、还书。 ㈡查询图书信息

进入此菜单功能模块,输入您要查询的图书的编号、名字、作者等。

4.2运行结果 4.2.1系统主界面

4.2.2功能菜单

4.2.3查询系统菜单

4.2.4借还系统菜单

五 设计总结

经过一个多星期的编译原理课程设计,在我的努力下,顺利完成该课程设计。

通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。现在终于深刻的了解了这句话。经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对实验原理也了有更深的理解。知道和理解了该理论在计算机中是怎样执行的, 对该理论在实践中的应用有深刻的理解 。通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。除了课堂外,课程设计是最能学到东西的,最考验人的。在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。经过这次课程设计,让我对C++这门语言有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。

参考文献

谭洁强 《C程序设计》 清华大学出版社 张基温 《C程序设计案例教程》 清华大学出版社 王宏 《C#程序设计案例教程》 清华大学出版社

附录

# include <stdio.h> # include <stdlib.h> # include <string.h>

typedef struct link {

char number[100]; char bookname[100]; char author[100]; char publish[100]; char time[100]; float price; char status[100]; struct link *next; }link;

link *Cbook() { int n=0;

link *p,*q,*head; FILE *fp;

fp=fopen("图书信息.txt","r+"); if(fp==NULL)

printf("没有找到文件,请检查……"); p=(link *)malloc(sizeof(link)); if(p==NULL)

printf("申请内存出错!!!\n");

fscanf(fp,"%s%s%s%s%s",p->number,p->bookname,p->author,p->publish,p->time); fscanf(fp,"%f",&p->price); fscanf(fp,"%s",p->status); while(feof(fp)==0) { n++; if(n==1) { } else { q=p;

p=(link *)malloc(sizeof(link)); if(p==NULL)

printf("申请内存出错!!!\n");

fscanf(fp,"%s%s%s%s%s",p->number,p->bookname,p->author,p->publish,p->time); fscanf(fp,"%f",&p->price);

head=p;

fscanf(fp,"%s",p->status); q->next=p; } }

p->next=NULL; fclose(fp);

printf("信息已录入!!!"); return head; }

void mainmenu() {

printf("\n*****************************************\n"); printf("\n** 欢迎使用图书管理系统 **\n"); printf("\n** 1.进入系统 0.退出系统 **\n"); printf("\n*****************************************\n"); printf("\n 请选择"); }

void menu1() {

printf("\n*****************************************\n"); printf("\n** 1.进入图书查询系统 **\n"); printf("\n** 2.进入图书借还系统 **\n"); printf("\n** 3.保存所有图书信息 **\n"); printf("\n** 4.返回上级菜单 **\n"); printf("\n*****************************************\n"); printf("\n请选择");

}

void cxmenu() {

printf("\n*****************************************\n"); printf("\n** 1.显示所有图书信息 **\n"); printf("\n** 2.按编号查询图书 **\n"); printf("\n** 3.按书名查询图书 **\n"); printf("\n** 4.按作者查询图书 **\n"); printf("\n** 5.返回上级菜单 **\n"); printf("\n****************************************\n"); printf("\n请选择"); }

void jhmenu() {

printf("\n*****************************************\n"); printf("\n** 1.借书 **\n"); printf("\n** 2.还书 **\n"); printf("\n** 3.返回上级菜单 **\n"); printf("\n*****************************************\n"); printf("\n请选择"); }

void print(link *head) {

link *p; p=head;

}

printf("\n");

printf("\n******************************************printf("\n编号\t\t书名\t\t作者\t\t出版社\t\t出版时while(p!=NULL) {

printf("\n");

printf("%s\t%s\t%s\t%s\t%s",p->number,p->bookname,p- }

printf("\t\t%.2f",p->price); printf("\t\t%s",p->status); printf("\n"); p=p->next;

********\n");

间\t\t价格\t\t状态\n");

>author,p->publish,p->time);

void hold(link *head) { link *p; FILE *fp;

fp=fopen("图书信息.txt","w+"); if(fp==NULL) {

printf("文件操作出错!!!"); exit(1); } p=head;

for(;p!=NULL;p=p->next) { }

fclose(fp);

printf("信息已保存。"); }

void holdcx(link *t) {

link *p=NULL; FILE *fp;

fp=fopen("查询.txt","a+"); p=t;

fprintf(fp,"查询到的信息为:\n"); fprintf(fp,"\n");

fprintf(fp,"\n**************************************fprintf(fp,"\n编号\t\t书名\t\t作者\t\t出版社\t\t出fprintf(fp,"\n");

fprintf(fp,"%s\t%s\t%s\t%s\t%s",p->number,p->booknamfprintf(fp,"\t\t%.2f",p->price);

fprintf(fp,"%s\t%s\t%s\t%s\t%s",p->number,p->booknamfprintf(fp,"\t\t%.2f",p->price); fprintf(fp,"\t\t%s",p->status); fprintf(fp,"\n");

e,p->author,p->publish,p->time);

************\n");

版时间\t\t价格\t\t状态\n");

e,p->author,p->publish,p->time);

}

fprintf(fp,"\t\t%s",p->status); fprintf(fp,"\n"); fclose(fp);

printf("信息已保存!!!");

link *findnumber(link *head) {

char key[100]; link *h,*t1=NULL;

printf("请输入图书的编号:"); getchar(); gets(key);

for(h=head;h!=NULL;h=h->next) {

if(strcmp(key,h->number)==0) { }

return t1; }

link *findboookname(link *head) {

char key[100]; link *h,*t2=NULL;

t1=h; break;

}

printf("请输入图书的书名:"); getchar(); gets(key);

for(h=head;h!=NULL;h=h->next) {

if(strcmp(key,h->bookname)==0) { }

return t2; }

link *findauthor(link *head) {

char key[100]; link *h,*t3=NULL;

printf("请输入作者姓名:"); getchar(); gets(key);

for(h=head;h!=NULL;h=h->next) {

if(strcmp(key,h->author)==0) {

t3=h; break; t2=h; break;

}

}

}

return t3; }

link *sortnumber(link *head) {

link *p,*q,*temp;

temp=(link *)malloc(sizeof(link)); if(temp==NULL) { }

for(p=head;p!=NULL;p=p->next) {

{

if(strcmp(p->number,q->number)>0) strcpy(temp->number,p->number); strcpy(temp->bookname,p->bookname); strcpy(temp->author,p->author); strcpy(temp->publish,p->publish); strcpy(temp->time,p->time); temp->price=p->price;

strcpy(temp->status,p->status);

strcpy(p->number,q->number); {

printf("申请内存出错!!!"); exit(1);

for(q=p->next;q!=NULL;q=q->next)

}

strcpy(p->bookname,q->bookname); strcpy(p->author,q->author); strcpy(p->publish,q->publish); strcpy(p->time,q->time); p->price=q->price;

strcpy(p->status,temp->status);

strcpy(q->bookname,temp->bookname); strcpy(q->author,temp->author); strcpy(q->publish,temp->publish); strcpy(q->time,temp->time); q->price=temp->price;

strcpy(q->status,temp->status);

strcpy(q->number,temp->number);

} }

}

return head;

link *borrowbook(link *head) {

link *h,*p;

char ch,ch1[100]="在库",ch2[100]="不在库"; h=head;

printf("\n******************************************printf("\t\t欢迎使用借书系统!!!\n");

********\n");

}

p=findboookname(h); if(p==NULL)

printf("借书失败,书库中没有这本书!!!"); else if(strcmp(p->status,ch2)==0) printf("借书失败,图书不在库!!!"); else {

printf("确认借出?Y/N:"); scanf("%c",&ch); getchar();

if(ch=='Y'||ch=='y') {

strcpy(p->status,ch2); }

if(ch=='N'||ch=='n') { } }

printf("你没有借任何书!!!");

printf("借书成功,请返回上级菜单保存信息!!!");

return head;

link *returnbook(link *head) {

link *h,*p;

char ch,ch1[100]="在库",ch2[100]="不在库"; h=head;

printf("\n******************************************printf("\t\t欢迎使用还书系统!!!\n"); p=findboookname(h); if(p==NULL)

printf("还书失败,这不是本书库的书!!");

********\n");

else {

printf("确认还书?Y/N:"); scanf("%c",&ch);

getchar(); if(ch=='Y'||ch=='y') {

strcpy(p->status,ch1);

printf("还书成功,请返回上级菜单保存信息!!!"); }

if(ch=='N'||ch=='n') { }

printf("你没有还书!!!");

}

return head; }

void main() {

int a,b,c,d; link *h,*t;

本文来源:https://www.bwwdw.com/article/a9yh.html

Top