C语言课程设计论文-图书信息管理系统设计

  • 格式:doc
  • 大小:283.50 KB
  • 文档页数:20

中国地质大学C语言课程设计综合实习报告题目:图书信息管理系统姓名:班学号:院系:专业:指导教师:2008 年 7 月目录(1)作者简介 (3)(2)报告摘要 (3)(3)报告主体 (3)3.1 报告要求 (3)3.2 需求分析 (3)3.3 总体设计 (4)3.4 详细设计 (4)3.4.1 主函数 (4)3.4.2 各功能模块设计 (6)3.4.3 公共函数 (12)3.5 上机操作 (15)3.5.1 数据源 (15)3.5.2 编译、连接和运行 (15)3.5.3 结果 (15)(4)实习总结 (20)(1)作者简介:我叫王栋,是地球科学学院资源环境与城乡规划管理专业的二年级学生,有幸在大二上学期学习C程序设计这门课程.刚开始的时候对这门课没什么理解,觉得很难很复杂,而在后来慢慢深入的学习之后开始对其产生了兴趣。

看到自己亲手编写的程序能够发挥出作用,觉得能够运用自己写出来的东西做出成果很高兴。

同时也知道了做程序并不是想象之中的那么难的,只要我们能好好看懂课本上面的东西,并能在实践中加以练习就一定能够很好的掌握。

(2)报告摘要:本论文设计了程序:《C语言课程设计指导书》第12题——图书信息管理系统。

这个管理系统能对图书信息(包括登录号、书名、作者号、分类号、出版单位、出版时间、价格等)进行有效地信息录入、浏览、查询、插入、删除等操作,会给用户带来很大的便利,达到既节省时间又节省精力的目的。

(3)报告主体:3.1 题目要求图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(图书信息用文件保存)(3)图书信息浏览功能(4)图书信息查询功能(5)图书信息删除与修改功能(可选项)[提示]建立图书信息结构体,结构体成员包括登录号、书名、作者名、分类号、出版单位、出版时间、价格。

3.2 需求分析根据题目要求,要求对图书信息进行输入、输出等操作;在程序中需要浏览图书的信息,应提供显示、查找、浏览、插入、修改等操作;另外还应提供键盘式选择菜单实现功能选择。

3.3总体设计根据需求分析,可以对这个系统的设计分为以下几个模块:图书信息管理系统数据输入数据浏览数据查找数据插入退出图1.3 系统功能模块图3.4详细设计3.4.1 主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

[流程图]:显示一系列功能选项N输入n ,判断n 是否是0-5Y根据n的值调用各功能模块函数图1.4.1 主函数流程图[程序]/*****************主函数**********************/main (){menu();}/*****************menu函数********************/void menu(){int n,w;do{puts("\t\t\t\t 1.enter");puts("\t\t\t\t 2.browse");puts("\t\t\t\t 3.search");puts("\t\t\t\t 4.delete or modify");puts("\t\t\t\t 5.add");puts("\t\t\t\t 6.exit");puts("\n\n\t\t**************************************************\n");printf("Choice your number(1-5): [ ]\b\b");scanf("%d",&n);if(n<1||n>6){w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:enter();break;case 2:browse();break;case 3:search();break;case 4:deal();break;case 5:add();break;case 6:exit(0);}}注:menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。

3.4.2各功能模块设计(1)输入模块在这里主要运用结构体的形式来输入保存图书的各种信息,包括图书的登录号、书名、作者名、分类号等等,因为图书的数目众多,因此采用结构体数组的形式。

用结构体来存放图书信息:/********************结构体*******************/#define N 100#include<stdio.h>#include<stdlib.h>struct book{char dlnum[10];char name[50];char writer[20];char flnum[10];char pressname[50];char presstime[20];char price[10];} books[N]; books[N]中每个数组元素对应一本图书*/其中可以根据宏定义# define N随时对N的值进行调整,扩大信息的储存量。

[程序]:/********************输入模块*******************/void enter(){int i,n;void menu();void input(int k);void save(int k);printf("How many books(0-%d)?:",N-1);scanf("%d",&n);printf("\n Enter data now\n\n");for(i=0;i<n;i++){printf("\n Input %dth book record.\n",i+1);input(i);}if(i!=0)save(n);printf("Pass any key to back\n");getchar();menu();}(2)浏览模块[需求分析] 该模块的功能是显示所有图书记录信息。

[流程图]:显示图书记录(10个一屏)按任意键显示下一屏图1 浏览模块流程图[程序]:/****************浏览(全部)模块***************/void browse(){int k;void menu();int load();void printf_books(int n);k=load();printf_books(k);printf("Pass any key to back\n");getchar();menu();}(3)查找模块/***************按书名查找模块***************/[流程图]:图2 按书名查找模块流程图 按任意键返回主菜单 按书名查找模块用户作出选择,输入一整型数值返回主菜单 修改 1,2,还是3 继续查找struct book s;int n,i,k=0;int load();void printf_one(int i);n=load();printf("enter a book name: ");scanf("%s",&);for(i=0;i<n;i++)if(strcmp(,books[i].name)==0){printf_one(i);k=1;}if(k==0)printf("\nNot found the file!\n");}/***************按作者查找模块***************/[流程图]图3按图书名查找模块流程图[程序]:void search_by_writer(){struct book s;int n,i,k=0;int load();void printf_one(int i);n=load();printf("enter a writer's name: ");scanf("%s",&s.writer);按作者名称查找模用户作出选择,输入一整型数值返回主菜单 修改 1,2,还是3 继续查找if(strcmp(s.writer,books[i].writer)==0){printf_one(i);k=1;}if(k==0)printf("\nNot found the file!\n");}/***************按出版社查找模块***************/图4 按出版社查找模块流程图 void search_by_press(){struct book s;int n,i,k=0;int load();void printf_one(int i);n=load();printf("enter a press: ");scanf("%s",&s.pressname);for(i=0;i<n;i++)if(strcmp(s.pressname,books[i].pressname)==0){printf_one(i);k=1;}if(k==0)printf("\nNot found the file!\n");}/***************按登录号查找模块***************/按出版社查找模块用户作出选择,输入一整型数值返回主菜单修改 1,2,还是3 继续查找 按登录号查找模块图5 按登录号查找模块流程图void search_by_dlnum(){struct book s;int n,i,k=0;int load();void printf_one(int i);n=load();printf("enter a dlnum: ");scanf("%s",&s.dlnum);for(i=0;i<n;i++)if(strcmp(s.dlnum,books[i].dlnum)==0){printf_one(i);k=1;}if(k==0)printf("\nNot found the file!\n");} (4)插入模块[需求分析] 该模块的功能是插入图书纪录信息并且不能覆盖原有图书信息。