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

C语言课程设计报告图书信息管理系统设计55071-13木八、、20071001797指导老师:文中C语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。
学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。
1、题目要求设计“图书信息管理系统”要求:图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。
使之提供以下功能:(1)系统以菜单方式工作。
(2)图书信息录入功能。
(图书信息用文件保存)(3)图书信息浏览功能。
(4)图书信息查询功能。
(5)图书信息的删除和修改。
2、分析:根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3、总体设计:根据题目要求,可以将系统分为六个模块:(1)管理员登录系统模块。
(2)菜单选择模块。
(3)图书信息录入功能模块。
(4)图书信息浏览功能。
(5) 图书信息查询功能。
(6) 图书信息的删除和修改。
第1页4、详细设计:头函数名:#include<stdio.h>#include<stdlib.h>#in clude<stri ng.h>/********* 图书信息结构体*******/***包括登录号,书名,作者名,分类号,struct book inf出版单位,出版时间,价格等***/ { int num” ****************************************************** 录号char bname[20];***************************************char wname[10];***************************************char clanu m[14 ]; ***************************************char pubcom[10];***************************************char pubtime[10 ]; *************************************** floatprice; *********************************************};书名作者名分类号出版单位出版时间价格一管理员登录系统模块:(1)来到图书信息管理系统页面{void in dex() {char in put;时prin tf("\n\n\t\t\t**************************** 直接进入printf (” n"); printf("\t< 按任意键进入 >\n\t");in put=getchar();} (2)管理员登陆进入功能菜单页面FILE *fp;struct man age pswd;if ((fp=fope n("password.txt","r"))==NULL) {printf("\n\n\n\tCannot open file!'n\t"); } else do prin tf("\t\t\t 个页面图书信息管理系统\n");prin tf("\t\t\t* ************************** **\n\n\n"); 注释:运行第2页{{printf("\n\n\t 请输入管理员:”); sea nf("%s", name); prin tf("\n\n\t请输入管理员密码:");sea nf("%s",password); fp=fope n("password.txt","r");fread(&pswd,sizeof(struct man age),1,fp); fclose(fp);w=strcmp(pswd.ma nage _n ame, name); k=strcmp(pswd.password,password); adm_servelist(); }while (w!=0||k!=0); adm_servelist(); } }⑶来到功能菜单页面第3页void adm_servelist() {void book_add(); void book_view(); void cha nge(); void del();void book_search(); void logi n(); void pwcha nge(); int in; char in put; do{prin tf("\n\n\n\t-- 欢迎使用信息管理系统 --"); printf("\n\n\t1. 图书信息录入 \n"); prin tf("\t2. 图书信息浏览 \n"); prin tf("\t3. 图书信息查询 \n"); prin tf("\t4. 图书信息删除 \n"); prin tf("\t5. 图书信息修改 \n"); prin tf("\t6. 退出管理模式 \n"); prin tf("\n\t请选择服务种类:"scan f("%d",&in);if (in!=1&&in !=2&&in !=3&&in!=4&&in !=5&&in !=6) printf("\n\t没有这项服务~\n");注释:菜单列出的服务种类从 1,2,3,4,5,6 所对应的功能进行选择prin tf("\t 按任意键重新选择”);in put=getchar();}}while (in!=1 &&in !=2&&in !=3&&in !=4&&in!=5&&in !=6); switch (in){case 1: book_add(); break;case 2: book_view(); break;键则case 3: book_search(); break;页面case 4: del(); break;case 5: cha nge();break;case 6: logi n(); break;}}(3)图书信息录入功能模块void book_add(){第4页void adm_servelist();void book_add();int i=0,j;FILE *fp;char in put;struct book inf books;struct booki nf book_taxis[30];printf("\n\n\n\t--- 请输入图书信息---\n\n"); printf("\t 登录号:");scan f("%d",&books .n um);printf("\n\t 书名:");sca nf("%s",books.b name);printf("\n\t 作者名:");sca nf("%s",books.w name);printf("\n\t 分类号:");sca nf("%s",books.cla nu m);printf("\n\t 出版单位:");sca nf("%s",books.pubcom);printf("\n\t 出版时间:");sca nf("%s",books.pubtime);注释:选择自己所后摁下数字注释:输入的图书信息是通过文件进行保存的printf("\n\t 价格:");{scan f("%f", &books.price);if ((fp=fope n( "book.txt","广))!=NULL){do{fread(&book_taxis[i],sizeof(struct book in f),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for (j=O;j<=i;j++)if (books .num==book_taxis[j]. num){printf("\n\n\n\t 对不起,这个编号已经使用过了prin tf("\t 按任意键返回管理菜单~”);in put=getchar();adm_servelist();break;}}if ((fp=fope n("book.txt","r"))==NULL){第5页fp=fope n( "book.txt","w");}else{fclose(fp);fp=fope n("book.txt","a");}fwrite(&books,sizeof(struct book in f),1,fp);fclose(fp);printf("\n\n\n\t 信息输入完毕~按任意键继续\n");in put=getchar();adm_servelist();}(4)图书信息浏览功能模块void book_view() void adm_servelist();void book_view();int in p,i=0,n=0;~\n");FILE *fp;char in put;struct book inf bookview[20];if ((fp=fope n("book.txt","r"))==NULL){printf("\n\n\n\t 数据尚未初始化~~\n\n\t 请在管理菜单中增加图书信息prin tf("\n\t< 按任意键返回管理菜单>\n\t");in put=getchar();adm_servelist();}else{do{fread(&bookview[i],sizeof(struct book in f),1,fp);i=i+1;}while (!feof(fp));fclose(fp);do{printf("\n\t ------- 共有%d条记录--- ",i-1);printf("\n\n\t 登录号:%d\n",bookview[n].num);第6页printf("\n\t 书名:%s\n",bookview[n].bname);printf("\n\t 作者名:%s\n",bookview[n].wname);printf("\n\t 分类号:%s\n",bookview[n].clanum);printf("\n\t 出版单位:%s\n",bookview[n].pubcom);printf("\n\t 出版时间:%s\n",bookview[n].pubtime);prin tf("\n\t 价格:%f\n ",bookview[ n].price);printf("\n\n\t1. 上一页\t2.下一页\t3.回目录\n");printf("\n\t 请选择:");scan f("%d", &in p);switch (inp){case 1:{if (n==0){printf("\n\t 已到达首页\n\t按任意键重新选择");in put=getchar();}else n=n-1; break;}case 2:{if (n==i-2){printf("\n\t 已到达最末页\n\t按任意键重新选择");in put=getchar();}else n=n+1; break;}case 3:{adm_servelist();break;}default:{printf("\n\t 没有这项服务\n\t按任意键重新选择");in put=getchar();}}}while (in p!=3);第7页}}(5)图书信息修改与删除功能模块修改:void cha nge(i nt x){int in p,i=O,j;void book_search();FILE *fp,*fp1;char in put;struct book inf books,book_taxis[20];do{printf("\n\n\n\t 注意:您确定要修改该记录吗?\n"); printf("\n\t1. 是\t2.否\n");printf("\n\t 请输入:");scan f("%d",&in p);if (in p!=1 &&in p!=2){printf("\n\t 对不起~没有这项服务~\n");printf("\t 按任意键重新选择\n\t");in put=getchar();}}while (in p!=1 &&in p!=2);if (in p==2)book_search();if (in p==1){printf("\n\n\n\t--- 请输入图书信息---\n\n”);printf("\t 登录号:”);sca nf("%d",&books. nu m);printf("\n\t 书名:");sca nf("%s",books.b name);printf("\n\t 作者名:");sca nf("%s",books.w name);printf("\n\t 分类号:");sca nf("%s",books.cla nu m);printf("\n\t 出版单位:");sca nf("%s",books.pubcom);printf("\n\t 出版时间:");sca nf("%s",books.pubtime);第8页printf("\n\t 价格:");sca nf("%f",&books.price);if ((fp1= fope n("book.txt","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct book in f),1,fp1);i=i+1;}while(!feof(fp1));fclose(fp1);for (j=O;j<x;j++)if (books .num==book_taxis[j]. num){~\n ”);printf("\n\n\n\t 对不起,这个编号已经使用过了prin tf("\t 按任意键返回管理菜单~”);prin tf("0");in put=getchar();book_search();break;}for (j=x+1;j<i-2;j++)if (books .num==book_taxis[j]. num){~\n ”);printf("\n\n\n\t 对不起,这个编号已经使用过了prin tf("1");prin tf("\t 按任意键返回管理菜单~”);in put=getchar();book_search();break;}}book_taxis[x]=books;fp=fope n("book.txt","w");for (j=0;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct book in f),1,fp); fclose(fp);printf("\n\n\t 信息修改完成!按任意键返回”);in put=getchar();book_search();第9页}}S删除:void del( int y){char in put;FILE *fp;int in p,i=0,j;struct book inf book_taxis[20];void book_search();void adm_servelist();do{printf("\n\n\n\t 注意:您确定要删除该记录吗?\n");printf("\n\t1. 是\t2.否\n");printf("\n\t 请输入:");scan f("%d",&in p);if (in p!=1 &&in p!=2){printf("\n\t 对不起~没有这项服务~\n");printf("\t 按任意键重新选择\n\t");in put=getchar();}}while (in p!=1 &&in p!=2);if (in p==2)book_search();if (in p==1){if ((fp=fope n("book.txt","门)!=NULL){do{fread(&book_taxis[i],sizeof(struct book in f),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}if (i>2){fp=fope n( "book.txt","w");第10页for (j=O;j<y;j++)fwrite(&book_taxis[j],sizeof(struct book in f),1,fp);fclose(fp);fp=fope n("book.txt","a");for (j=y+1;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct book in f),1,fp);fclose(fp);}else{remove("book.txt");}printf("\n\n\t 记录已删除!\n\n\t 按任意键返回\n\t"); in put=getchar();adm_servelist();}}(6) 图书信息查询功能模块void book_search(){void adm_servelist();void id_search();void wr_search();void bn _search();char in put;FILE *fp;int inp;if ((fp=fope n("book.txt","r"))==NULL){printf("\n\n\n\t 数据尚未初始化~~\n\n\t 请在管理菜单中增加图书信息prin tf("\n\t< 按任意键返回管理菜单>\n\t");in put=getchar();adm_servelist();}else{do{prin tf("\n\n\n\t1. 按图书登录号查询\n");printf("\n\t2. 按图书作者查询\n");第11页printf("\n\t3. 按图书名查询\n");printf("\n\t4. 回到主菜单\n");printf("\n\n\t 请选择查询类别:");sca nf("%d",&in p);if (in p!=1 &&in p!=2&&in p!=3&&in p!=4){printf("\n\n\t 没有这项服务~\n\t按任意键重新选择~");in put=getchar();}}while (in p!=1 &&in p!=2 &&in p!=3&&in p!=4);fclose(fp);switch (inp){case 1: id_search(); break;case 2: wr_search(); break;case 3: bn _search(); break; case 4: adm_servelist(); break;}}5运行与测试报告:第12页一欢迎使用信曳菅理系纟充一请选择服务种类:入览询除改式希查删修模息自心息息自心理书书书书节出1J 口1x第13页三后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。
《C语言课程设计-图书信息管理系统》

