一、目的
通过设计一个图书管理系统的程序,全面运用课程的主要知识点,巩固对模块化程序设计、文件操作的理解,提高软件编程能力。
二、涉及的知识点
循环、分支语句、函数、数组、函数、结构体、指针、链表、文件读取操作等等
三、程序已经实现的功能点(用100-200字进行说明)
(1)程序具有以下功能,操作流程见下图:
登录界面:
输入用户名(admin)、密码(20190611),只有用户名、密码同时正确(信息存放在文件中)才能进入系统主菜单,否则需要重新输入用户名、密码。(同时输入3次错误将退出程序)。
操作功能:分为7个功能:输入1进行图书入库,输入2进行修改信息,输入3进行删除信息,输入4进行图书查询,输入5进行图书总览,输入6进行退出软件,输入7进行修改密码;

修改信息:输入对应的书名与编号,然后进行相应的修改。

删除信息:输入对应的编号,然后在确认删不删除。如果输入对应的编号不对,则可重新检索和返回主菜单,之后可返回主菜单;
图书查询:输入1进行书名查询,输入2进行作者查询,输入3进行登录号查询,输入4进行出版社查询,输入5进行模糊查询,查询信息与已有信息符合进入图书总览。输入0返回主菜单;
图书总览:可查看已录入的全部书籍信息;
退出软件:退出图书管理信息系统;
修改密码:先输入旧密码,旧密码正确再连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到帐户信息文件中,之后跳到登陆界面重新登陆。如果旧密码不对则可返回主菜单;
(2)定义如下结构体类型:
“用户名”结构体user:成员有:账号,密码;
“图书信息”结构体BOOK:成员有:number(登录号)、name(书名)、author(作者名)、type(类型)、publish(出版单位)、time(出版时间)、price(价格)、num(数量);
(3)帐户信息存放在name.txt文件,图书信息记录保存在mybook中;
(4)采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用。
(5)附加功能:
用户连续输错密码的次数超过3次,将退出程序;
四、程序运行截图及说明(要求对每幅图做简要说明,每图限50到100字)
登录界面:
输入用户名(admin)、密码(20190611),只有用户名、密码同时正确(信息存放在文件中)才能进入系统主菜单,否则需要重新输入用户名、密码。(同时输入3次错误将退出程序)。如图所示:

操作功能:分为7个功能:输入1进行图书入库,输入2进行修改信息,输入3进行删除信息,输入4进行图书查询,输入5进行图书总览,输入6进行退出软件,输入7进行修改密码,如下图所示:

图书入库:把图书的信息录入一个二进制的文件种。保存成功返回主菜单;按任意键返回主菜单;如下图所示:

修改信息:输入对应的书名与编号,然后图书入库功能进行相应的修改。如下图所示:

删除信息:输入对应的编号,然后在确认删不删除。如果输入对应的编号不对,则可重新检索和返回主菜单,之后可返回主菜单;如下图所示:

图书查询:输入1进行书名查询,输入2进行作者查询,输入3进行登录号查询,输入4进行出版社查询,输入5进行模糊查询,查询信息与已有信息符合进入图书总览。输入0返回主菜单;如下图所示:

图书总览:可查看已录入的全部书籍信息;如下图所示:

退出软件:退出图书管理信息系统。如下图所示:

修改密码:先输入旧密码,旧密码正确再连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到帐户信息文件中,之后跳到登陆界面重新登陆。如果旧密码不对则可返回主菜单;如下图所示:


