您好,欢迎来到九壹网。
搜索
您的当前位置:首页C语言——大学生图书管理系统

C语言——大学生图书管理系统

来源:九壹网
本模板是课程设计报告模板,请各位同学认真阅读以下要求:

1. 本页为设计报告要求页,不必打印。(制作好报告后输出时将本页删除)

2. 3. 4. 5.

本模板的各种字体及页面设置请同学们不要改动。 本设计报告左侧装订。在虚线处装订。

在课程设计封皮一页上用已经设置好的宋体四号来填写各个项目。

在课程设计评定表一页上用宋体小四填写班级、学号、姓名、项目组、项目组长、项目组组员、本人工作简介。 组长评语一栏应由组长来给出。

6. 在课程设计任务书一页的开头应按照给定的设置(黑体三号)填写好你的班

级,在第五项时间安排里面应用宋体五号加粗来填写好日期范围。

7. 从程序基本框架结构图开始到设计报告的最后一页都要求有页眉,内容为你

的课程设计题目,宋体小五居中。页脚中的页码已经设置好,同学们不必改动。 8. 在程序基本框架结构图采用WORD中的自选图形绘制程序基本框架结构图,

也就是程序流程图。

9. 在程序设计说明书中应该描述程序的设计思想,重点描述自己做的那部分的

设计思想。字体用宋体小四。

10. 在代码清单中打印程序已经调试好的可运行的程序代码。

要求字体为宋体 五号。(页数可增加)

11. 报告的最后一部分是设计总结,应在程序代码之后另起一页,主要写通过一

周课程设计你自己的体会,包括你学到了什么,哪里遇到了困难解决的办法以及今后的目标。 字体用宋体小四。

12. 报告的各个部分都可以不为规定的一页,自己可增加页数,但要保证开始另外一项要另起一页。

13.服务课程名称:本科添写:C语言;/专科添写:计算机语言(c)

┊┊

程 设 计

服务课程名称: C语言 系: 专业: 班级: 学号: 姓名: 指导教师: 课程设计周次: 起始日期:至

目录

1. C语言课程设计成绩评定表……………………. I页 2. C语言课程设计任务书………………………….II页 3. 程序基本框架结构图……………………………. 1页 4. 程序设计说明书…………………………………. 2页 5. 源代码清单………………………………………. 3页 6. 课程设计总结…………………………………….13页

课程设计成绩评定表

班级 项目组 项目组组员 学号 姓名 项目组长 本人工作简介:我们在本次课程设题目是大学图书管理系统,在本次设计中我负责的工作有:创建图书信息结构体,创建读者信息结构体,图书信息输出函数和读者信息输出函数。 组长评语:该同学所负责的BOOK和REAEDER两部分结构体以及BOOK和READER信息的输入和输出,完美地把老师所传授的知识和程序结合,为其他组员的程序提供有力支持,为程序的最后完成作出大力贡献。 成绩评定标准 报告完成情况 纪律表现 程序功能性 界面美观性 程序可操作性 答辩表现 所起作用程度 A 很好 很好 强 很好 很好 很好 80%以上 B 好 好 较强 好 好 好 C 比较好 比较好 一般 一般 一般 一般 60%以上 D 一般 一般 较弱 较差 较差 较差 E 不好 不好 弱 不好 不好 不好 60%以下 优秀 A>=5 良好 A>=3 C<=0 中等 B>=2 C>=4 及格 A=0 B=0 C>=3 不及格 A=0 B=0 C<=2 E>=1 最后成绩 C<=0 负责指导教师: (签名) 指导教师: (签名)

I

班C语言课程设计任务书

一、设计目的

通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。

二、设计要求

1、认真查阅参考书、资料 2、遵守课程设计时间安排 3、按时上机,认真调试程序

4、认真完成课程设计报告

三、课设报告装订内容及顺序

1、课程设计封皮

2、目录

3、课程设计成绩评定表 4、课程设计任务书 5、程序基本框架图 6、程序设计说明书 7、源代码清单 8、课设总结与心得

四、设计题目(装订时只保留一项)

 大学生图书管理系统

五、时间安排(一周:从6月 16 日到 6 月 20 日 )

1、查阅资料及程序设计(1天) 2、程序编制及调试(3天)3、成绩评定(0.5天)

3、打印报告(0.5天)

六、参考文献

1、《C语言程序设计》李淑华/李贞编 大连理工大学出版社 2、《C语言程序设计》孙连科/姚大鹏编 辽海出版社 3、《C++时尚编程百例》网冠科技编.机械工业出版社 4、《TURBO C 实用大全》徐金梧等编. 机械工业出版社

