一、 目的要求
《C语言程序设计》是一门讲述C语言的基本知识和编程方法的课程。在讲述C语言数据类型的基础上对C语言的五类语句做了简单的介绍,另外还讨论了C语言的三种程序结构:顺序、选择和循环。对函数的使用、指针的概念、结构体的应用、文件的操作做了详细的介绍。同时结合高职的实际要求和学生的具体情况,在实际教学过程当中强调技能操作的具体指导,鉴于此,编写了C语言课程设计实训大纲。希望同学们能通过实训大纲对C语言有更全面的认识。
通过综合训练,要求学生掌握C语言的各种数据结构,熟练应用C语言的各种程序结构,熟悉函数的定义、函数的调用,灵活应用指针,能够解决一般的程序设计问题。图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:
1)系统以菜单方式工作;
2)图书信息录入功能(图书信息用文件保存)——输入;
3)图书信息浏览功能——输出;
4)查询和排序功能:(至少一种查询方式)——算法;
5)按书名查询;
6)按作者名查询;
7)图书信息的删除与修改(可选项)。
二、 设计思路
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。
1、系统需求分析
经过以上对本系统的调研及可行性分析后,下面将对系统在功能上以及性能上进行进一步的需求分析。
2、功能介绍
输入图书信息, 出现一个"图书信息管理系统的主界面",其中有6个数字代表的选项,可以按相关的数字进行操作。
每一条记录包括一本书的书名、图书号、作者、出版时间、出版社名、价格。
0)退出:
如果在图书管理系统的主界面,则退出的是系统,如果是在子菜单下则返回到主界面。
1)录入新图书:
可以完成一条信息的输入,也可以完成多条信息的输入。
2)浏览图书信息:
学生可以浏览图书的相关信息,包括一本书的书名、图书号、作者、出版时间、出版社名、价格。
3)自主查询图书信息:
可以按书名或按作者查找图书的相关信息并显示。
4)删除图书信息:
只能通过图书号删除一本书的相关信息。
5)修改图书信息:
只能通过图书号进行修改该图书的相关信息。
3、模块划分
图1 系统功能模块图
4、数据流图
图2 系统数据流程图
三、 设计步骤
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char number[10];//书号
char name[20];//书名
char author[20];//作者
char publish[50];//出版社
char time[20];//出版时间
float price;
}mbook;
typedef struct {
int count;//书的本数
mbook book[100];//最大可有100本书
}mlibrary;
mlibrary library;
void save()//保存图书信息。
{
FILE *fp;
if((fp=fopen("library.doc","w"))==NULL)
{
printf("\n不能保存图书信息\n");
return;
}
fwrite(&library.count,sizeof(int),1,fp);
fwrite(library.book,sizeof(library.book[0]),library.count,fp);
}
void putin() /*定义录入函数*/
{
int y=1;
system("cls");
while(y)
{
printf("\t请输入您的书籍的书号:");
scanf("%s",library.book[library.count].number);
printf("\t请输入书名:");
scanf("%s",library.book[library.count].name);
printf("\t请输入作者名:");
scanf("%s",library.book[library.count].author);
printf("\t请输入出版社:");
scanf("%s",library.book[library.count].publish);
printf("\t请输入出版时间:");
scanf("%s",library.book[library.count].time);
printf("\t请输入该书的价格:");
fflush(stdin);
scanf("%f",&library.book[library.count].price);
library.count++;
printf("录入成功,恭喜您!");
printf("\n是否继续录入(1.继续;0,退出录入):");
fflush(stdin);
scanf("%d",&y);
if (y!=1)
{
y=0;
break;
}
}
save();
}
void lookup()
{
system("cls");
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for (int i=0;i<library.count;i++)
{
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
printf("\n 查询结果如上按0键返回主菜单: ");
fflush(stdin);
getchar();
}
void search_by_name() /*定义按书名查询*/
{
char s2[20];
int flag=1;
printf("\n请输入要查询的书名: ");
fflush(stdin);
scanf("%s",s2);
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(int i=0;i<library.count;i++ )
if(strcmp(s2,library.book[i].name)==0)
{
flag=0;
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
if (flag)
{
printf("查询错误!按0键返回主菜单: ");
}
fflush(stdin);
getchar();
}
void search_by_author() /*定义按作者名查询*/
{
char s3[20];
int flag=1;
printf("请输入要查询的书的作者: ");
fflush(stdin);
scanf("%s",s3);
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(int i=0;i<library.count;i++ )
if(strcmp(s3,library.book[i].author)==0)
{
flag=0;
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
if (flag)
{
printf("查询出错!按0键返回主菜单: ");
}
fflush(stdin);
getchar();
}
void search() /*定义查询函数*/
{
int a;
system("cls"); /*进行清屏*/
printf("\t\t******************************\n");
printf("开始查询\n");
printf("\t\t\t1---------------按书名查询\n");
printf("\t\t\t2---------------按作者名查询\n");
printf("\t\t\t0---------------退出\n");
printf("\t\t******************************\n") ;
printf("\t\t请选择你想要的查询方式:");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case 1:
search_by_name();
break;
case 2:
search_by_author();
break;
case 0:
return;
}
}
void del() /*定义删除函数*/
{
char number[10];
system("cls"); /*清屏*/
printf("\n 请输入想要删除的书名:");
fflush(stdin);
scanf("%s",number);
int i;
for (i=0;i<library.count;i++)
{
if(strcmp(number,library.book[i].number)==0)break;
}
if (i!=library.count)
{
for(;i<library.count-1;i++)
{
strcpy(library.book[i].name,library.book[i+1].name);
strcpy(library.book[i].number,library.book[i+1].number);
strcpy(library.book[i].publish,library.book[i+1].publish);
strcpy(library.book[i].author,library.book[i+1].author);
strcpy(library.book[i].time,library.book[i+1].time);
library.book[i].price=library.book[i+1].price;
}
library.count--;
}
else
printf("\n cannot found!\n");
printf("删除成功按0键返回主菜单");
save();
fflush(stdin);
getchar();
}
void update()//修改图书信息
{
char number[10];
system("cls"); /*清屏*/
printf("\n 请输入你要更改的图书名:");
fflush(stdin);
scanf("%s",number);
int i;
for (i=0;i<library.count;i++)
{
if(strcmp(number,library.book[i].number)==0)
{
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
break;
}
}
if (i!=library.count)
{
mbook book;
printf("\n\t\t请输入修改后此图书的信息\n");
printf("\t请输入图书号:");
scanf("%s",book.number);
printf("\t请输入图书名:");
scanf("%s",book.name);
printf("\t请输入作者名:");
scanf("%s",book.author);
printf("\t请输入出版社:");
scanf("%s",book.publish);
printf("\t请输入出版时间:");
scanf("%s",book.time);
printf("\t请输入该书的价格:");
fflush(stdin);
scanf("%f",&book.price);
strcpy(library.book[i].name,book.name);
strcpy(library.book[i].number,book.number);
strcpy(library.book[i].publish,book.publish);
strcpy(library.book[i].author,book.author);
strcpy(library.book[i].time,book.time);
library.book[i].price=book.price;
save();
printf("\n 修改成功请按0键返回主菜单:");
}
else
printf("\n 修改出错!请按0键返回主菜单:\n");
fflush(stdin);
getchar();
}
void main()
{
FILE *fp;
if((fp=fopen("library.doc","r"))==NULL)
{
printf("\n不能打开图书信息库\n");
fp=fopen("library.doc","w+");
printf("\n初始化图书信息库,初始化之后要重启程序\n");
library.count=0;
fwrite(&library.count,sizeof(int),1,fp);
fclose(fp);
}
fread(&library.count,sizeof(int),1,fp);
fread(library.book,sizeof(library.book[0]),library.count,fp);
fclose(fp);
int a;
do
{
system("cls");
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\t0 -----------------退出图书信息系统\n");
printf("\t\t*********************************************\n");
printf("\t\t请输入操作类型: ");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case 1:
putin();
break;
case 2:
lookup();
break;
case 3:
search();
break;
case 4:
del();
break;
case 5:
update();
break;
case 0:
printf("\n\n退出\n\n");
break;
default:
printf("\n序号不对\n");
}
}while(a!=0);
save();
}
四、 课程设计总结
通过为期一周的课程设计,对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
面向对象课程设计图书馆管理系统院系别信息工程系班级学号姓名指导教师时间课程设计任务书题目图书管理系统C语言课程设计系部信息工程系专…
经济管理学院本科课程设计论文数据库开发与应用课程设计学号姓名班级专业系别指导教师20xx年12月24日吉林目录第一章引言3第一节课…
管理信息系统实习报告专业班级学生姓名指导教师时间成绩评语王桃群20xx32320xx313一课程设计题目图书管理系统二系统需求1系…
课程设计实验报告课程名称数据库课程设计系院数学与计算机学院班级20xx级计算机科学与技术指导教师欧方平摘要随着人类社会的发展人类对…
重庆科技学院C语言课程设计课程设计报告目录1设计内容任务及基本要求211设计内容212设计任务213设计基本要求22总体设计思路4…
中国地质大学本科生课程论文封面课程名称c语言课程设计教师姓名樊媛媛本科生姓名本科生学本科生专业所在院系类别日期课程设计评语1注1无…
合肥学院计算机科学与技术系课程设计报告20xx20xx学年第二学期课学学专指业导班教生姓程C语言课程设计图书管理系统名号级师课程设…
课程设计报告书课程名称班级学号姓名指导老师通讯录管理系统一需求分析设计题目及要求建立通讯录信息信息至少包含编号姓名年龄电话通讯地址…
C语言课程设计报告图书信息管理系统设计指导老师:C语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同…
第三章图书管理系统的设计与实现3.1系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解…
数据结构课程实验实验报告实验四图书管理系统专业班级姓名学号完成日期目录一题目描述3二需求分析3三概要设计4四详细设计10五调试分析…