五、设计心得(不能少于200字)
本次课程设计,除去各种闲杂时间,大约在设计上花费10个小时,编程上花费20小时,在输入和调试上花费35小时,其中大概有30多个小时是在思考问题。
这次在调试地过程中,也遇到了很多难题,比如编译不通过,在检查过程中也没有逻辑错误,百思不得其解后,我将出问题的那部分代码放到了新的源代码中来单独测试,通过调试后,从而发现问题并改正。编译通过,程序运行时发生警告,百思不得其解后,我也将出问题的那部分代码放到了新的源代码中来单独测试,通过调试后,发现问题大概出在fscanf语句和fprintf语句上,最后通过查询资料发现,原来在读写文件时,fscanf语句和fprintf语句,在输出和输入表列不用加&符号。这个问题也得到了解决。
另外还遇到了很多问题,都是采用类似调试——锁定目标——查阅资料——解决的步骤去完成的。
对于我的程序,我觉得功能还比较完善。但是还有很多可以添加的地方,比如添加一个借书榜单,逾期不还进行登记等等,代码方面还能可以简化一些,多设计一些更加通用的函数,比如建立链表函数,删除数据函数等等。有了这次设计的经验,我相信下次我能做到更好。
收获:
通过这次的课程设计我明白了完成一个好的程序,
首先要有明确的需求分析,只有这样才更好地完善程序;
第二,需要构建一个清晰合理的框架结构,来让各功能之间有条不紊地运行;
第三,针对每一个功能,我们要设计准确,简便,人性化的算法及操作逻辑,使各个功能能够给用户带来更好的体验;
第四,编写代码时要思路清晰,文本清楚,多记备注,画流程图,编写文档,这样能够使自己的思路更加清晰,从而更加有效地避免错误。
第五,调试过程是整个程序实现最重要的步骤之一,在调试中遇到问题无法解决,应当对着自己的代码,在脑子里执行,逐个排除直至锁定目标,另外编译器上的调试功能也是十分的使用,你可以逐条语句执行和某个值的变化来快速地找到问题的症结。
另外我对于C语言的知识也掌握得更加深入和牢固了,对于链表,指针,文件的知识也更加得心应手了。在此后我愿意更多地尝试实际地去完成一个程序来让自己的知识得到更好的巩固。
代码:
/*

课程设计项目名称:图书管理信息系统作者:青春时间:2019.6.10

*/

#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>
#include <time.h>
#define N sizeof(struct BOOK)

char c;//输入任意键

struct BOOK //图书信息

{

char number[10];   //登录号char name[10];     //书名char author[10];    //作者名char type[10];      //类型char publish[10];  //出版单位char time[8];        //出版时间float price;       //价格int num;         //数量int x;struct BOOK *next;   //指针域

};

typedef struct BOOK Book;

typedef Book *book;

void gaimi(); //修改密码

void login(); //登录界面

void HideCursor(); //隐藏光标
void toxy(int x, int y); //将光标移动到X,Y坐标处

void over(); //退出

void menu(); //菜单

void input_book(); //图书入库

void save_book(book p);//将图书信息存入文件

void find_book(); //图书查询

void print_book(); //图书总览

void del_book(); //删除图书

void amend_book(); //修改信息
book ss();

void find_name_book(); //按书名查询

void find_author_book(); //按作者查询

void find_number_book(); //按登录号查询

void find_publish_book(); //按出版社查询

void fuzzy_search(); //模糊查找

struct user
{//存放用户名的结构体
char pwd[20];
}us;

char username[15]=“admin”,pwd1[100]; //username[15]原始账号,pwd1修改密码时的比较

void HideCursor() //隐藏光标

{

CONSOLE_CURSOR_INFO cursor_info = {1, 0};

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

}

void toxy(int x, int y) //将光标移动到X,Y坐标处

{

COORD pos = { x , y };

HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(Out, pos);

}

void menu() //菜单