在visual C++ 6.0环境中输入源程序,在没有提示错误的情况下编译,生成.exe可执行文件。
①双击文件,会看到如图6所示界面。
该图是一个菜单函数,通过scanf()函数输入数字来选择各个功能的选择和转换。
根据用户的选择,分别调用其他自定义函数。
②该界面同时也调用add( )函数,在输入数字3按回车后会提示输入序号,书名,作者,库存,用户可以把要增加的图书信息进行输入。
如图6所示图6 菜单和注册新书界面该函数通过scanf( )函数来选择注册功能,同时提示输入图书信息,如输入序号:056 作者:曹雪芹数量:5000③该界面是调用out( )函数,在输入数字1按回车后会提示输入所借图书的序号,之后会自动弹出该图书的所有已输入的信息,之后会提示输入借书证号和所借天数,如图7所示。
图7 借阅图书界面如输入图书序号:056 界面会自动弹出与该图书有关的所有信息,再输入借书证序号:1002,所借天数:3 之后就完成了借阅图书的操作。
④该界面是调用in( )函数界面,在输入数字2按回车后会提示输入图书序号,之后会自动弹出该图书的所有信息且库存量自动加一,并打印“全部入藏”。
如图8所示图8 归还图书界面如输入图书序号:056 界面就会自动弹出该图书的所有信息及判断所借图书证号是否与系统保存的一致,并把此书归与保存图书函数中,即完成了图书的归还。
⑤该界面是调用del( )函数,在输入4后会提示输入图书序号,之后会显示该书的信息,并打印“该书已注销”。
如图9所示图9 注销图书界面如输入图书序号:056 系统自动弹出有关该书的信息,通过调用del()函数进而对该书进行注销。
⑥按数字“0”会得到exit()函数从而退出运行程序。
4 设计体会这次计算机C语言程序设计是一次综合性设计,它不仅检验了我这个学期C。
c语言课程设计报告图书管理系统