II

大学图书管理系统

程序基本框架结构图

1

大学图书管理系统

程序设计说明书

在本次设计中我负责的工作有:创建图书信息结构体,创建读者信息结构体,图书信息输出函数和读者信息输出函数.

本周实训,我们组所设计的程序名称是:大学图书信息管理系统。第一眼看到这个题目,我们不难想到其中所包含的一些基本内容。说道图书馆,第一印象是图书馆中有很多书,每一本书都有它自己的编号、书名、库存数量(即程序中的:book_kc)和现存数量(即程序中的:book_xc)。既然图书包含这么多的信息,我们就得创建一个函数能够将这些信息全都包含在内,这样,我们就不难想到我们所学的“结构体函数”。于是,我就定义了一个新的结构体函数(即程序中的:typed struct bk)。同样,大学图书馆还应该包含读者信息,读者信息应包含读者编号、读者姓名以及读者所借书的信息。所以,与图书信息相类似,我们要创建一个能包含读者信息的函数(即程序中的:typed struct rd)。创建完“图书信息和读者信息结构体函数”后所需信息就可以存入,当需要时,我们就得把他们调出来,这样就需要创建相关的调用函数(void print_book(struct bk *)和void print_reader(struct rd *))。这两个函数分别用来输出图书信息和读者信息。他们所用到的知识基本相同:首先,要创建一个“结构体指针”(比如struct bk*p),然后将对应信息指针链表头指针赋予它(p=h),最后,应用一个输出函数就可以输出相应信息,而且,这个输出函数被包含在一个循环体(程序中运用的是while()循环)当中,这样就可以按顺序输出相应信息。不过,在我所设计的循环体中不是运用自增(比如:i++)来进入下一个循环的,而是利用一个指针链表(p=p->next)来实现的。这样我们就可以输出所需要输出的信息。

这些就是我对我所设计的程序进行的说明。

2

大学图书管理系统

源代码清单

#include #include #include #include #include #include typedef struct bk { char book_num[11]; char book_name[41]; int book_kc; int book_xc;

struct bk *next; }book; /* 图书信息*/ typedef struct rd { char reader_num[11]; char reader_name[11];

char reader_book_num[11]; struct rd * next ; }reader;/*读者信息*/ struct bk * h_book;

struct rd * h_reader; /*全局变量,分别为指向图书信息链表和读者信息链表的头指针*/

void Form_Find_Book(); /*查询图书菜单 */ void Form_Borrow_Book(); /*借书菜单*/ void Form_Return_Book(); /*还书菜单*/ void Find_Book(char *); /*查询图书*/

void Borrow_Book(char *,char *);/*借书,修改读者借阅信息和图书的现存信息*/

void Return_Book(char *,char *);/*还书,修改读者借阅信息和图书的现存信息*/

void print_book(struct bk *);/*输出全部图书信息*/ void print_reader(struct rd *);/*输出全部读者信息*/

void load_data();/*从文件中读取数据,链表头指针指向第一个节点*/ void init_reader();/*第一次运行程序时对三个读者的初始化*/

3

大学图书管理系统