{
time_t T; //获取系统时间
struct tm * timenow;
time ( &T );
timenow = localtime ( &T );
do
{
system(“cls”); //清屏

    HideCursor();  //隐藏光标printf("\n\n");printf("\t 当前系统时间是: %s",asctime (timenow) );system("color 3f");//设置一个好看的颜色char t;toxy(50,5);//将光标移动到(50,5)坐标处printf(" 图书管理信息系统 ");toxy(48,8);printf("|     1.图书入库      |");toxy(48,10);printf("|     2.修改信息      |");toxy(48,12);printf("|     3.删除信息      |");toxy(48,14);printf("|     4.图书查询      |");toxy(48,16);printf("|     5.图书总览      |");toxy(48,18);printf("|     6.退出软件      |");toxy(48,20);printf("|     7.修改密码      |");t=getch();    //不回显函数switch(t){case '1':input_book();break;case '2':amend_book();break;case '3':del_book();break;case '4':find_book();break;case '5':print_book();break;case '6':over();break;case '7':gaimi();break;default :break;}}while(1);

}

book ss() //将文件中的内容读出到链表中,返回值为表头地址

{

FILE *fp;       //文件指针int n=0;book head=NULL;book p2,p,pr=NULL;fp=fopen("mybook","ab+");     //以只读的方式打开文件if(fp==NULL){printf("cannot open file\n");}while(!feof(fp))        //判断文件位置标志是否移动到文件末尾{n++;p=(book)malloc(N); //向内存申请一段空间fread(p,N,1,fp);     //将fp所指向的文件中的内容赋给pif(n==1){head=p;p2=p;}else             //创建链表{pr=p2;p2->next=p;p2=p;}}if(pr!=NULL)pr->next=NULL;elsehead=NULL;fclose(fp);    //关闭文件return head;   //返回头指针

}

void input_book() //图书录入

{

do
{system("cls");system("color 3f");char t;book p;p=(book)malloc(N);     //申请空间//输入图书信息toxy(48,8);printf("请输入图书登录号(小于10位数):");scanf("%s",p->number);getchar();toxy(48,10);printf("请输入书名(小于10位数):");scanf("%s",p->name);getchar();toxy(48,12);printf("请输入作者名(小于10位数):");scanf("%s",p->author);getchar();toxy(48,14);printf("请输入图书类别(小于10位数):");scanf("%s",p->type);getchar();toxy(48,16);printf("请输入图书出版单位(小于10位数):");scanf("%s",p->publish);getchar();toxy(48,18);printf("请输入图书出版时间(小于8位数):");scanf("%s",p->time);getchar();toxy(48,20);printf("请输入图书价格:");scanf("%f",&p->price);getchar();toxy(48,22);printf("请输入图书数量:");scanf("%d",&p->num);save_book(p);toxy(48,24);printf("正在保存....");Sleep(500);   //暂停0.5秒system("cls");toxy(46,8);printf("-------------------------");toxy(46,9);printf("|                       |");toxy(46,10);printf("| 保存成功!是否继续?  |");toxy(46,12);printf("| 1.是             2.否 |");toxy(46,13);printf("|                       |");toxy(46,14);printf("-------------------------");while(1)    //利用死循环可有效防止其他按键干扰{t=getch();if(t=='1'){break;}else if(t=='2'){menu();}}
}while(1);

}

void amend_book() //修改图书信息

{

do{system("cls");system("color 3f");book head,p;int i=11,j=0,x;char ch,t;FILE *fp;    //文件指针char _name[10];char number[10];   //登录号char name[10];     //书名char author[10];    //作者名char type[10];      //类型char publish[10];  //出版单位char time[8];        //出版时间float price;       //价格int num;         //数量head=ss();p=head;toxy(48,10);printf("请输入你要修改的图书的书名:");gets(_name);while(p!=NULL)    //初始化p->x为0{p->x=0;p=p->next;}p=head;    //让p重新指向表头toxy(20,5);printf("***********************************************图书信息******************************************************\n");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------\n");toxy(20,10);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量\n");toxy(20,15);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->name,_name)==0){toxy(20,i);j++;printf("\n%12d:%12s%12s%12s%14s   %14s   %14s         %10.2f%12d\n",j,p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);p->x=j;    //给符合查询标准的结点标号i++;}p=p->next;}if(j==0)                   //如果j=0,即没有进入前面的搜索循环,也就是没有找到相应的信息{toxy(50,i);printf("\n\t\t\t\t\t\t没有找到相应的信息!(按0返回,按1重新搜索)");while(1)               //死循环是为了防止除0和1的其他按键干扰{ch=getch();if(ch=='0'){menu();break;}else if(ch=='1'){break;}}if(ch=='1')     //如果输入的ch等于1,则结束本次循环continue;}while(1){toxy(45,i);printf("\n\t\t\t\t\t\t请输入您要修改的图书的编号:");scanf("%d",&x);getchar();if(x>j||x==0){toxy(45,++i);printf("输入错误,请重新输入!");Sleep(500);}else{break;}}p=head;     //让p重新指向表头while(p!=NULL&&p->x!=x)   //遍历链表查询符合条件的结点{p=p->next;}if(p)    //如果p不为空{system("cls");//输入要修改的信息toxy(48,8);printf("请输入图书登录号(小于10位数):");scanf("%s",number);getchar();strcpy(p->number,number);toxy(48,10);printf("请输入书名(小于10位数):");scanf("%s",name);getchar();strcpy(p->name,name);toxy(48,12);printf("请输入作者名(小于10位数):");scanf("%s",author);getchar();strcpy(p->author,author);toxy(48,14);printf("请输入图书类别(小于10位数):");scanf("%s",type);getchar();strcpy(p->type,type);toxy(48,16);printf("请输入图书出版单位(小于10位数):");scanf("%s",publish);getchar();strcpy(p->publish,publish);toxy(48,18);printf("请输入图书出版时间(小于8位数):");scanf("%s",time);getchar();strcpy(p->time,time);toxy(48,20);printf("请输入图书价格:");scanf("%f",&price);getchar();p->price=price;toxy(48,22);printf("请输入图书数量:");scanf("%d",&num);getchar();p->num=num;}system("color 3f");toxy(46,8);printf("-------------------------\n");toxy(46,9);printf("|                       |");toxy(46,10);printf("|     是否确认修改?    |\n");toxy(46,12);printf("| 1.是             2.否 |\n");toxy(46,13);printf("|                       |\n");toxy(46,14);printf("-------------------------\n");while(1)   //利用死循环防止其他按键干扰{t=getch();if(t=='1'){break;}else if(t=='2'){menu();}}system("cls");toxy(46,10);printf("正在修改,请稍后....");fp=fopen("mybook","wb");   //以只写的方式打开名为mybook的二进制文件,打开的同时清空文件中的内容if(fp==NULL){printf("cannot open file");}if(fwrite(head,N,1,fp)!=1)   //将head写入fp所指向的文件中{printf("write error!");}fclose(fp);   //关闭文件if(head!=NULL)   //如果head不为空{p=head->next;     //让p指向第二个结点fp=fopen("mybook","ab");   //以追加的方式打开文件if(fp==NULL){printf("cannot open file");}while(p!=NULL){if(fwrite(p,N,1,fp)!=1)//将p写入fp所指向的文件中{printf("write error!");}p=p->next;}fclose(fp);  //关闭文件}Sleep(500);   //暂停0.5秒system("cls");toxy(46,10);printf("修改成功!即将自动返回主菜单....");Sleep(500);break;}while(1);

}

void del_book() //删除信息

{

do{system("cls");system("color 3f");FILE *fp;book head,p,pre=NULL;int j=0,x,i=11;char name[10];char t,c,ch;head=ss();    //调用函数,返回表头地址toxy(48,10);printf("请输入你要删除的图书的书名:");scanf("%s",name);p=head;while(p!=NULL){p->x=0;p=p->next;}p=head;toxy(20,5);printf("***********************************************图书信息******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->name,name)==0){toxy(20,i);j++;printf("%d:%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",j,p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);p->x=j;i++;}p=p->next;}if(j==0)                   //如果j=0,即没有进入前面的搜索循环,也就是没有找到相应的信息{toxy(50,i);printf("没有找到相应的信息!(按0返回,按1重新搜索)");while(1)               //死循环是为了防止除0和1的其他按键干扰{ch=getch();if(ch=='0'){menu();break;}else if(ch=='1'){break;}}if(ch=='1')     //如果输入的ch等于1,则结束本次循环continue;}while(1){toxy(45,i);printf("请输入您要删除的图书的编号:");scanf("%d",&x);getchar();if(x>j||x==0){toxy(45,++i);printf("输入错误,请重新输入!");Sleep(500);}else{break;}}system("color 3f");toxy(46,8);printf("-------------------------");toxy(46,9);printf("|                       |");toxy(46,10);printf("|     是否确认删除?    |");toxy(46,12);printf("| 1.是             2.否 |");toxy(46,13);printf("|                       |");toxy(46,14);printf("-------------------------");while(1){t=getch();if(t=='1'){break;}else if(t=='2'){menu();}}p=head;while(p!=NULL&&p->x!=x){pre=p;p=p->next;}if(p!=NULL){if(pre==NULL){head=head->next;}else{pre->next=p->next;}}free(p);fp=fopen("mybook","wb");if(fp==NULL){printf("cannot open file");}if(fwrite(head,N,1,fp)!=1){printf("write error!");}fclose(fp);if(head!=NULL){p=head->next;fp=fopen("mybook","ab");if(fp==NULL){printf("cannot open file");}while(p!=NULL){if(fwrite(p,N,1,fp)!=1){printf("write error!");}p=p->next;}fclose(fp);}system("cls");toxy(46,10);printf("正在删除,请稍后....");Sleep(500);system("cls");toxy(46,8);printf("-------------------------");toxy(46,9);printf("|                       |");toxy(46,10);printf("|  删除成功,是否继续? |");toxy(46,12);printf("| 1.是             2.否 |");toxy(46,13);printf("|                       |");toxy(46,14);printf("-------------------------");while(1){c=getch();if(c=='1'){break;}else if(c=='2'){menu();}}}while(1);

}

void print_book() //图书总览

{

system("cls");system("color 3f");book head,p;int i=11;int sum=0;head=ss();toxy(20,5);printf("***********************************************图书总览******************************************************\n");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------\n");toxy(20,9);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量\n");toxy(20,11);printf("-------------------------------------------------------------------------------------------------------------\n");if(head==NULL){toxy(45,11);printf("书库暂时没有书哦~赶快去添加几本吧^_^(按任意键返回)");getch();menu();}p=head;while(p!=NULL){toxy(20,i);printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;sum+=p->num;//计算图书总量p=p->next;}toxy(48,7);printf("图书总量为:%d",sum);toxy(45,i);printf("按任意键返回");getch();//不回显函数

}

void find_book() //查询图书

{

do{system("cls");  //清屏system("color 3f");char t;toxy(50,5);printf(" 图书查询");toxy(48,8);printf("|     1.书名  查询      |");toxy(48,10);printf("|     2.作者  查询      |");toxy(48,12);printf("|     3.登录号查询      |");toxy(48,14);printf("|     4.出版社查询      |");toxy(48,16);printf("|     5.模糊  查询      |");toxy(50,18);printf("按0返回主菜单");t=getch();switch(t){case '0':menu();break;case '1':find_name_book();break;case '2':find_author_book();break;case '3':find_number_book();break;case '4':find_publish_book();break;case '5':fuzzy_search();break;default :break;}}while(1);

}

void find_name_book() //按名字查询

{

system("cls");

system(“color 3f”);

book head,p;int i=11;head=ss();char name[10];toxy(48,8);printf("请输入您要查询图书的书名:");gets(name);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->name,name)==0){toxy(20,i);printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();

}

void find_author_book() //按作者名查询

{

system("cls");system("color 3f");book head,p;int i=11;head=ss();char author[10];toxy(48,8);printf("请输入您要查询图书的作者名:");gets(author);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->author,author)==0){toxy(20,i);printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();

}

void find_number_book() //按图书编号查询

{

system("cls");

system(“color 3f”);

book head,p;int i=11;head=ss();char number[10];toxy(48,8);printf("请输入您要查询图书的登录号:");gets(number);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->number,number)==0){toxy(20,i);printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();

}

void find_publish_book() //按出版商查询

{

system("cls");system("color 3f");book head,p;int i=11;head=ss();char publish[10];toxy(48,8);printf("请输入您要查询图书的出版社:");gets(publish);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->publish,publish)==0){toxy(20,i);printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();

}