c语言课程设计报告图书管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法,熟悉图书管理系统的开发流程,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。
–理解图书管理系统的需求和设计原理。
2.技能目标:–能够使用C语言编写简单的程序。
–学会使用C语言实现图书管理系统的功能。
3.情感态度价值观目标:–培养学生的团队协作意识和沟通能力。
–增强学生对计算机科学和编程的兴趣和热情。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及图书管理系统的开发。
具体安排如下:1.C语言的基本语法:–变量和数据类型–运算符和表达式–函数和数组–指针和引用2.数据结构:3.图书管理系统的开发:–系统测试和优化三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:用于讲解C语言的基本语法和数据结构。
2.案例分析法:通过分析具体的图书管理系统案例,使学生更好地理解系统设计和功能实现。
3.实验法:让学生动手编写程序,巩固所学知识,提高实际操作能力。
4.小组讨论法:鼓励学生分组讨论,培养团队协作意识和沟通能力。
四、教学资源本课程所需的教学资源包括:1.教材:《C语言程序设计》2.参考书:《C Primer Plus》、《数据结构与算法分析》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络设备以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
评估方式应客观、公正,能够全面反映学生的学习成果。
具体安排如下:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。
2.作业:包括编程练习和理论作业,占总评的30%。
3.考试:包括期中和期末考试,占总评的50%。
期中和期末考试将涵盖C语言基本语法、数据结构以及图书管理系统的开发内容。
《C语言程序设计》课程设计报告(图书信息管理系统)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:会计学院专业:会计学年级:2012班别: 4班指导教师:组长:同组成员:目录一、目的 (1)二、需求分析 (1)三、概要设计 (1)四、详细设计 (3)五、调试分析 (4)六、测试结果 (5)七、用户使用说明 ................................................. 错误!未定义书签。
八、课程设计总结..................................................................................错误!未定义书签。
附录:参考代码 ..................................................... 错误!未定义书签。
图书信息管理系统 ........................................... 错误!未定义书签。
一目的本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。
将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。
二需求分析根据图书馆图书信息管理的需要,建立一个“图书信息管理系统”,以方便对图书的各项管理操作。
开发目的如下:1、图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
2、图书信息管理系统,提供以下功能:1)图书信息录入功能(图书信息用文件保存)--输入;2)图书信息浏览功能--输出;3)查询和排序功能:--算法;4)按书名查询;5)按作者名查询;6) 按登录号从大到小排列;7)图书信息的删除与修改三概要设计程序总体功能框架:开始界面主要提示的菜单界面插入图书信息浏览图书信息查询图书信息删除图书信息修改图书信息采用结构:struct tsxx{ //定义结构 long dlnum; //定义登录号 char bname[10]; //定义书名 char aname[10]; //定义作者名 char scnum[10]; //定义分类号 char plname[10]; //定义出版社名 char time[11]; //定义录入时间 float price; //定义价格struct tsxx * next;//定义指向下一个结构的首地址};链表结构:head各功能独立自定义的函数:1、插入图书信息(按登录号从大到小排序):struct tsxx * zengjia(struct tsxx * head)//传递链表的首地址,并返回链表的首地址 2.、浏览全部的图书信息:void Ptrint_Stu_Doc(struct tsxx *head) //传递链表的首地址3、查询图书信息(包括书名查询和作者名查询):void Check(struct tsxx * head)//传递链表的首地址4、删除图书信息:struct tsxx * Delete(struct tsxx * head)//传递链表的首地址,并返回链表的首地址 5.、修改图书信息:struct tsxx * revise(struct tsxx * head)//传递链表的首地址,并返回链表的首地址其他一些变量的定义:long size; //定义结构的大小 FILE * fp; //定义文件指针,指向文件 struct tsxx * head; //定义链表的首地址 struct tsxx * p; //定义结构指针 char choice; //定义选择变量struct tsxx Astruct tsxx Bstruct tsxx Cstruct tsxx DNULL四详细设计1、设计思路:首先,输入一些图书信息,申请一个结构类型的动态内存,把图书信息赋值到动态内存内,每一快动态内存存放一本图书的信息,并形成一条链表,比较登录号的大小,按登录号从大到小排列;然后,建立并打开一个文件,把链表中的数据写入文件中,然后关闭文件;最后,插入功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你想要插入的图书信息,比较登录号的大小,然后把新的图书信息按照登录号的大小顺序插入链表里面,新建一个文间,把新的链表写入文件中;浏览功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,然后链表头开始,把结构中的数据一个一个输出到界面上;查询功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表;选择你要查询的方式:1是按书名查询,2是按作者名查询。
c语言课程设计图书信息管理系统

c语言课程设计图书信息管理系统本课程设计的选题是基于C程序设计语言的图书信息管理系统。
该系统以菜单方式工作,包括图书信息录入、浏览、查询和排序、删除和修改等功能。
在基本要求达到后,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
为了实现这些功能,我们需要遵循结构化程序设计思想,将系统设计任务分解成许多子功能模块进行设计。
程序将综合if语句及switch语句的运用方法及嵌套应用方法,循环结构的三种语句while、do-while、for,以及函数的定义方法和调用方法等来进行编写。
系统的总体结构包括录入、浏览、查询和排序、删除和修改等功能模块。
重要数据的数据结构设计采用结构体的形式,将所需的数据全放在一维数组中,方便文件录入和读取的操作。
具体的功能模块包括录入模块、浏览模块、删除模块、修改模块和查询模块。
录入模块用于录入图书信息并保存于文件中,浏览模块用于添加一个或多个图书信息,并将所添加图书信息保存,方便查找。
删除模块和修改模块分别用于对图书信息进行删除和修改处理。
查询模块则提供了按分类号、作者名、书名等多种查询方式,方便用户查找所需图书信息。
在基本功能实现的基础上,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
includeincludeincludestruct BOOK {char shuming[999]。
zuozheming[999]。
fenleihao[999]。
danwei[999]。
shijian[999]。
jiage[999];books[___];void select() {system("cls");void jm();void input();void output();void search();void xiugai();void shanchu();int n;printf("图书管理功能界面\n");menu:jm();scanf("%d"。
C语言课程设计-图书信息管理系统设计

图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(3)图书信息浏览功能(4)图书信息查询功能(5)图书信息的删除与修改功能二、【各功能模块】1、菜单模块《1》、主函数:建立menu( )void main(){menu();}void menu(){int a;do{printf(” ******赵毅******\n”);printf("\n”);printf(”******中国地质大学******\n”);printf("\n");printf(”\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n”);printf("\t\t********************************************\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\t6 --——-———--——--——图书信息追加\n”);printf(”\t\t\t0 ——--—---—--——---退出图书信息系统\n”);printf("\t\t********************************************\n”);printf(”\t\tplease choose:”);scanf("%d",&a);switch(a){case 1:input();break;case 2:list();break;case 3:search();break;case 4:del();break;case 5:revise();break;case 6:append();break;case 0:exit(0);default:printf(”\n序号不对\n”);}}while(a!=0);}【定义图书信息结构体】#include<stdio。
c课程设计图书信息管理系统

c课程设计 图书信息管理系统一、课程目标知识目标:1. 让学生理解图书信息管理系统的基本概念,掌握其主要功能模块和使用方法。
2. 使学生掌握数据库的基本操作,如数据查询、添加、修改和删除。
3. 帮助学生了解信息系统的设计原则,培养学生对信息系统的分析和设计能力。
技能目标:1. 培养学生运用所学知识构建简单的图书信息管理系统,具备实际操作能力。
2. 提高学生的问题解决能力,使其能够针对图书信息管理中的实际问题提出合理的解决方案。
3. 培养学生的团队协作能力,学会与他人共同分析、设计和完善图书信息管理系统。
情感态度价值观目标:1. 培养学生热爱信息技术,关注信息产业发展,树立正确的信息意识。
2. 培养学生的创新意识,敢于尝试新方法,勇于挑战自我,提高自我效能感。
3. 增强学生的社会责任感,使其认识到图书信息管理系统在现实生活中的重要作用,激发为社会发展贡献力量的意愿。
课程性质:本课程为实践性较强的学科,结合理论知识与实践操作,培养学生对图书信息管理系统的设计与实施能力。
学生特点:高中生已具备一定的信息技术基础,思维活跃,求知欲强,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的实际操作能力,培养其创新意识和团队协作精神。
通过本课程的学习,使学生能够将所学知识运用到实际生活中,为未来的学习和工作打下坚实基础。
教学过程中,关注学生的学习成果,及时调整教学策略,确保课程目标的实现。
二、教学内容1. 理论知识:- 图书信息管理系统的基本概念与功能。
- 数据库的基础知识,包括数据表的设计与关系。
- SQL语言的基本查询与操作命令。
- 信息系统的设计原则和方法。
2. 实践操作:- 使用数据库管理软件(如Access)创建和管理图书信息数据库。
- 设计简单的图书信息查询系统,实现数据的增、删、改、查功能。
- 通过案例学习,分析和评价图书信息管理系统的实际应用。
3. 技能培养:- 通过小组合作,模拟设计并实现一个图书信息管理系统。
c语言课程设计报告 图书管理系统

第一章§ 1.1 题目描述图书管理系统设计:【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。
试设计一图书管理系统,使之能提供以下功能:(1)新图书基本信息的输入;(2)图书基本信息的查询;(3)对撤销图书信息的删除;(4)办理借书手续;(5)办理还书手续;【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。
存在状态设为整型,可用不同数字代表借还状态。
借书和还书手续要注意修改结构体的成员变量存在状态的值。
§ 1.2 算法设计1.设计思想:在整个系统编写的过程中,涉及了较多 C 语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。
由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。
在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。
在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。
2.实现注释:这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。
本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。
查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。
可查询图书的在库状态,方便用户进行借书、还书操作。
在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。
系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。
在处理过程中各项可以作为一本图书的不同属性来进行处理。
3 •结构体系设计图1.1 :主函数结构;图1.2 :新书信息录入流程;图 1.3 :图书信息查询(管理员)流程;图1.4 :图书信息查询(学生)流程;图 1.5 :图书信息删除流程;图 1.6 :办理借书手续流程;图 1.7 :办理还书手续流程;S1.1囹1.4•管理负功能菜单<圈书信息删除出枪索结果/S1.5>学生功能菜单办理借书手续输出檢索结果一是借书办湮成功<1 ------------------- •辐入个人信息/■图1.6^l.T1.3 程序设计及代码分析1.程序设计:下面,我大致介绍一下我的系统的主要功能和注意事项:当运行此程序时,首先进入系统主界面,然后可以选择[1]. 管理员登陆(密码:123),[2]. 学生登陆,[0]. 退出系统;选择[1] 后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计报告图书信息管理系统设计55071-13陈杰指导老师:刘文中C 语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。
学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。
1、题目要求设计“图书信息管理系统”要求:图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。
使之提供以下功能:(1)系统以菜单方式工作。
(2)图书信息录入功能。
(图书信息用文件保存)。
(3)图书信息浏览功能。
(4)图书信息查询功能。
(5)图书信息的删除和修改。
2、分析:根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3、总体设计:根据题目要求,可以将系统分为六个模块:(1)管理员登录系统模块。
(2)菜单选择模块。
(3)图书信息录入功能模块。
(4)图书信息浏览功能。
(5)图书信息查询功能。
(6)图书信息的删除和修改。
第1页4、详细设计:头函数名:#include<>#include<>#include<>/*********图书信息结构体*********//***包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等***/struct bookinf{ int num; ******************************************************登录号char bname[20];*************************************** 书名char wname[10];*************************************** 作者名char clanum[14];*************************************** 分类号char pubcom[10];*************************************** 出版单位char pubtime[10];*************************************** 出版时间float price;********************************************* 价格};一管理员登录系统模块:(1)来到图书信息管理系统页面void index(){char input; 注释:运行时printf("\n\n\t\t\t*****************************\n"); 直接进入printf("\t\t\t 图书信息管理系统\n"); 这个页面printf("\t\t\t*****************************\n\n\n");printf(" ------------------------------------------------------------------------------\n");printf("\t<按任意键进入>\n\t");input=getchar();}(2)管理员登陆进入功能菜单页面第2页FILE *fp;struct manage pswd;if ((fp=fopen("","r"))==NULL){printf("\n\n\n\tCannot open file!\n\t");}else {do{printf("\n\n\t请输入管理员帐号:");scanf("%s",name);printf("\n\n\t请输入管理员密码:");scanf("%s",password);fp=fopen("","r");fread(&pswd,sizeof(struct manage),1,fp);fclose(fp);w=strcmp,name);k=strcmp,password);adm_servelist();}while (w!=0||k!=0);adm_servelist();}(3)来到功能菜单页面第3页void adm_servelist(){void book_add();void book_view();void change();void del();void book_search();void login();void pwchange();int in; 注释:菜单列出的服务种类char input; 从1,2,3,4,5,6do 所对应的功能进行选择{printf("\n\n\n\t--欢迎使用信息管理系统--");printf("\n\n\t1.图书信息录入\n");printf("\t2.图书信息浏览\n");printf("\t3.图书信息查询\n");printf("\t4.图书信息删除\n");printf("\t5.图书信息修改\n");printf("\t6.退出管理模式\n");printf("\n\t请选择服务种类:");scanf("%d",&in);if (in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6){printf("\n\t没有这项服务~\n");printf("\t按任意键重新选择");input=getchar();}}while (in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6);switch (in){case 1: book_add(); break; 注释:选择自己所需要 case 2: book_view(); break; 后摁下数字键则 case 3: book_search(); break; 则进入此功能页面 case 4: del(); break;case 5: change();break;case 6: login(); break;}}(3)图书信息录入功能模块void book_add()第4页void adm_servelist();void book_add();int i=0,j;FILE *fp;char input; 注释:输入的图书信息 struct bookinf books; 是通过文件进行 struct bookinf book_taxis[30]; 保存的printf("\n\n\n\t---请输入图书信息---\n\n");printf("\t登录号:");scanf("%d",&;printf("\n\t书名:");scanf("%s",;printf("\n\t作者名:");scanf("%s",;printf("\n\t分类号:");scanf("%s",;printf("\n\t出版单位:");scanf("%s",;printf("\n\t出版时间:");scanf("%s",;printf("\n\t价格:");scanf("%f",&;if ((fp=fopen("","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for (j=0;j<=i;j++)if ==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");input=getchar();adm_servelist();break;}}if ((fp=fopen("","r"))==NULL){第5页fp=fopen("","w");}else{fclose(fp);fp=fopen("","a");}fwrite(&books,sizeof(struct bookinf),1,fp);fclose(fp);printf("\n\n\n\t信息输入完毕~按任意键继续\n");input=getchar();adm_servelist();}(4)图书信息浏览功能模块void book_view(){void adm_servelist();void book_view();int inp,i=0,n=0;FILE *fp;char input;struct bookinf bookview[20];if ((fp=fopen("","r"))==NULL){printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t");input=getchar();adm_servelist();}else{do{fread(&bookview[i],sizeof(struct bookinf),1,fp);i=i+1;}while (!feof(fp));fclose(fp);do{printf("\n\t--------共有%d条记录--------",i-1);printf("\n\n\t登录号: %d\n",bookview[n].num);第6页printf("\n\t书名: %s\n",bookview[n].bname);printf("\n\t作者名: %s\n",bookview[n].wname);printf("\n\t分类号: %s\n",bookview[n].clanum);printf("\n\t出版单位: %s\n",bookview[n].pubcom); printf("\n\t出版时间: %s\n",bookview[n].pubtime); printf("\n\t价格: %f\n",bookview[n].price);printf("\n\n\t1.上一页\t2.下一页\t3.回目录\n");printf("\n\t请选择:");scanf("%d",&inp);switch (inp){case 1:{if (n==0){printf("\n\t已到达首页\n\t按任意键重新选择");input=getchar();}else n=n-1; break;}case 2:{if (n==i-2){printf("\n\t已到达最末页\n\t按任意键重新选择"); input=getchar();}else n=n+1; break;}case 3:{adm_servelist();break;}default:{printf("\n\t没有这项服务\n\t按任意键重新选择"); input=getchar();}}}while (inp!=3);第7页}}(5)图书信息修改与删除功能模块修改:void change(int x){int inp,i=0,j;void book_search();FILE *fp,*fp1;char input;struct bookinf books,book_taxis[20];do{printf("\n\n\n\t注意:您确定要修改该记录吗?\n"); printf("\n\t1.是\t2.否\n");printf("\n\t请输入:");scanf("%d",&inp);if (inp!=1&&inp!=2){printf("\n\t对不起~没有这项服务~\n");printf("\t按任意键重新选择\n\t");input=getchar();}}while (inp!=1&&inp!=2);if (inp==2)book_search();if (inp==1){printf("\n\n\n\t---请输入图书信息---\n\n");printf("\t登录号:");scanf("%d",&;printf("\n\t书名:");scanf("%s",;printf("\n\t作者名:");scanf("%s",;printf("\n\t分类号:");scanf("%s",;printf("\n\t出版单位:");scanf("%s",;printf("\n\t出版时间:");scanf("%s",;第8页printf("\n\t价格:");scanf("%f",&;if ((fp1=fopen("","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp1); i=i+1;}while(!feof(fp1));fclose(fp1);for (j=0;j<x;j++)if ==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");printf("0");input=getchar();book_search();break;}for (j=x+1;j<i-2;j++)if ==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("1");printf("\t按任意键返回管理菜单~");input=getchar();book_search();break;}}book_taxis[x]=books;fp=fopen("","w");for (j=0;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);printf("\n\n\t信息修改完成!按任意键返回");input=getchar();book_search();第9页}}S删除:void del(int y){char input;FILE *fp;int inp,i=0,j;struct bookinf book_taxis[20];void book_search();void adm_servelist();do{printf("\n\n\n\t注意:您确定要删除该记录吗?\n");printf("\n\t1.是\t2.否\n");printf("\n\t请输入:");scanf("%d",&inp);if (inp!=1&&inp!=2){printf("\n\t对不起~没有这项服务~\n");printf("\t按任意键重新选择\n\t");input=getchar();}}while (inp!=1&&inp!=2);if (inp==2)book_search();if (inp==1){if ((fp=fopen("","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp); i=i+1;}while(!feof(fp));fclose(fp);}if (i>2){fp=fopen("","w");第10页for (j=0;j<y;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp); fclose(fp);fp=fopen("","a");for (j=y+1;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);}else{remove("");}printf("\n\n\t记录已删除!\n\n\t按任意键返回\n\t");input=getchar();adm_servelist();}}(6)图书信息查询功能模块void book_search(){void adm_servelist();void id_search();void wr_search();void bn_search();char input;FILE *fp;int inp;if ((fp=fopen("","r"))==NULL){printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t");input=getchar();adm_servelist();}else{do{printf("\n\n\n\t1.按图书登录号查询\n");printf("\n\t2.按图书作者查询\n");第11页printf("\n\t3.按图书名查询\n");printf("\n\t4.回到主菜单\n");printf("\n\n\t请选择查询类别:");scanf("%d",&inp);if (inp!=1&&inp!=2&&inp!=3&&inp!=4){printf("\n\n\t没有这项服务~\n\t按任意键重新选择~");input=getchar();}}while (inp!=1&&inp!=2&&inp!=3&&inp!=4);fclose(fp);switch (inp){case 1: id_search(); break;case 2: wr_search(); break;case 3: bn_search(); break;case 4: adm_servelist(); break;}}}5运行与测试报告:第12页第13页三后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。