void init_book();/*第一次运行程序时对三本图书的初始化*/ void save();/*将链表中的信息保存到文件中*/ void M_Form()/*主菜单*/ { system(\"cls\"); char ch;

printf(\"\\n\\\*************************************\\n\"); printf(\"\\\\欢迎使用大学图书管理系统\\n\");

printf(\"\\\*************************************\\n\"); printf(\"\\n\\n\\\ *******请选择你的操作*******\\n\"); printf(\"\\\ +------------------------------+\\n\"); printf(\"\\\ | 0 退出系统 |\\n\"); printf(\"\\\ | 1 图书查询 |\\n\"); printf(\"\\\ | 2 借书登记 |\\n\"); printf(\"\\\ | 3 还书管理 |\\n\"); printf(\"\\\ | 4 输出全部信息 |\\n\"); printf(\"\\\ +------------------------------+\\n\");

printf(\"\\n\\n\\\ 动本075班第二小组制作,欢迎使用!\\n\\n\");

do{

/*此循环用来保证选择正确的数字键执行相应的功能*/ printf(\"\\n\\n 请选择相应的功能代码:\"); scanf(\"%c\

fflush(stdin); /*用于清除键盘缓冲区中的多余字符*/ }while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4');

4

大学图书管理系统

switch(ch) /*根据输入的字符进行选择执行相应的模块*/ { case '0':exit(0);

case '1':Form_Find_Book();break; case '2':Form_Borrow_Book();break; case '3':Form_Return_Book();break;

case '4':load_data();print_book(h_book);print_reader(h_reader);M_Form(); break;

default:printf(\"error\\n\");exit(0); } }

void Form_Find_Book() {system(\"cls\"); char ch;

char book_num[11];

printf(\"\\n 图书查询功能模块,请选择相应的功能代码:\\n\"); printf(\" 0:返回到主菜单\\n\"); printf(\" 1:图书查询\"); do{

printf(\"\\n\\n 请选择相应的功能代码:\"); scanf(\"%c\fflush(stdin);

}while(ch!='0'&&ch!='1'); switch(ch)

{ case '0':M_Form();break; /*选择0,则返回到上一级目录,即主菜单*/ case '1':

{ printf(\" \\n请输入需要需要查询的书的编号:\"); scanf(\"%s\fflush(stdin);

Find_Book(book_num); /*执行查询*/

Form_Find_Book();/*查询完毕后继续返回到查询窗口,执行下一个查询*/ }

default:printf(\"error\\n\");exit(0); } }

void Find_Book(char book_num[]) /*查询图书模块,根据图书编号查询*/ { struct bk *p; p=h_book;

while(p!=NULL&&strcmp(p->book_num,book_num)!=0)

5

大学图书管理系统

p=p->next; /*此循环用于查找,如果在中间找到,则p就不可能到末尾指向空*/ if(p==NULL) printf(\"\\n\此编号对应的图书不存在!\\n\");

else { printf(\"\\n\图书编号\图书名\库存量\现存量 \\n\");

printf(\" %10s\ %10s\ %d\ %d\\\n\c,p->book_xc); }

getch(); }

void init() /*形函数、图书信息、读者信息进行初始化(本程序中暂且没有用图形函数)*/ {

init_book(); init_reader(); }

void init_book() /*初始化图书模块*/ { book ba[3]; FILE *fp; int i;

printf(\"\\n 系统即将进行初始化,图书初始化模块:\\n\");

printf(\"\\n 请分别输入三本书的书号,书名,数量(以空格隔开):\\n \"); for(i=0;i<3;i++) /*输入3本图书进行初始化*/

scanf(\"%s%s%d\

for(i=0;i<3;i++) {ba[i].book_xc=ba[i].book_kc;} /*开始时库存=现存*/ if((fp=fopen(\"book.dat\建立新文件book.dat准备写入数据*/

{ printf(\"不能建立图书文件,初始化失败!请重新启动系统!\\n\"); return; } for(i=0;i<3;i++)/*将初始化的3本图书写入文件book.dat中*/ { if(fwrite(&ba[i],sizeof(struct bk),1,fp)!=1) { printf(\"\\写数据错误!\\n\"); exit(0); } }

fclose(fp); }

void print_book(struct bk *h) /*输出图书信息*/ { system(\"cls\"); struct bk *p; p=h;

printf(\"\\n\图书编号 \图书名 \库存量 \现存量 \\n\");

6

大学图书管理系统

while(p!=NULL)

{printf(\"%10s\%10s%10d\%10d\\n\->book_xc); p=p->next; } }

void print_reader(struct rd *h) /*输出读者信息*/ { struct rd *p; p=h;

printf(\"\\n\读者编号 \读者姓名 \所借书号 \\n\"); while(p!=NULL)

{printf(\"%10s\%10s%10s\\n\_num);

p=p->next; }

getch(); }

void Form_Borrow_Book() /*借书菜单界面*/ {system(\"cls\"); char ch;

char book_num[11],reader_num[11];

printf(\"\\n 图书借阅功能模块,请选择相应的功能代码:\\n\"); printf(\" 0:返回到主菜单\\n\"); printf(\" 1:图书借阅\\n\"); do{

printf(\"\\n\\n 请选择相应的功能代码:\"); scanf(\"%c\fflush(stdin);

}while(ch!='0'&&ch!='1'); switch(ch)

{ case '0':M_Form();break; case '1':

{ printf(\" \\n请输入读者编号与所借书编号:(以空格分隔)\"); scanf(\"%s%s\fflush(stdin);

Borrow_Book(reader_num,book_num);/*调用借书函数,执行借书功能*/

7

大学图书管理系统

Form_Borrow_Book();/*借书完成后,程序返回到借书菜单*/ }

default:printf(\"error\\n\");exit(0); } }

void Borrow_Book(char reader_num[],char book_num[]) /*输入读者编号,和需要借阅的书的编号,执行借书功能*/ { struct bk *book_p; struct rd *reader_p; book_p=h_book;

while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0) book_p=book_p->next; if(book_p==NULL)

{ printf(\"\\n\此编号对应的图书不存在!\\n\"); Form_Borrow_Book(); }

reader_p=h_reader;

while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next; if(reader_p==NULL)

{ printf(\"\\n\此编号对应的读者不存在!\\n\"); Form_Borrow_Book(); }

else if(strcmp(reader_p->reader_book_num,\"0\")!=0) { printf(\"\\n\已达到最大借阅数,不能再借书!\\n\"); Form_Borrow_Book(); }

else {

book_p->book_xc=book_p->book_xc-1;/*借书完成后,修改现存量*/

strcpy(reader_p->reader_book_num,book_p->book_num);/*修改读者的借阅信息*/

save();/*将修改后的信息保存到文件中*/ load_data(); /*读入新文件中的数据*/}

Form_Borrow_Book();/*程序执行完毕后,返回到借书菜单界面*/ }

void Form_Return_Book() /*还书菜单*/ {system(\"cls\");

8

大学图书管理系统

char ch;

char book_num[11],reader_num[11];

printf(\"\\n 归还图书功能模块,请选择相应的功能代码:\\n\"); printf(\" 0:返回到主菜单\\n\"); printf(\" 1:归还图书\\n\"); do{

printf(\"\\n\\n 请选择相应的功能代码:\"); scanf(\"%c\fflush(stdin);

}while(ch!='0'&&ch!='1'); switch(ch)

{ case '0':M_Form();break; case '1':

{ printf(\" \\n请输入读者编号与所还书编号:(以空格分隔)\"); scanf(\"%s%s\fflush(stdin);

Return_Book(reader_num,book_num);/*调用还书函数*/ Form_Return_Book(); }

default:printf(\"error\\n\");exit(0); } }

void Return_Book(char reader_num[],char book_num[]) /*输入读者编号和所还书编号执行还书*/ { struct bk *book_p; struct rd *reader_p; book_p=h_book;

while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0) book_p=book_p->next; if(book_p==NULL)

{ printf(\"\\n\此编号对应的图书不存在!\\n\"); Form_Return_Book(); }

reader_p=h_reader;

while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next; if(reader_p==NULL)

{ printf(\"\\n\此编号对应的读者不存在!\\n\");

9

大学图书管理系统

Form_Return_Book(); }

else if(strcmp(reader_p->reader_book_num,book_num)!=0) { printf(\"\\n\读者没有借阅此书\\n\"); Form_Return_Book(); }

else {

book_p->book_xc=book_p->book_xc+1;/*还书后,修改图书库存量*/

strcpy(reader_p->reader_book_num,\"0\");/*还书后,修改读者借阅信息*/ save();/*保存到文件*/

load_data(); /*读入文件中的数据*/} Form_Return_Book(); }

void init_reader()

/*系统第一次运行时,初始化3位读者信息,从键盘读入*/ { reader ra[3]; FILE *fp; int i;

printf(\"\\n 系统即将进行读者初始化:\\n\");

printf(\"\\n 请分别输入三位读者的编号和姓名(以空格隔开):\\n \"); for(i=0;i<3;i++)

scanf(\"%s%s\for(i=0;i<3;i++)

strcpy(ra[i].reader_book_num,\"0\");

if((fp=fopen(\"reader.dat\

{ printf(\"不能建立读者文件,初始化失败!请重新启动系统!\\n\"); return; } for(i=0;i<3;i++)/*将3位读者信息写入文件*/

{ if(fwrite(&ra[i],sizeof(struct rd),1,fp)!=1) { printf(\"\\写数据错误!\\n\"); exit(0); } } fclose(fp); }

void load_data()

/*从文件book.dat和文件reader.dat中读取数据到内存*/ /*将读取的数据存放到2个链表中*/

{ struct bk *book_p1,*book_p2,*book_p3;

struct rd *reader_p1,*reader_p2,*reader_p3; FILE *fp_book,*fp_reader;

fp_book=fopen(\"book.dat\

10

大学图书管理系统

book_p1=(struct bk *)malloc(sizeof(struct bk)); fread(book_p1,sizeof(struct bk),1,fp_book); h_book=book_p3=book_p2=book_p1; while(! feof(fp_book))

{ book_p1=(struct bk *)malloc(sizeof(struct bk)); fread(book_p1,sizeof(struct bk),1,fp_book);

book_p2->next=book_p1;book_p3=book_p2;book_p2=book_p1; }

book_p3->next=NULL; /*free(book_p1); */ fclose(fp_book);

fp_reader=fopen(\"reader.dat\

reader_p1=(struct rd *)malloc(sizeof(struct rd)); fread(reader_p1,sizeof(struct rd),1,fp_reader); h_reader=reader_p3=reader_p2=reader_p1; while(! feof(fp_reader))

{ reader_p1=(struct rd *)malloc(sizeof(struct rd)); fread(reader_p1,sizeof(struct rd),1,fp_reader);

reader_p2->next=reader_p1;reader_p3=reader_p2;reader_p2=reader_p1; }

reader_p3->next=NULL; fclose(fp_reader); }

void save()

/*将链表中的数据保存到内存中*/ { FILE *book_fp,*reader_fp; struct bk *book_p; struct rd *reader_p;

book_p=h_book; reader_p=h_reader;

if((book_fp=fopen(\"book.dat\

{ printf(\"不能建立图书文件,初始化失败!请重新启动系统!\\n\"); return; } while(book_p!=NULL)

{ if(fwrite(book_p,sizeof(struct bk),1,book_fp)!=1) { printf(\"\\写数据错误!\\n\"); exit(0); } book_p=book_p->next; }

fclose(book_fp);

if((reader_fp=fopen(\"reader.dat\

11

大学图书管理系统

{ printf(\"不能建立图书文件,初始化失败!请重新启动系统!\\n\"); return; } while(reader_p!=NULL)

{ if(fwrite(reader_p,sizeof(struct rd),1,reader_fp)==0) { printf(\"\\写数据错误!\\n\"); exit(0); } reader_p=reader_p->next; }

fclose(reader_fp); }

main()

{ FILE * fp;

system(\"cls\");

h_book=NULL;h_reader=NULL;

if((fp=fopen(\"book.dat\init();/*第1次运行系统时的初始化*/ else

{load_data();/*从文件中读入数据*/ }

M_Form();/*显示主菜单*/

save();/*保存内存中的数据(即链表中的数据)到文件*/ getch(); }

12

大学图书管理系统

课程设计总结

这一周的程序设计,让我增长了很多知识,提高了C语言水平,同时,加深了我对课程内容的全面理解,还使我看到了自己许多不足之处。我知道了我还有很多地方有待提高,否则,学到的知识就有限了。

C语言是一门比较难以理解的课程,加之在学习编程基础知识时,我们都没有认真学习,以致于当拿到自己所要编的课程题目时,大家都感到迷茫,对于这样一个程序无从下手,所以实训的第一天我们这一组没有一点进展.所有组员一致决定好好研习被我们遗弃在书桌角落已很久的课本,我们又从图书馆借来的几本与编程有关的书籍。就这样我们又来到了原点,一切从开始做起。终于,经过我们全体组员的不懈努力这个程序被我们完成了。

通过这周程序设计,我们看到了许多自己的不足之处,其中最为严重的就是基础知识掌握的不够牢固。由此导致我们在程序过程中起步较晚,以致于再实训结束时不能编出我们心目中的程序,只好草草收尾,所以我们的程序才不是那么完美。所以,通过这一周,我掌握了许多原先没有掌握的基础知识,而且能够运用这些知识进行编程。

不仅如此,这一周的实训还帮我们改掉了以前懒散的坏毛病,我们开始变得不再畏惧困难,有勇气向困难挑战。这次程序设计,我们组有5名成员,在这一周中,我们5个人能友好相处,从来没有发生过任何冲突,每当遇到分歧时总能心平气和地分析、研究。这样的团队精神也是我们程序能够成功运行的重要原因。

无论如何,这次实训我们成功了,我们的程序运行了,这也为我们以后的C语言学习乃至其他学科的学习增添了许多信心。我们不再害怕失败,因为“失败乃成功之母“,因为在这次实训我们也经过了许多次失败,但是,每次导致失败的问题被解决后,我们的程序就向成功迈进了一步。而且,我们更加坚信团队力量的伟大。以后有什么自己解决不料的问题,就会想到找其他人来帮忙,这样可以使同学之间更加互相信任。这也使我们踊跃参加集体活动,更加丰富我们的大学生活,丰富我们的人生。

总而言之,这次C语言程序设计使我受益匪浅。我相信,这次实训的所得,不是在单纯的学习中所能得到的,我将永远记住这次实训,记住我们这一组所有组员,也要记住认真教导我们的老师。

13

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务