void fuzzy_search() //模糊查询

{

system("cls");

system(“color 3f”);

book head,p;int i=11;head=ss();char information[10];toxy(48,8);printf("请输入您要查询图书的信息:");gets(information);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&(strcmp(p->name,information)==0||strcmp(p->author,information)==0||strcmp(p->number,information)==0||strcmp(p->publish,information)==0)){toxy(20,i);printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();

}

void save_book(book p) //将p中内容写入文件

{

FILE *fp;    //文件指针fp=fopen("mybook","ab");   //以追加的方式打开名字为mybook的二进制文件if(fp==NULL){printf("cannot open file");}if(fwrite(p,N,1,fp)!=1)   //将p所指向的一段大小为N的内容存入fp所指向的文件中{printf("write error");}fclose(fp);    //关闭文件

}

void over() //退出软件

{
system(“color 3f”);

char t;toxy(48,11);printf("-----------------------");toxy(48,12);printf("|   您确定要退出吗?  |");toxy(48,14);printf("| 1.确定     2.取消   |");toxy(48,15);printf("-----------------------");while(1){t=getch();         //输入tswitch(t){case '1':system("cls");system("color 3f");toxy(48,10);printf("正在安全退出....");Sleep(1000);     //暂停1秒system("cls");system("color 3f");toxy(48,10);printf("已安全退出软件");toxy(48,12);printf("谢谢使用!");toxy(48,14);printf("by-by^_^");exit(0);  break; //终止程序case '2':menu(); break;   //调用函数,进入菜单default :break;}}

}

void login()//登录界面

{
int i=0,k=0,j;

FILE *fp;if((fp=fopen("name.txt","r"))==NULL)
{strcpy(us.pwd,"20190611");
}//如果文件打开错误初始密码fscanf(fp,"%s",us.pwd);char username1[15];   //定义与原始密码相比较的变量system("color 3f");      //系统函数,color显示颜色,3湖蓝色,f是亮白色printf("\n\n");printf("\t 系统默认用户名:admin,密码:20190611\n");printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("\t┃**********************************************************┃\n");printf("\t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");printf("\t┃***┃************************************************┃***┃\n");printf("\t┃***┃***                                         ****┃***┃\n");printf("\t┃***┃***         欢迎使用图书管理信息系统        ****┃***┃\n");printf("\t┃***┃***                                         ****┃***┃\n");printf("\t┃***┃***                                         ****┃***┃\n");printf("\t┃***┃***                 张锦涛                  ****┃***┃\n");printf("\t┃***┃***                                         ****┃***┃\n");printf("\t┃***┃***               2019年6月11日              ****┃***┃\n");printf("\t┃***┃***                                         ****┃***┃\n");printf("\t┃***┃************************************************┃***┃\n");printf("\t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n");printf("\t┃**********************************************************┃\n");printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");for(i=0;i<3;i++){printf("\n请输入用户名:");gets(username1);printf("\n请输入6位密码:");for(j=0;j<100;j++)
{pwd1[j]=getch();if(pwd1[j]=='\r')break;printf("*");
}pwd1[j]='\0';if((strcmp(username,username1)==0)&&(strcmp(us.pwd,pwd1)==0))
{printf("\n\n您已经成功登录");k=1;for(i=0;i<20;i++){printf(".");Sleep(100); }system("cls");

menu(); //跳转到主界面

break;
}

else
printf("\n\n用户名或密码无效,请重新输入:\n");

continue;
}
if(k==0)
printf("\n连续输入错误3次将退出程序\n");

Sleep(1000);         //程序暂停函数(单位毫秒),本次暂停1000毫秒
return;//连续三次错误跳转退出界面

}

