c语言课程设计图书信息管理系统
- 格式:doc
- 大小:57.00 KB
- 文档页数:31
C语言课程设计报告图书信息管理系统设计C 语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。
学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。
1、题目要求设计“图书信息管理系统”要求:图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。
使之提供以下功能:(1)系统以菜单方式工作。
(2)图书信息录入功能。
(图书信息用文件保存)。
(3)图书信息浏览功能。
(4)图书信息查询功能。
(5)图书信息的删除和修改。
2、分析:根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3、总体设计:根据题目要求,可以将系统分为六个模块:(1)管理员登录系统模块。
(2)菜单选择模块。
(3)图书信息录入功能模块。
(4)图书信息浏览功能。
(5)图书信息查询功能。
(6)图书信息的删除和修改。
第1页4、详细设计:头函数名:#include<stdio.h>#include<stdlib.h>#include<string.h>/*********图书信息结构体*********//***包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等***/ 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("password.txt","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("password.txt","r");fread(&pswd,sizeof(struct manage),1,fp);fclose(fp);w=strcmp(pswd.manage_name,name);k=strcmp(pswd.password,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,6 do 所对应的功能进行选择{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",&books.num);printf("\n\t书名:");scanf("%s",books.bname);printf("\n\t作者名:");scanf("%s",books.wname);printf("\n\t分类号:");scanf("%s",books.clanum);printf("\n\t出版单位:");scanf("%s",books.pubcom);printf("\n\t出版时间:");scanf("%s",books.pubtime);printf("\n\t价格:");scanf("%f",&books.price);if ((fp=fopen("book.txt","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 (books.num==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");input=getchar();adm_servelist();break;}}if ((fp=fopen("book.txt","r"))==NULL)第5页fp=fopen("book.txt","w");}else{fclose(fp);fp=fopen("book.txt","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("book.txt","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",&books.num);printf("\n\t书名:");scanf("%s",books.bname);printf("\n\t作者名:");scanf("%s",books.wname);printf("\n\t分类号:");scanf("%s",books.clanum);printf("\n\t出版单位:");scanf("%s",books.pubcom);printf("\n\t出版时间:");scanf("%s",books.pubtime);第8页printf("\n\t价格:");scanf("%f",&books.price);if ((fp1=fopen("book.txt","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 (books.num==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 (books.num==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("book.txt","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("book.txt","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("book.txt","w");第10页for (j=0;j<y;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);fp=fopen("book.txt","a");for (j=y+1;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);}else{remove("book.txt");}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("book.txt","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页三后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。
河南理工大学计算机科学与技术学院课程设计报告201 3 — 201 4 学年第 2 学期课程名称设计题目学生姓名学号专业班级指导教师年月日目录一、课程设计的目的与要求1.1设计目的 (3)1.2 设计要求 (3)二、总体设计2.1 程序组成框图 (3)2.2 程序流程图 (4)三、详细设计3.1 功能设计 (5)3.2 系统运行环境和数据库设计 (6)3.3 数据编码设计 (6)3.4 输入输出设计 (6)四、程序清单和执行结果4.1 菜单函数 (7)4.2 录入函数 (10)4.3 浏览函数 (11)4.4 查询函数 (13)4.5 修改函数 (17)4.6 删除函数 (21)五、调试与测试 (30)六、程序设计总结和结论 (33)一、课程设计的目的与要求1.1 设计目的设计图书信息管理系统设计1.2 设计要求1) 系统必须以菜单方式工作2) 图书信息录入功能3) 图书信息浏览功能4) 图书查询功能(必须完成至少两种查询方式)a) 按书名查找b) 按作者查询等(任意选择)5) 图书信息的修改功能6) 图书信息的删除功能二、总体设计(程序设计组成框图、流程图)2.1 程序的组成框图2.2 程序流程图三、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)3.1功能设计(要求每个函数必须把其流程图描述出来)3.1-1 菜单函数 void select()运行后显示主界面,通过输入来选择下一步操作。
例如:选择录3.1-2 登陆函数void dl()该函数功能为辨识管理权限,只有正确输入登录号才能进入主界面。
输入次数小于3输入次数大于33.1-3 录入函数 void input()进入该函数,开始根据提示录入图书信息,每次录入完毕,询问选择继续录入或者返回。
Y3.1-4 浏览函数 void output()进入该函数,按照输入顺序依次显示信息,每浏览完一本,询问选择继续或者返回。
东莞理工学院《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语言设计简单的图书馆管理系统。
具体分为三个维度:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.技能目标:学生能够运用C语言进行程序设计,具备编写、调试和运行C语言程序的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,以及图书馆管理系统的项目实践。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史、特点和基本语法。
2.第二章:数据类型和运算符,学习基本数据类型、字符串、运算符及其优先级。
3.第三章:控制结构,学习条件语句、循环语句和跳转语句。
4.第四章:函数,学习函数的定义、声明和调用,以及常用标准库函数。
5.第五章:数组和字符串,学习一维数组、多维数组、字符串的基本操作。
6.第六章:指针,学习指针的概念、运算和应用。
7.第七章:结构体和文件,学习结构体的定义和应用,以及文件的读写操作。
8.第八章:图书馆管理系统项目实践,运用所学知识设计并实现一个简单的图书馆管理系统。
三、教学方法本课程采用多种教学方法相结合的方式,包括:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.案例分析法:通过分析典型的图书馆管理场景,引导学生运用C语言进行程序设计。
3.实验法:让学生动手编写、调试和运行C语言程序,提高学生的实践能力。
4.小组讨论法:分组进行项目实践,培养学生的团队合作意识和问题解决能力。
四、教学资源1.教材:《C程序设计语言》(K&R)或《C语言 Primer》(第五版)。
2.参考书:《C语言编程思想》、《C语言深度探索》。
3.多媒体资料:课件、教学视频、在线教程。
图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(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。
课程设计说明书设计名称:程序设计语言课程设计题目:图书信息管理系统学生姓名:彭雪峰专业:计算机科学与技术班级: 17计算机科学与技术4学号: 20170310441指导教师:李娅、周燕、杨文茵、马莉、林晓东日期: 2019 年 1 月 10 日课程设计任务书计算机科学与技术专业 2017 年级 4 班彭雪峰一、设计题目图书信息管理系统二、主要内容1、学生成绩管理系统数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。
要求具有以下功能:(1)添加、删除任意个记录。
(2)修改任意个记录。
(3)显示、保存记录。
(4)排序功能:打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小),存盘并显示这两个文件的全部记录。
(5)查询功能:打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。
要求:(1)设计一个主函数和多个子函数,每个子函数完成一个相对独立的子功能。
(2)程序运行时,首先进行口令检查,再显示菜单。
并能根据菜单调用相应的函数功能。
口令程序段的功能要求:《1》提示用户输入一个口令。
《2》用户输入口令后,若口令对,则提示用户通过,可执行后续程序;否则不通过。
《3》可对用户的口令输入进行次数限制(如:重复输入3次都不对),则自动退出系统。
(3)显示数据时,一页显示不下,可分页显示。
2、教师信息管理系统设计教师信息包括教师号、姓名、性别、年龄、学历、职称、工资、住址、电话等(教师号不重复)。
试设计一教师信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)教师信息录入功能--输入(3)教师信息删除功能(4)教师信息浏览功能--输出(5)查询和排序功能:(至少一种查询方式) --算法按教师号查询按职称查询等要求:(1)设计一个主函数和多个子函数,每个子函数完成一个相对独立的子功能。
(2)程序运行时,首先进行口令检查,再显示菜单。
c课程设计 图书信息管理系统一、课程目标知识目标:1. 让学生理解图书信息管理系统的基本概念,掌握其主要功能模块和使用方法。
2. 使学生掌握数据库的基本操作,如数据查询、添加、修改和删除。
3. 帮助学生了解信息系统的设计原则,培养学生对信息系统的分析和设计能力。
技能目标:1. 培养学生运用所学知识构建简单的图书信息管理系统,具备实际操作能力。
2. 提高学生的问题解决能力,使其能够针对图书信息管理中的实际问题提出合理的解决方案。
3. 培养学生的团队协作能力,学会与他人共同分析、设计和完善图书信息管理系统。
情感态度价值观目标:1. 培养学生热爱信息技术,关注信息产业发展,树立正确的信息意识。
2. 培养学生的创新意识,敢于尝试新方法,勇于挑战自我,提高自我效能感。
3. 增强学生的社会责任感,使其认识到图书信息管理系统在现实生活中的重要作用,激发为社会发展贡献力量的意愿。
课程性质:本课程为实践性较强的学科,结合理论知识与实践操作,培养学生对图书信息管理系统的设计与实施能力。
学生特点:高中生已具备一定的信息技术基础,思维活跃,求知欲强,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的实际操作能力,培养其创新意识和团队协作精神。
通过本课程的学习,使学生能够将所学知识运用到实际生活中,为未来的学习和工作打下坚实基础。
教学过程中,关注学生的学习成果,及时调整教学策略,确保课程目标的实现。
二、教学内容1. 理论知识:- 图书信息管理系统的基本概念与功能。
- 数据库的基础知识,包括数据表的设计与关系。
- SQL语言的基本查询与操作命令。
- 信息系统的设计原则和方法。
2. 实践操作:- 使用数据库管理软件(如Access)创建和管理图书信息数据库。
- 设计简单的图书信息查询系统,实现数据的增、删、改、查功能。
- 通过案例学习,分析和评价图书信息管理系统的实际应用。
3. 技能培养:- 通过小组合作,模拟设计并实现一个图书信息管理系统。
课程设计报告课程名称C语言程序设计课题名称图书信息管理系统专业电子技术班级1101班学号201101040240姓名陈正军指导教师2012年6 月19 日湖南工程学院课程设计任务书课程名称C语言程序设计课题图书信息管理系统专业班级电子技术1101班学生姓名陈正军学号201101040240指导老师审批任务书下达日期2012 年6月19日任务完成日期2012 年7 月4 日一、设计内容与设计要求1.设计内容:图书信息管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现图书信息的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能, 调用界面和各个功能的操作界面应尽可能清晰美观。
2) 建立一个图书信息数据库,文件名为book.txt,并从该文件中读取数据;3) 图书信息管理系统应能提供以下功能:①系统以菜单方式工作②图书信息显示功能;能以表格形式显示图书库中所有信息,且应有表头。
③图书信息追加功能;追加一条(或多条)新记录,要求在追加过程中有相应的提示信息,完成追加后能重新排序和显示;④图书信息查询功能;a. 按书名查询;b. 按单价查询;c. 按出版单位查询;d. 按出版时间查询e. 按分类号查询;f. 按入库时间查询要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所有记录。
c语言课程设计图书信息管理系统中南民族大学管理学院课程名称: C程序设计语言选题名称: 图书信息管理系统年级: 2011 专业:信息管理与信息系统学号: 姓名: 指导教师:完成地点:管理学院综合实验室完成日期: 2012年12月20 12 学年至20 13 学年度第 1 学期新浪微博 @song-style是坏学长一、题目,问题,描述1、系统以菜单方式工作。
2、图书信息录入功能(图书信息用文件保存),,输入。
3、图书信息浏览功能,,输出,查询。
4、查询和排序功能:(至少一种查询方式),,算法。
按书名查找按作者查询等。
5、图书信息的删除与修改。
创新要求:在基本要求达到后,可进行创新设计,如实现会员资料的查询、会员注销,为借书人办理注册。
办理借书手续(非注册会员不能借书)。
办理还书手续等等。
信息描述:图书信息包括:登录号、书名、图书编号、单价、作者名、分类号、出版单位、出版时间、价格等。
借阅人信息包括:借书人姓名、性别、学号二、问题分析1、系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计。
2、程序将综合if语句及switch语句的运用方法及嵌套应用方法,循环结构的三种语句while、do-while.、for,以及函数的定义方法和调用方法等来进行编写。
三、系统设计1、程序总体结构图书信息管理系统录浏查修删入览询改除添浏按按按按按按按加览作书作书分作书书书者名者名类者名籍籍查查名号名信信询询息息12(重要数据的数据结构设计struct BOOK :把所要的数据charshuming[999],zuozheming[999],fenleihao[999],danwei[999],shijian[999],jia ge[999];全放在一维数组中,以结构体的形式表现出来。
这是文件录入和读取的关键,相当于做成一个文件,需要的时候将里面的数据读取或者修改。
(1).录入模块:录入图书信息并保存于文件中。
(2).浏览模块:添加一个或多个图书信息,并将所添加图书信息保存,方便查找。
(3).删除模块:对图书信息做删除处理。
(4).修改模块:void xiugai根据需要对图书信息进行修改。
(5).查询模块:对已建立的图书信息进行查询,并且可根据需要选择按书名、作者或按分类号查询。
(6).菜单 :帮助借阅者根据所需进行选择。
3(函数设计函数名:菜单函数 void select()函数功能:运行后显示主界面,通过输入来选择下一步操作。
参数说明:int n 用于判断使用者所要进入的界面的序号。
算法描述:根据使用者输入的数字进行判断~并调用相对应的函数。
函数名:登陆函数 void dl()函数功能:该函数功能为辨识管理权限,只有正确输入登录号才能进入主界面。
参数说明:int n ,k=0,其中n用于识别登录号正确与否~k用于做一个循环。
算法描述:用户输入登录号存在n里~判断n值是否等于11056026~是~则调用菜单函数。
否~则让用户重新输入~两次输错以后关闭程序。
函数名:录入函数 void input()函数功能:进入该函数,开始根据提示录入图书信息1参数说明: int i=0; 用于自加~以便更换储存输入的信息的位置。
Char a;接收用户输入的字符。
算法描述: printf提示信息~用户输入需要录入的数据~输入Y则调用lr()。
输入N则调用clect(),输入其他则调用shifou()。
函数名:浏览函数 void output()函数功能:进入该函数,按照输入顺序依次显示信息参数说明:int i=0; 用于自加,以更换数据的位置信息以输出。
char a, b用于接受用户输入的字符。
算法描述:输出第一本书籍的信息~i++。
输入Y~则输出第二本书籍的信息。
输入N ,则调用slect().函数名:查询函数 void search ()函数功能:进入函数,选择不同方式进行查询参数说明:int i ;cha j,m[100],a; i用于做循环以搜索图书~j用于判断用户需要的查询方式~m[100]用于存放用户输入的搜索数据。
算法描述:根据用户输入的字符进行判断~调用相应函数。
函数名:修改函数 void xiugai()函数功能:进入该函数,开始根据提示修改图书信息参数说明:int i 用于做循环的条件限制,以寻找要修改的图书。
char j 用于用于判断用户需要的修改方式并调用相应函数。
char m[100], 用于录入用户新存入的数据信息并保存。
char a; 根据用户输入的字符,判断其是否需要继续修改信息,并调用相应函数。
算法描述:输入j值~判断修改方式:A按书名~则调用xiugai1,B按作者名调用xiugai2, C返回~调用slect()。
然后用户输入需要修改的书本的信息~用循环寻找相同的数据~printf需要修改的图书信息~并且提示用户输入相应信息。
最后~输入Y~则goto mulu~N 则goto xiugai2。
函数名:删除函数 void shanchu()函数功能:进入该函数,开始根据提示删除图书信息参数说明:int i,p; 用于做循环。
2char j, 用于用于判断用户需要的删除方式并调用相应函数。
m[100] 用于给用户输入需要删除的书籍信息。
a, 用于存放用户输入的字符。
dd 用于存放用户输入的字符。
算法描述:输入i值~判断删除方式:A按书名~则调用shanchu1,B按作者名调用shanchu2, C返回~调用slect()。
然后用户输入需要删除的书本的信息~用循环寻找相同的数据~printf需要删除的图书信息~并且提示用户输入相应信息。
最后~输入Y~则从i的位置开始往后~所有book.的数据往前移动一位~然后输入Y~则xiugai~输入N则调用slect,,。
4(程序运行视图(见下页)3开始输入n的值判断n的值删修浏录查除改览入询模模模模模块块块块块输入i值输入i值输入i值判断n的值判断n的值按按按按判断n的值书作书作名者名者名名输入新信按按按删息作书分除者名类信添名号息加信息4四、难点及关键技术分析:程序设计的难点及解决方法说明难点:算法设计~只有设计出来了算法以后才能步步展开~才能有目的的编写程序。
所以必须要有一个好的算法。
解决办法:算法设计用流程图会很非常直观~可以清楚的显示各个框之间的逻辑关系。
流程图包括表示相应操作的框~带箭头的流程线~必要的文字说明。
关键技术:删除书籍时~结构体中的数据往前移动一位。
解决办法:使用strcpy()来把后面的数据与前一位数据进行调换。
还需要做一个循环。
并且要注意的是,因为数组是100位的,所以如果删除的书籍是最后两位的话,是没有必要使用strcpy()的,因为存有数据的内存的相对位置没有发生变化。
五、测试情况:系统运行、数据输入及输出结果截图六、源程序清单:#include<stdio.h>#include<string.h>#include<stdlib.h>struct BOOK{charshuming[999],zuozheming[999],fenleihao[999],danwei[999], shijian[999],jiage[999];5}books[999];void main(){void select();void dl();dl();printf("\n");select();}void select() {system("cls");void jm();void input();void output();void search();void xiugai();void shanchu();int n;printf(" 图书管理功能界面 \n"); menu:jm();scanf("%d",&n);getchar();if(n==1||n==2||n==3||n==4||n==5||n==6) {switch(n){6case 1: input();break;case 2: output();break;case 3: search();break;case 4: xiugai();break;case 5: shanchu();break;case 6: exit(0);break;}}else{printf("输入错误,请重新输入~\n");printf("输入你再次的选择:\n");printf("\n");printf("\n");printf("\n");goto menu;}}void dl(){int n;int k=0;zl:system("cls");printf("\n");printf("\n");printf("\n");printf(" ********欢迎光临图书管理系统********\n"); printf("\n");printf("\n");printf("请输入你的学号:");7scanf("%d",&n);if(n==11056026)select();else{if(k<2){printf("输入错误,请重新输入~\n"); printf("输入你再次的选择:");k++;goto zl;}else{printf("登录失败\n");exit(0);}}}void jm(){printf(" *\n");printf(" * **\n");printf(" ***** ***\n");printf(" *********** ****\n");printf(" *************** *****\n"); printf(" ******************** *\n"); printf(" ** 1.图书信息录入 ** *\n"); printf(" ** 2.图书信息浏览 ** *\n"); printf(" ** 3.图书查询 ** *\n");8printf(" ** 4.图书信息修改 ** *\n"); printf(" ** 5.图书信息删除 ** *\n"); printf(" ** 6.退出 ** *\n");printf(" ******************** *\n"); printf("请输入序号:\n");printf("\n");}void input(){system("cls");int i=0;char a;lr:printf("%s","图书书名:");scanf ("%s",books[i].shuming);printf("%s","作者名:");scanf ("%s",books[i].zuozheming); printf("%s","分类号:");scanf ("%s",books[i].fenleihao); printf("%s","出版单位:");scanf ("%s",books[i].danwei); printf("%s","出版时间:");scanf ("%s",books[i].shijian); printf("%s","价格:");scanf ("%s",books[i].jiage);i++;printf("\n");printf("是否继续,输入Y/N:"); shifou:scanf("%s",&a);9getchar();system("cls");if(a=='n'||a=='N'){select();}else if(a=='y'||a=='Y'){goto lr;}else{printf("输入错误,请重新输入");goto shifou;}system("cls");}void output(){system("cls");int i=0;char a,b;shuchu:printf("图书书名:%s\n",books[i].shuming); printf("作者名:%s\n",books[i].zuozheming); printf("分类号:%s\n",books[i].fenleihao); printf("出版单位:%s\n",books[i].danwei); printf("出版时间:%s\n",books[i].shijian); printf("价格:%s\n",books[i].jiage);i++;10printf("是否继续浏览下一本:Y/N? \n"); shifou:scanf("%s",&a);getchar();system("cls");if(a=='n'||a=='N'){select();}else if(a=='Y'||a=='y'){if(books[i+1].shuming!=0)goto shuchu;else{printf("查询完毕,输入Y返回界面 \n"); scanf("%s",&b);getchar();system("cls");if(b=='y'||b=='Y')select();}}else{printf("输入错误,请重新输入");goto shifou;11}system("cls");}void search(){system("cls");int i;char j,m[100],a; mulu:printf("请选择查询方式:\n"); printf("A、按书名查询\n"); printf("B、按作者名查询\n"); printf("C、按分类号查询\n"); printf("D、返回\n");printf("请选择:");scanf("%s",&j);getchar();system("cls");if('A'==j||'a'==j){chaxun1:printf("请输入图书书名:"); scanf("%s",&m);for(i=0;i<=999;i++){if(strcmp(books[i].shuming,m)==0){printf("书名:%s\n",books[i].shuming); printf("作者:%s\n",books[i].zuozheming); printf("分类号:%s\n",books[i].fenleihao); printf("出版单位:%s\n",books[i].danwei);12printf("出版时间:%s\n",books[i].shijian); printf("价格:%s\n",books[i].jiage);}}printf("是否继续,输入Y/N:");scanf("%s",&a);getchar();system("cls");if(a=='n'||a=='N'){goto mulu;}elsegoto chaxun1;}else if('B'==j||'b'==j){chaxun2:printf("请输入作者名:");scanf("%s",&m);for(i=0;i<=999;i++){if(strcmp(books[i].zuozheming,m)==0){printf("图书书名:%s\n",books[i].shuming); printf("作者名:%s\n",books[i].zuozheming); printf("分类号:%s\n",books[i].fenleihao); printf("出版单位:%s\n",books[i].danwei); printf("出版时间:%s\n",books[i].shijian);13printf("价格:%s\n",books[i].jiage);}}printf("是否继续,输入Y/N:");scanf("%s",&a);getchar();system("cls");if(a=='n'||a=='N'){goto mulu;}elsegoto chaxun2;}else if('C'==j||'c'==j){chaxun3:printf("请输入分类号:");scanf("%s",&m);for(i=0;i<=999;i++){if(strcmp(books[i].fenleihao,m)==0){printf("图书书名:%s\n",books[i].shuming); printf("作者名:%s\n",books[i].zuozheming); printf("分类号:%s\n",books[i].fenleihao); printf("出版单位:%s\n",books[i].danwei); printf("出版时间:%s\n",books[i].shijian); printf("价格:%s\n",books[i].jiage);14}}printf("是否继续,输入Y/N:");scanf("%s",&a);getchar();system("cls");if(a=='n'||a=='N'){goto mulu;}elsegoto chaxun3;}else if('D'==j||'d'==j){select();}else{printf("输入错误,请重新输入"); goto mulu;}system("cls");}void xiugai(){15system("cls");int i;char j,m[100],a;mulu:printf("请选择修改方式:\n");printf("A、按书名修改\n");printf("B、按作者名修改\n");printf("C、返回\n");printf("请选择:");scanf("%s",&j);getchar();if('A'==j||'a'==j){system("cls");xiugai1:printf("请输入要修改的图书书名:");scanf("%s",&m);for(i=0;i<=999;i++){if(strcmp(books[i].shuming,m)==0){printf("图书书名:%s\n",books[i].shuming); printf("作者名:%s\n",books[i].zuozheming); printf("分类号:%s\n",books[i].fenleihao);printf("出版单位:%s\n",books[i].danwei); printf("出版时间:%s\n",books[i].shijian); printf("价格:%s\n",books[i].jiage);printf("请修改:");printf("%s","图书书名:");scanf("%s",books[i].shuming);16printf("%s","作者名:");scanf("%s",books[i].zuozheming);printf("%s","分类号:");scanf("%s",books[i].fenleihao);printf("%s","出版单位:");scanf("%s",books[i].danwei);printf("%s","出版时间:");scanf("%s",books[i].shijian);printf("%s","价格:");scanf("%s",books[i].jiage);printf("是否继续,输入Y/N:");scanf("%s",&a);getchar();system("cls");if(a=='n'||a=='N'){goto mulu;}elsegoto xiugai1;}system("cls");}}else if('B'==j||'b'==j){xiugai2:printf("请输入要修改的作者名:");17scanf("%s",&m);for(i=0;i<=999;i++){if(strcmp(books[i].zuozheming,m)==0){printf("图书书名:%s\n",books[i].shuming); printf("作者名:%s\n",books[i].zuozheming); printf("分类号:%s\n",books[i].fenleihao); printf("出版单位:%s\n",books[i].danwei); printf("出版时间:%s\n",books[i].shijian); printf("价格:%s\n",books[i].jiage);printf("请修改:");printf("%s","图书书名:");scanf("%s",books[i].shuming); printf("%s","作者名:");scanf("%s",books[i].zuozheming); printf("%s","分类号:");scanf("%s",books[i].fenleihao); printf("%s","出版单位:");scanf("%s",books[i].danwei); printf("%s","出版时间:");scanf("%s",books[i].shijian); printf("%s","价格:");scanf("%s",books[i].jiage); printf("是否继续,输入Y/N:"); scanf("%s",&a);getchar();18system("cls");if(a=='n'||a=='N'){goto mulu;}elsegoto xiugai2;}system("cls");}}else if('c'==j||'C'==j){select();}else{printf("输入错误,请重新输入"); goto mulu;}}void shanchu(){system("cls");int i,p;char j,m[100],a,dd;19printf("请选择删除方式:\n"); printf("A、按书名删除\n"); printf("B、按作者名删除\n"); printf("C、返回\n");printf("请选择:");scanf("%c",&j);getchar();system("cls");if('A'==j||'a'==j){shanchu1:printf("请输入要删除的图书书名:"); scanf("%s",m);getchar();for(i=0;i<=999;i++){if(strcmp(books[i].shuming,m)==0) {printf("%s","作者名:");printf("%s\n",books[i].zuozheming); printf("%s","分类号:");printf("%s\n",books[i].fenleihao); printf("%s","出版单位:");printf("%\ns",books[i].danwei); printf("%s","出版时间:");printf("%s\n",books[i].shijian); printf("%s","价格:");printf("%s\n",books[i].jiage);20printf("确定删除,输入Y/N:");scanf("%c",&dd);getchar();if(dd=='y'||dd=='Y'){for(p=i;p<=997;p++){strcpy(books[p].shuming,books[p+1].shuming); strcpy(books[p].zuozheming,books[p+1].zuozheming); strcpy(books[p].fenleihao,books[p+1].fenleihao); strcpy(books[p].danwei,books[p+1].danwei);strcpy(books[p].shijian,books[p+1].shijian);strcpy(books[p].jiage,books[p+1].jiage);}}else{printf("是否继续,输入Y/N:");scanf("%c",&a);getchar();system("cls");if(a=='n'||a=='N')shanchu();elsegoto shanchu1;21}system("cls");}}}else if('B'==j||'b'==j){shanchu2:printf("请输入要删除的作者名:"); scanf("%s",m);getchar();for(i=0;i<=999;i++){if(strcmp(books[i].zuozheming,m)==0) {printf("%s","图书书名:");printf("%s\n",books[i].shuming); printf("%s","分类号:");printf("%s\n",books[i].fenleihao); printf("%s","出版单位:");printf("%s\n",books[i].danwei); printf("%s","出版时间:");printf("%s\n",books[i].shijian);printf("%s","价格:");printf("%s\n",books[i].jiage);printf("确定删除,输入Y/N:");scanf("%c",&dd);getchar();22if(dd=='y' || dd=='Y'){for(p=i;p<=997;p++){strcpy(books[p].shuming,books[p+1].shuming); strcpy(books[p].zuozheming,books[p+1].zuozheming); strcpy(books[p].fenleihao,books[p+1].fenleihao); strcpy(books[p].danwei,books[p+1].danwei);strcpy(books[p].shijian,books[p+1].shijian); strcpy(books[p].jiage,books[p+1].jiage);}}else{printf("是否继续,输入Y/N:");scanf("%c",&a);getchar();system("cls");if(a=='n'||a=='N'){shanchu();}else23goto shanchu2;}system("cls");shanchu();}}}else if('c'==j||'C'==j){select();}else{printf("输入错误,请重新输入Y/N"); shanchu();}}七、心得体会242(重要数据的数据结构设计:程序所用到的重要数据结构的说明及描述~如用到的结构是如何定义的~起什么作用等。