资源描述
C
程
序
专
周
报
告
2011/05/30-2011/06/03
辅导老师:王飞
图书信息管理系统程序设计报告
一、程序名称:图书信息管理系统。
二、设计内容:通过近一个学期的C语言学习,编写一个小程序,以实现对图书的管理。用各种语句、结构体等,实现图书的输入、输出、修改等多种功能。
三、设计目的:1、系统地对图书进行管理,便于图书管理人员管理。
四、设计流程:
开始运行
主函数
录
入
函
数
显
示
函
数
修
改
函
数
删
除
函
数
浏
览
函
数
排
序
函
数
主函数
退出函数
结束
五、设计要求: :1、系统以菜单方式工作。
2、进入系统需要用户名和密码。
3、有图书信息录入功能。
4、有图书信息浏览功能。
5、有图书信息查询功能。
6、有图书借阅次数排序功能。
7、有图书信息的删除和修改功能。
8、系统推出。
六、软件使用:编写该程序使用的是Microsoft Visual C++。
七、心得体会:通过此次编写图书信息管理系统程序,我学到了很多。也感触到了很多。“书上得来终觉浅,要知此事需躬行。”是呀!在没亲身动手去编写程序时,我总觉得我会了。书本上的我都懂了。可我真的懂了吗?答案是否定的。在编写过程中,会出现很多的问题,而这些问题你是在书本上是接触不到的。只有发现问题,解决问题,你才会有提高。有谁敢说我对C语言没有一点问题。没有,就连老师也不敢说这样的大话。我是打算报考计算机二级的,通过此次编程我看清了我在这方面的水平,那就是,我现在的水平是远远达不到二级的。但这只是暂时的,下一阶段我会更加努力学习,我相信我会学好这们语言的。
附录1:参考文献
1、C程序教程教程。(主编:孙淑霞)
2、C实验与考级题训精解。(主编:戴彦群 于春)
3、C程序设计。(主编:谭浩强)
附录2:程序清单
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct books
{ char name[10];
char no[10];
char writer[10];
char sno[20];
char price[20];
}con[50];
int k=0;
void enter();
void ent();
void display();
void update();
void del();
void save();
void read();
int menu();
/********************************主函数***************************************/
void main()
{
int c;
while(1)
{
printf(" \n\n\n\n");
printf(" 欢迎进入图书信息管理系统 \n\n\n");
printf(" 1 进入系统 \n\n");
printf(" 0 退出系统 \n\n");
printf(" \n\n\n\n");
printf(" 10611 崔向伟(37)\n\n");
printf(" 2011-6-1");
printf(" 请输入您的选择: \n");
scanf("%d",&c);
switch(c)
{
case 1:
ent();
break;
case 0:
printf(" 谢谢使用!\n");
exit(0);
}
}
}
/******************* 登陆函数,进行密码验证 *******************/
void ent()
{
char key[10],password[10]="123";
int k=1;
printf(" 请您输入密码: \n");
scanf("%s",key);
while(k<=3)
{
if(strcmp(password,key)==0)
{
while(1)
{
int a;
a=menu();
switch(a)
{
case 1:printf("\n");enter();break;
case 2:printf("\n");display();break;
case 3:printf("\n");update();break;
case 4:printf("\n");del();break;
case 5:printf("\n");save();break;
case 6:printf("\n");exit(0);break;
default:printf("\nThe choice is between 1 to 6.\n");
}
}
}
else
{
k++;
printf(" 密码错误!请再次输入:");
scanf("%s",key);
if(k>2)
{
if(strcmp(password,key)==0)
continue;
else
{
printf(" 输入密码错误三次,系统将自动退出!\n");
exit(0);
}
}
}
}
}
int menu()
{
int a ;
printf("\n\n ******************************************************************\n");
printf(" *"); printf("\t\t欢迎进入图书管理系统"); printf("\t\t*");
printf("\n ******************************************************************\n");
printf(" *"); printf("\t 1.输 入 图 书 信 息"); printf("\t\t\t\t\t*\n");
printf(" *"); printf("\t 2.显 示 图 书 信 息"); printf("\t\t\t\t*\n");
printf(" *"); printf("\t 3.查 询 图 书 信 息"); printf("\t\t\t\t*\n");
printf(" *"); printf("\t 4.删 除 图 书 信 息"); printf("\t\t\t\t\t*\n");
printf(" *"); printf("\t 5.储 存 图 书 信 息"); printf("\t\t\t\t*\n");
printf(" *"); printf("\t 6.退 出 "); printf("\t\t\t\t\t*\n");
printf(" ******************************************************************\n");
printf(" 输入你的选择 : ");
scanf("%d",&a);
return a;
}
/******************************输入图书信息***********************************/
void enter()
{
char ch[20];
printf("\n输入图书信息:\n");
do
{ printf("\n书名:\n ");
scanf("%s",con[k].name);
printf("书号: ");
scanf("%s",con[k].no);
printf("\n作者: ");
scanf("%s",con[k].writer);
printf("\n分类号: ");
scanf("%s",con[k].sno);
printf("\n价格: ");
scanf("%s",con[k].price);
k++;
printf("\n是 否 继 续 输 入 图 书 信 息(y/n): ");
scanf("%s",ch);
}while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0);
}
/****************************显示图书信息*************************************/
void display()
{ int i;
read();
printf(" 图 书 信 息 如 下:\n");
for(i=0;i<k;i++)
{ printf("%10s %20s %10s %10s %10s ",con[i].name,con[i].no,con[i].writer,con[i].sno,con[i].price);
printf("\n"); }
}
/*****************************查询与修改图书信息******************************/
void update()
{
int i;
char a[20],ch[10];
printf("\n请 输 入 要 查 询 的 书 名:");
scanf("%s",a);
for(i=0;i<k;i++)
if(strcmp(con[i].name,a)==0) printf("%10s %20s %10s %10s %10s ",con[i].name,con[i].no,con[i].writer,con[i].sno,con[i].price);
printf("\n确 定 要 改 变 书 名? y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
{ printf("\n输 入 要 改 变 的 书 名:");
scanf("%s",a);
for(i=0;i<k;i++)
{
if(strcmp(con[i].name,a)==0)
{ printf("\n确 定 要 改 变 书 名(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\n书名:"); scanf("%s",con[i].name);}
printf("\n确 定 要 改 的 书 号(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\n书号"); scanf("%s",con[i].no);}
printf("\n确 定 要 改 的 作 者(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\n作者"); scanf("%s",con[i].writer);}
printf("\n确 定 要 改 的 分 类 号(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\n分类号"); scanf("%s",con[i].sno);}
printf("\n确 定 要 改 的 价 格(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\n价格"); scanf("%s",con[i].price);}
}
}
}
display();
}
/**********************************删除图书信息*******************************/
void del()
{
int i,j;
char c[20];
printf("\n输 入 要 删 除 的 书 名 :\n");
printf("书名:");
scanf("%s",&c);
for(i=0;i<k;i++)
if(strcmp(c,con[i].name)==0) break;
for(j=i;j<=2;j++)
con[j]=con[j+1];
printf("\t\t\t已 经 删 除 %s\n",c);
k--;
display();
}
/******************************文件写入数据**********************************/
void save()
{ FILE *fp; int i;
if((fp=fopen("123456.txt","wb"))==NULL)
{
printf("操 作 文 件 失 败.\n");
exit(0);
}
for(i=0;i<k;i++)
if(fwrite(&con[i],sizeof(struct books),1,fp)!=1)
{
printf("写入文件失败");
fclose(fp);
exit(0);
}
printf("写入成功");
fclose(fp);
}
/***********************************文件读取数据******************************/
void read()
{
FILE *fp;
int i;
if((fp=fopen("123456.txt","rb"))==NULL)
{
printf("不能打开文件");
exit(0);
}
for(i=0;i<k;i++)
if(fread(&con[i],sizeof(struct books),1,fp)==1);
else
{
printf("读取文件出错");
fclose(fp);
exit(0);
}
fclose(fp);
return;
}
展开阅读全文