void gaimi()//修改密码程序
{

int j;system("cls");FILE *fp;if((fp=fopen("name.txt","w"))==NULL){printf("文件打开错误!");exit(0); }printf("\n请输入您的原始密码:\n");fflush(stdin);        //清除缓冲for(j=0;j<100;j++){us.pwd[j]=getch();if(us.pwd[j]=='\r')break;printf("*");   }us.pwd[j]='\0';if((strcmp(us.pwd,pwd1)==0)){printf("\n请输入您要修改的密码\n");for(j=0;j<100;j++){us.pwd[j]=getch();if(us.pwd[j]=='\r')break;printf("*");    }us.pwd[j]='\0';fflush(stdin);       //清除缓冲printf("\n请再次确认你的密码\n");for(j=0;j<100;j++){pwd1[j]=getch();if(pwd1[j]=='\r')break;printf("*"); }pwd1[j]='\0';if((strcmp(us.pwd,pwd1)==0)){printf("\n\n密码修改成功,请重新登录。\n");fprintf(fp,"%s",us.pwd);Sleep(2000);system("cls");login();   }else {printf("\n\n两次密码不符合,本次服务到此结束!\n\n");printf("\n\n按任意键返回\n");c=getch();system("cls");menu();}
}else{printf("\n密码输入错误!\n\n");printf("\n\n按任意键返回\n");c=getch();system("cls");menu();}

}

int main() //主函数
{
login();
return 0;
}

c语言 图书管理系统相关推荐

  1. C语言图书管理系统[2023-01-06]

    C语言图书管理系统[2023-01-06] 模仿图书馆的借书还书操作,用C语言实现图书管理系统.系统必须先登录方可进入系统. 该系统分为读者和图书管理员2类用户,若是读者登录成功后可显示该读者的借阅信 ...

  2. c语言学生综合测评系统_c语言图书管理系统_c语言学生综合测评系统_c语言个人账本管理系统...

    c语言销售管理系统设计 c语言设计管理系统,c图书管理系统设计,学生管理系统c语言,职工管理系统c语言,c语言图书管理系统,c语言成绩管理系统,c语言管理系统,c语言银行管理系统,c语言工资管理系统, ...

  3. c语言图书馆管理程的运行截图,c语言图书管理系统

    广告 Apple iPad,AirPods Pro,Bose耳机,机械键盘,健身环等着您 对于seo工程师,更多使用永久重定向. 如果您想成为永久重定向,则只需将此代码添加到redirect()中. ...

  4. c语言课程设计北京电子工业出版社,c语言图书管理系统课程设计报告

    c语言图书管理系统课程设计报告 五.小节: 在这一个星期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性.将理论和实践结合在一起,用先进的计算机工具方便人们的生活.C语言程序的编写首先 ...

  5. c语言-图书管理系统(顺序表)

    c语言-图书管理系统--顺序表实现增删改查 采用外部控制台运行,若直接控制台输出,则清屏命令无效 每种图书信息包括ISBN.书名.价格 具有以下几种功能 0.初始化图书表,  1.录入图书信息 ,2. ...

  6. c语言课程设计图书管理系统报告,C语言图书管理系统课程设计报告[1]

    C语言图书管理系统课程设计报告[1] 第三章 图书管理系统的设计与实现3.1 系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅.还书的平台.根据系统 ...

  7. c语言图书管理系统用什么软件,编写c语言的软件 纯C语言编写图书管理系统.doc...

    编写c语言的软件 纯C语言编写图书管理系统 编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 导读:就爱阅读网友为您分享以下"纯C语言编写图书管理系统WORD文档bbszp& ...

  8. c语言图书管理系统解析,基于C语言的图书管理系统的设计与实现解析.doc

    毕业论文 题目:基于C语言的图书管理系统的设计与实现 英文题目:Design and Implementation of Books Management System Based on C Lang ...

  9. 课程设计图书管理系统c语言,图书管理系统c语言课程设计c语言课程设计作业获得95分全院第一......

    > 下载中心  >   > 图书管理系统 c语言课程设计 english version 图书管理系统 c语言课程设计 所属分类: 开发工具:c/c++ 文件大小:2720kb 下载 ...

  10. c语言图书管理系统(详细个人理解)

    图书管理系统 1.1 前言 ​ 这个是我们大一上c语言的课设大作业,以二进制文件操作写一个图书管理系统 要求如下: 1.实现新进图书的信息录入 ​2.实现图书基本信息的查询 ​3.实现对图书信息的删除 ...

最新文章

  1. 点击后,过段时间cell自动取消选中
  2. KVM虚拟化存储管理
  3. java实现续打功能_浅谈报表工具的打印方案
  4. 百度绿色底座亮相 AI原生云低碳前行
  5. centos安装mysql8.0
  6. 渴望订阅– RxJava常见问题解答
  7. 从零配置webpack(react+less+typescript+mobx)
  8. 还原 idea undo commit
  9. UTC时间如何转换成北京时间—C语言代码
  10. CorelDRAWX4的VBA插件开发(二十九)使用C++制作动态连接库DLL辅助VBA构键强大功能-(3)制作最简单的可供调用的DLL
  11. User-Agent的变迁——浏览器大战之前世今生
  12. 通俗易懂的数学建模示例(一)
  13. STM32CubeMx开发之路—13使用SPI读写W25Q64
  14. 2路10核物理服务器能否虚拟40vcpu,计算vCPU数量 依据公式
  15. zip与rar的区别
  16. NS3 Tutorial 中文版:第三章 快速上手
  17. 手把手教你如何玩转EasyExcel的导入和导出
  18. Linux的常用命令思维导图
  19. Android幸运大转盘
  20. 高级架构师_Redis_第3章_Redis持久化

热门文章

  1. VTD的文件结构和Project建立的思路
  2. cad2010多个文件并排显示_CAD2010中如何将多个文档并排显示在一个窗口里?
  3. IDEA中集成使用SVN
  4. 矩阵的迹tr运算及矩阵求导公式
  5. 服务器地图不显示图片,传奇小地图不显示怎么办 传奇服务端小地图制作教程...
  6. 淡雅简洁商业汇演商业计划书PPT模板
  7. 瑞昱rtl8197fs芯片怎么样_拆开外表看内在 篇二:设计精美,做工优秀却无自研芯片——荣耀路由器2拆解评测...
  8. mysql建用户注册登录表_登录注册数据库建立
  9. 鼎博电梯门禁数据分析
  10. 2019年注册测绘师备考历程