C语言图书信息管理系统
C语言课程设计-图书信息管理系统
No.10
沈阳大学
课程设计说明书
No.11
3 设计结果与分析
在 visual C++ 6.0 环境中输入源程序,在没有提示错误的情况下编译,生 成.exe 可执行文件。
① 双击文件,会看到如图 6 所示界面。该图是一个菜单函数,通过 scanf( ) 函数输入数字来选择各个功能的选择和转换。根据用户的选择,分别调用其他 自定义函数。
图书 管理
查找 注册 借阅 还书
注销
2.2 程序设计
图 1 图书信息管理功能图
根据所构想的的功能及模块设计出与之相对应的算法并建立函数来实现功能。
2.2.1 数据结构体的定义
将图书信息作为一个结构体。
struct BOOK { int id,usr[10],total,store,days[10]; char name[31],author[21]; }books[100];
n=0
n<100
N
输入错误或
n++
图书信息=i
无效图书号
Y 作者,书名, 库存
结束 图 2 查找图书流程图
2.2.4 注册新书函数
该函数通过判断输入的书的 id 数值是否为零,如果为零则用 break[4]来跳出,如 果不为零且小于 100,则用 scanf 函数输入该书的作者,书名,库存等信息,用 printf 函数把这些信息显示在屏幕上。 如图 3 所示是注册新书的流程图
沈阳大学
课程设计说明书
No.4
开始 n=0
n<100
n++
图书=0
N
break
Y 输出图书信息
结束
图 3 注册新书流程图
c语言程序设计:图书信息管理系统毕业设计
#include <string.h>#define M 2#define N 2#define PRINT1 printf("-------------------\n")#define PRINT2 printf("图书号--图书名称--图书种类--图书总量--图书现库存量--出版日期--作者--出版商\n")#define PRINT3 printf("%12d%8s%8s%8d%8d%8d-%2d-%2d%8s%12s", books[i].num,books[i].name,books[i].kind,books[i].add,books[i].current_add,books[i].pub_time.y ear,books[i].pub_time.month,books[i].pub_time.day,books[i].writer,books[i].factory);int sum; /*用来记录图书数目*//*日期结构体类型*/struct date{int year;int month;int day;};/*图书结构体类型*/struct books_type{int num;char name[10];char kind[10];int add; /*图书总库存量*/int current_add; /*图书现库存量*/struct date pub_time;char writer[10];char factory[10];}books[M]; /*存放M种图书记录的结构体数组*//*保存信息*/save_message(int sum){FILE *fp;int i;if((fp=fopen("tushuguanli.txt","wb"))==NULL){printf("读文件错误!\n");return;}for(i=0;i<sum;i++)if(fwrite(&books[i],sizeof(struct books_type),1,fp)!=1) printf("写文件错误!\n");fclose(fp);}/*输入模块*/input_message(){int i=0,s=M;clrscr();printf("\n\n 录入图书信息(最多%d种)\n",s); printf(" ----------------------------\n");do{printf("\n 第种%d图书",i+1);printf("\n 图书号:");scanf("%d",&books[i].num);if(books[i].num==0) break ;printf("\n 图书名称:") ;scanf("%s",books[i].name);printf("\n 图书种类:");scanf("%s",books[i].kind);printf("\n 图书总量:");scanf("%d",&books[i].add);printf("\n 图书现库存量:");scanf("%d",&books[i].current_add) ;printf("\n 出版日期:");scanf("%d-%d-%d",&books[i].pub_time.year,&books[i].pub_time.month,&books[i].pub_time.day );printf("\n 作者:");scanf("%s",books[i].writer);printf("\n 出版商:");scanf("%s",books[i].factory);i++;}while(i<M);printf("\n --%d种图书信息输入完毕!--\n",i);sum=i;printf("\n 按任意键返回主菜单!");bioskey(0);}/*读取信息*/int read_message(){FILE *fp;int i=0;if((fp=fopen("tushuguanli.txt","rb"))==NULL){ printf("\n\n**暂时还没有任何库存信息,按任意键进入主菜单选择基本信息的录入!****\n");return 0; }while(feof(fp)!=1){fread(&books[i],sizeof(struct books_type),1,fp);if(books[i].num==0) break;else i++;}fclose(fp);return(i);}/*输出模块*/output_message(){int i=0,j=0,count,page=1;clrscr();printf("\n\n --图书信息表-- 第%d页\n\n",page); PRINT2;PRINT1;do{if(books[i].num!=0){j++;if(j%page!=0){PRINT3;PRINT1;}else{PRINT3;PRINT1;if(books[i+1].num!=0){printf("按任意键继续!");bioskey(0);clrscr();printf("\n\n --图书信息表-- 第%d页\n\n",++page);PRINT2;PRINT1;}}}i++;}while(books[i].num!=0);printf("按任意键返回主菜单!");bioskey(0);}/*添加图书信息*/insert_message(){int i=sum,j,flag=0;char choice;clrscr();printf("\n\n 添加一种新图书\n");printf(" -------------------------------------\n");do{ books[i].num=++sum;printf("\n 新图书号:%d",books[i].num);printf("\n 新图书名称:");scanf("%s",books[i].name);printf("\n 图书种类:");scanf("%s",books[i].kind);printf("\n 图书总量:");scanf("%d",&books[i].add);printf("\n 出版日期(年-月-日):");scanf("%d-%d-%d",&books[i].pub_time.year,&books[i].pub_time.month,&books[i].pub_time.day );printf("\n 作者:");scanf("%s",books[i].writer);printf("\n 出版商:");scanf("%s",books[i].factory);printf("\n 要继续吗?(Y/N)");choice=getch();if(choice=='Y'||choice=='y'){printf("\n 继续!\n");i++;flag=1;}else flag=0;}while(flag==1);printf("\n 按任意键返回主菜单!");bioskey(0);}/*删除图书信息*/del_message(){int i,j,flag=0,f=0;int sum=read_message();int del_num;char choice;do{clrscr();printf("\n\n 请输入要删除图书的序号:\n");scanf("%d",&del_num);for(i=0;i<sum;i++){ if(books[i].num==del_num){books[i].num=0;flag=1;break;}}if(flag==0)printf("\n\n 该图书不存在!\n");printf("\n\n 要继续删除吗?(Y\N)"); choice=getch();if(choice=='Y'||choice=='y'){printf("\n 继续!\n");i++;f=1;}else f=0;}while(f==1);printf("按任意键返回主菜单!");bioskey(0);}/*修改模块*/revise_message(){int i=0,choice,revise_num,flag=0;do{clrscr();printf("\n 输入要修改的图书号:");scanf("%d",&revise_num);for(i=0;i<sum;i++)if(books[i].num==revise_num){printf("\n ---图书信息----\n");PRINT1;PRINT2;PRINT3;printf("\n 您要修改哪一项?\n");printf("\n 1.图书名称\n");printf("\n 2.图书种类\n");printf("\n 3.图书总量\n");printf("\n 4.图书现库存量\n");printf("\n 5.日期\n");printf("\n 6.作者\n");printf("\n 7.出版商\n");printf("\n 0.返回主菜单\n");printf("\n 请选择(0-7):");scanf("%d",&choice);switch(choice){case 1:printf("\n 输入修改后的名称:");scanf("%s",books[i].name);break;case 2:printf("\n 输入修改后的种类:");scanf("%s",books[i].kind);break;case 3:printf("\n 输入修改后的图书总量:");scanf("%d",&books[i].add);break;case 4:printf("\n 输入修改后的库存量:");scanf("%d",&books[i].current_add);break;case 5:printf("\n 输入修改后的日期:");scanf("%d-%d-%d",&books[i].pub_time.year,&books[i].pub_time.month,&books[i].pub_time.day );break;case 6:printf("\n 输入修改后的作者:");scanf("%s",books[i].writer);break;case 7:printf("\n 输入修改后的出版商:");scanf("%s",books[i].factory);break;}PRINT1;PRINT2;PRINT3;break;}if(i==sum){printf("\n 该图书不存在!");bioskey(0) ;}printf("\n\n 要继续修改吗?(Y\N)");choice=getch();if(choice=='Y'||choice=='y'){flag=1;printf("\n 继续!\n");}else flag=0;}while(flag==1);printf("\n 按任意键返回主菜单!");bioskey(0);}/*更新模块*/renew_message(){ int choice;do{clrscr();printf("\n\n\n *******更新图书信息********\n\n");printf(" 1.添加图书信息\n\n");printf(" 2.删除图书信息\n\n");printf(" 3.修改图书信息\n\n");printf(" 0.返回主菜单\n\n");printf(" 请选择(0-3):");scanf("%d",&choice);switch(choice){case 1:insert_message();break;case 2:del_message();break;case 3:revise_message();break;case 0:break;}}while(choice!=0);}/*按书名查询*/inquire_name(){int i,choice,j=0;char inquire_name[10];clrscr();printf("\n 输入要查询的图书名称:"); scanf("%s",inquire_name);for(i=0;i<sum;i++)if(strcmp(books[i].name,inquire_name)==0&&books[i].num!=0) {printf("\n ----图书信息---\n");PRINT1;PRINT2;PRINT3;}else j++;if(j==sum) printf("\n 该图书不存在!");bioskey(0);}/*按类别查询*/inquire_kind(){ int i,j=0,choice;char inquire_kind[10];clrscr();printf("\n 输入要查询的图书种类:"); scanf("%s",inquire_kind);for(i=0;i<sum;i++)if(strcmp(books[i].kind,inquire_kind)==0&&books[i].num!=0) {printf("\n --图书信息--\n");PRINT1;PRINT2;PRINT3;}else j++;if(j==sum) printf("\n 该图书不存在!");bioskey(0);}/*按作者查询*/inquire_writer(){ int i,j=0,choice;char inquire_writer[10];clrscr();printf("\n 输入要查询的图书作者:");scanf("%s",inquire_writer);for(i=0;i<sum;i++)if(strcmp(books[i].writer,inquire_writer)==0&&books[i].num!=0){printf("\n --图书信息--\n");PRINT1;PRINT2;PRINT3;}else j++;if(j==sum) printf("\n 该图书不存在!");bioskey(0);}/*按书名和作者查询*/inquire_name_writer(){int i,choice,j=0;char inquire_name[10];char inquire_writer[10];clrscr();printf("\n 输入要查询的图书名称:");scanf("%s",inquire_name);printf("\n 输入要查询的图书作者:");scanf("%s",inquire_writer);for(i=0;i<sum;i++)if(strcmp(books[i].name,inquire_name)==0&&strcmp(books[i].writer,inquire_writer)==0&&book s[i].num!=0){printf("\n ----图书信息---\n");PRINT1;PRINT2;PRINT3;}else j++;if(j==sum) printf("\n 该图书不存在!");bioskey(0);;}/*查询模块*/inquire_message(){int choice;do{clrscr();printf("\n\n\n *********查询图书信息*******\n\n"); printf(" 1.按图书名称查询\n\n");printf(" 2.按图书类别查询\n\n");printf(" 3.按作者查询\n\n");printf(" 4.按书名和作者查询\n\n");printf(" 0.返回主菜单\n\n");printf(" 请选择(0-4):");scanf("%d",&choice);switch(choice){case 1:inquire_name();break;case 2:inquire_kind();break;case 3:inquire_writer();break;case 4:inquire_name_writer();break;case 0:break;}}while(choice!=0);}/*统计某类图书的总库存量*/count_kind_allbooks(){int i,s=0; /*定义s为某类图书的总库存量*/char count_kind[10];clrscr();printf("\n 输入要统计的图书种类:");scanf("%s",count_kind);for(i=0;i<sum;i++)if(strcmp(count_kind,books[i].kind)==0&&books[i].num!=0) s=s+books[i].add;printf("该类图书的总库存量是%d",s);bioskey(0);}/*统计某类图书的现库存量*/count_kind_books(){int i,s=0; /*定义s为某类图书的现库存量*/char count_kind[10];clrscr();printf("\n 输入要统计的图书种类:");scanf("%s",count_kind);for(i=0;i<sum;i++)if(strcmp(count_kind,books[i].kind)==0&&books[i].num!=0) s=s+books[i].current_add;printf("该类图书的现库存量是%d",s);bioskey(0);}/*统计某一作者图书的总库存量*/count_writer_allbooks(){int i,s=0; /*定义为某一作者图书的总库存量*/char count_writer[10];clrscr();printf("\n 输入要统计图书的作者:");scanf("%s",count_writer);for(i=0;i<sum;i++)if(strcmp(count_writer,books[i].writer)==0&&books[i].num!=0) s=s+books[i].add;printf("该作者图书的总库存量是%d",s);bioskey(0);}/*统计某一作者的图书的现库存量*/count_writer_books(){int i,s=0; /*定义s为某一作者图书的现库存量*/char count_writer[10];clrscr();printf("\n 输入要统计图书的作者:");scanf("%s",count_writer);for(i=0;i<sum;i++)if(strcmp(count_writer,books[i].writer)==0&&books[i].num!=0) s=s+books[i].current_add;printf("该作者图书的现库存量是%d",s);bioskey(0);}/*统计模块*/count_message(){int choice;do{clrscr();printf("\n\n\n ******统计图书信息*******\n\n");printf(" 1.统计某类图书的总库存量\n\n") ;printf(" 2.统计某类图书的现库存量\n\n");printf(" 3.统计某一作者的图书的总库存量\n\n");printf(" 4.统计某一作者的图书的现库存量\n\n");printf(" 0.返回主菜单\n\n");printf(" 请选择(0-4):");scanf("%d",&choice);switch(choice){case 1: count_kind_allbooks();break;case 2: count_kind_books();break;case 3: count_writer_allbooks();break;case 4: count_writer_books();break;case 0: break;}}while(choice!=0);}/*图书总库存量排序*/sort_add(){struct books_type *p,*q[N];int i,j,k;clrscr();printf("\n 图书总库存量排序\n");printf("---------------------------------\n");printf("\n 排名图书序号图书名称图书种类图书总量现库存量图书作者出版商\n");p=books;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){k=i;for(j=i+1;j<sum;j++)if(q[k]->add<q[j]->add)k=j;if(k!=i){p=q[i];q[i]=q[k];q[k]=p;}for(i=0;i<sum;i++)printf("\n%10d%10d%12s%12s%10d%10d%10s%10s",i+1,q[i]->num,q[i]->name,q[i]->kind,q[i]->add,q[i]->current_add,q[i]->writer,q[i]->factory);bioskey(0);}}/*图书现库存量排序*/sort_current_add(){struct books_type *p,*q[N];int i,j,k;clrscr();printf("\n 图书现库存量排序\n");printf("---------------------------------\n");printf("\n 排名图书序号图书名称图书种类图书总量现库存量图书作者出版商\n");p=books;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){k=i;for(j=i+1;j<sum;j++)if(q[k]->current_add<q[j]->current_add)k=j;if(k!=i){p=q[i];q[i]=q[k];q[k]=p;}for(i=0;i<sum;i++)printf("\n%10d%10d%12s%12s%10d%10d%10s%10s",i+1,q[i]->num,q[i]->name,q[i]->kind,q[i]->add,q[i]->current_add,q[i]->writer,q[i]->factory);bioskey(0);}}/*排序模块*/sort_message(){int choice;do{clrscr();printf("\n\n\n *****借书信息排序*****\n\n");printf(" 1.图书总库存量排序\n");printf(" 2.图书现库存量排序\n");printf(" 0.返回主菜单\n");printf(" 请选择(0-2):");scanf("%d",&choice);switch(choice){case 1:sort_add();break;case 2:sort_current_add();break;case 0:break;}}while(choice!=0);}/*主程序*/main(){int choice;sum=read_message();bioskey(0);do{clrscr();printf("\n\n\n ********图书管理系统********\n\n");printf(" 1.录入图书信息\n\n");printf(" 2.输出图书信息\n\n");printf(" 3.更新图书信息\n\n");printf(" 4.查询图书信息\n\n");printf(" 5.统计图书信息\n\n");printf(" 6.图书排行信息\n\n");printf(" 0.退出系统\n\n");printf(" 请选择(0——6):");scanf("%d",&choice);switch(choice){ case 1:input_message();break;case 2:output_message();break;case 3:renew_message();break;case 4:inquire_message();break;case 5:count_message();break;case 6:sort_message();break;case 0:break;}}while(choice!=0);save_message(sum);printf("\n——以上图书信息已保存!—(文件名:tushuguanli.txt)\n");。
C语言 图书馆信息管理系统
#include〈iostream〉#include<fstream〉#include〈conio.h〉using namespace std;class Librarian //图书管理员类{public:Librarian();Librarian(int n,int j,char na[20],int w );int getnumber();int getjobage();char *getname();int getwages();void resetjobage(int j);void resetwages(int w);void resetname(char na[20]);private:int number;int jobage;char name[20];int wages;};Librarian::Librarian() //其函数的实现{number=0;char b[20]="no one”;jobage=0;strcpy(name,b);}Librarian::Librarian(int n,int j,char na[20],int w) {number=n;jobage=j;strcpy(name,na);wages=w;}int Librarian::getjobage(){return jobage;}char *Librarian::getname(){return name;}int Librarian::getnumber(){return number;}int Librarian::getwages(){return wages;}void Librarian::resetjobage(int j){jobage=j;}void Librarian::resetname(char na[20]){strcpy(name,na);}void Librarian::resetwages(int w){wages=w;}class reader //读者类{private:int number;int age;char name[20];char borrowbook[20];public:reader();reader(int c,int a,char b[20],char e[20]);int getnumber();int getage();char *getname();char * getborrowbook();void reworkborrowbook(char a[20]);};reader::reader() //其函数的实现{char a[20]="没有人”;char c[20]=”没有借书";number=0;age=0;}reader::reader(int a,int c,char d[20],char e[20]) {number=a;age=c;strcpy(name,d);strcpy(borrowbook,e);}int reader::getnumber(){return number;}int reader::getage(){return age;}char *reader::getname(){return name;}char * reader::getborrowbook(){return borrowbook;}void reader::reworkborrowbook(char a[20]){strcpy(borrowbook,a);}struct book //图书的结构体{int num;char name[20];char writer[20];};void outbookinf() //输出所有图书信息{int i;ifstream infile(”allbook。
c语言图书管理系统
int86(0x16, &rg,&rg);
return rg。h。ah;
}
int choose(int bot,int top)/*根据Y的值选择操作*/
{
int ky,y = 7;
gotoxy(30,bot);
do
{
ky = key();
switch(ky)
{
case Key_UP:
gotoxy(x + 1, y + high - 3);
for (i = 1; i < width - 1; i++)
{
putchar(0xc4);
}
gotoxy(x + width—1,y + high —1);
putchar(0xd9);
}
int key()/*读键盘*/
{
union REGS rg;
int halfw(int sum,bbasic binfo[100],char *find);
void sta();
void blist();
void bmoney();
int main(void)
{
menu();
}
void menu()
{
int y;
_window();/*显示窗口*/
words();/*显示菜单文字*/
gotoxy(30,16);
cprintf(”Book Statistic");
gotoxy(30,19);
cprintf(”Exit”);
gotoxy(35,22);
textcolor(LIGHTGRAY);
C语言-图书信息管理系统
图书信息管理系统设计、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(1)(2)(3)(4)(5)二、【各功能模块】void main() (menu(); }void menu() (int a;do 系统以菜单方式工作图书信息录入功能图书信息浏览功能图书信息查询功能图书信息的删除与修改功能1、菜单模块建立menu()函数将主函数功能提取出来,主函数main调用menu()函数方便简捷。
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 } }while(a!=0);}【定义图书信息结构体】#include<stdio.h> #include<stdlib.h> #include<string.h>#include<conio.h> void menu(); #define N 3typedef struct system {long num; char name[20]; char writer[10]; char sort[10]; char publisher[20]; long time; float price; }赵 毅 *******);printf(" ****** printf("\n"); printf("****** printf("\n");printf("\n\n\n\n\n\t\t\t\t printf("\t\t* printf("\t\t\t1 printf("\t\t\t2 printf("\t\t\t3 printf("\t\t\t4 printf("\t\t\t5 printf("\t\t\t6 printf("\t\t\t0printf("\t\t******************************************* 中国地质大学******\n");图书信息管理系统\t\t\t\t\n");********************************************);图书信息录入 图书信息浏览 图书信息查询 图书信息删除 图书信息修改 图书信息追加退出图书信息系统\n");*\n");\n");\n"); \n"); \n"); \n"); \n");序号不对\n");BOOK;注:定义的BOOK吉构体N为限定的录入图书个数(可依据不同要求变化范围)long num为定义的登录号(长整形变量)char name[20]为定义的书名的数组char writer[10] 为定义的作者的数组char sort[10] 定义的分类号数组char publisher[20] 定义的出版单位数组long time 定义的出版时间长整形变量float price 价格为浮点型变量。
C语言图书信息管理系统
#include"stdio.h"#include"conio.h"#include"string.h"#include"stdlib.h"void enter(); /*声明输入函数*/void look(); /*声明查看函数*/void search_name(); /*声明按姓名查看函数*/int openl(); /*声明打开函数*/void save(); /*声明保存函数*/void del(); /*声明删除函数*/void see(); /*打开并查看文件函数*/void add(); /*追加图书信息*/void TSXX_out();void TSXX_back();struct tsxx /*定义学生信息的结构体类型*/{char tsn[15]; /*图书名*/char bh[15]; /*编号*/int pri; /*价格*/char zzn[10]; /*作者名*/int kc; /*库存*/int total; /*总量*/}ts[100];int n; /*声明一个全局变量*/int main() /*主函数即用户的操作界面*/{int b,flag=0; /*声明局部变量*/while(1) /*循环输出以下信息*/{printf("\n\t\t\t欢迎使用图书馆管理系统\n");printf("\n\t\t\t\t秦盛伟阮腾飞制作\n");printf("\t\t\t -------------------------------\n");printf("\t\t\t 1.图书信息输入\n\n"); /*键入学生的信息*/printf("\t\t\t 2.查看录入的图书信息\n\n"); /*查看录入的学生信息*/printf("\t\t\t 3.按书名查看图书的信息\n\n"); /*按姓名查看学生的信息*/printf("\t\t\t 4.删除图书信息\n\n"); /*删除学生信息*/printf("\t\t\t 5.添加图书信息\n\n");printf("\t\t\t 6.保存学生信息\n\n"); /*保存*/printf("\t\t\t 7.打开文件\n\n"); /*打开文件*/printf("\t\t\t 8.借出图书\n\n");printf("\t\t\t 9.归还图书\n\n");/*键入学生的信息*/printf("\t\t\t 0.退出\n\n"); /*退出*/printf("\t\t\t请输入你的选择:");scanf("%d",&b);switch(b){case 1:enter();break; /*调用键入学生信息函数*/case 2:look();break; /*调用查看函数*/case 3:search_name();break; /*调用姓名查看函数*/case 4:del();break;/*调用删除函数*/case 5:add();break;case 6:save();break;/*调用保存函数*/case 7:see();break;/*调用打开文件函数*/case 8:TSXX_out();break;case 9:TSXX_back();break;case 0:flag=1;break;/*退出SWITCH语句*/default :printf("错误!");}if(flag) break; /*如果选择0就退出循环*/}}void save() /*建立保存文件函数*/{system("CLS");FILE *fp; /*定义文件型指针*/int i;if((fp=fopen("ts.txt","wb"))==NULL) /*打开输出文件*/{printf("不能打开文件!\n");return; /*终止程序*/ }for(i=0;i<n;i++) /*向student文件中写入信息*/if(fwrite(&ts[i],sizeof(struct tsxx),1,fp)!=1)printf("文件写入错误\n");fclose(fp); /*关闭文件*/printf("\n\n\n\n\t\t\t图书信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}void enter() /*定义键入图书信息函数*/{system("CLS");int i; /*定义局部变量*/printf("\t\t输入需录入图书信息的个数:");scanf("%d",&n);for(i=0;i<n;i++) /*输入每个学生的信息*/{printf("\n\t\t\t----------------\n");printf("\t\t\t图书名称:");scanf("%s",ts[i].tsn); /*输入图书名*/printf("\t\t\t编号:");scanf("%s",ts[i].bh); /*输入编号*/printf("\t\t\t单价:");scanf("%d",&ts[i].pri); /*输入价格*/printf("\t\t\t作者:");scanf("%s",ts[i].zzn); /*输入作者名*/printf("\t\t\t总数:");scanf("%d",&ts[i].total);ts[i].kc=ts[i].total;}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}void look() /*定义查看函数*/{system("CLS");int i;//n=openl(); /*调用openl函数*/printf("\t书名\t编号\t单价\t作者\t库存\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}void search_name() /*按书名查看函数*/{system("CLS");int i;char name[20]; /*声明字符数组*/printf("\t\t\t请输入书名:\n");scanf("%s",name);printf("\t书名\t编号\t单价\t作者\t库存n");for(i=0;i<n;i++)if(strcmp(ts[i].tsn,name)==0) /*将输入的姓名与结构体中的姓名进行比较*/{printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);printf("\n\n\n\t\t\t按任意键返回菜单");}getch();}void del() /*定义删除图书信息函数*/{int i;char a;char name[20];system("CLS");printf("\t\t\t输入图书名字:\n");scanf("%s",name);system("CLS");printf("\t书名\t编号\t单价\t作者\t库存\n");for(i=0;i<n;i++)if(strcmp(ts[i].tsn,name)==0){printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);getch();printf("真的删除?(y or n)");getchar();scanf("%c",&a);if(a=='y') /*是否删除该信息*/{for(;i<n;i++)ts[i]=ts[i+1];n=n-1;printf("你已经删除信息");}elseprintf("退出");getch();}save();}int openl() /*定义打开文件函数*/{system("CLS");int i;FILE *fp;if((fp=fopen("ts.txt","rb"))==NULL){printf("Cannot open file.\n");exit(0);}for(i=0;!feof(fp);i++)fread(&ts[i],sizeof(struct tsxx),1,fp);fclose(fp);return(i-1);}void see() /*打开并查看文件*/{system("CLS");int i;n=openl();printf("文件打开成功!\n");printf("按任意键查看!\n");getch();printf("\t书名\t编号\t单价\t作者\t库存\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}void add() /*定义键入学生信息函数*/{system("CLS");int i=1;while(i){printf("\n\t\t\t----------------\n");printf("\t\t\t书名:");scanf("%s",ts[n].tsn); /*输入学号*/printf("\t\t\t编号:");scanf("%s",ts[n].bh); /*输入姓名*/printf("\t\t\t单价:");scanf("%d",&ts[n].pri); /*输入性别*/printf("\t\t\t作者:");scanf("%s",ts[n].zzn); /*输入英语成绩*/printf("\t\t\t库存:");scanf("%d",&ts[n].kc); /*输入语文成绩*/n++;printf("是否继续添加?\n如果继续请键入1,否则键入0?\n");scanf("%d",&i);}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}void TSXX_out(){int i,d;char name[15];char s[10];char num[30];n=openl();printf("请输入需要借阅的图书名称:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(ts[i].tsn,s)==0&&ts[i].kc>0){printf("姓名:");scanf("%s",name);printf("学号:");scanf("%s",num) ;printf("借阅天数:");scanf("%d",&d);ts[i].kc--;}else if(strcmp(ts[i].tsn,name)==0&&ts[n].kc==0)printf("此书已经全部借出.\n"); else printf("对不起,此书不存在.\n");}printf("\n\n\n\t\t\t按任意键返回菜单");getch();save_student();}save_student(){system("CLS");FILE *fp1; /*定义文件型指针*/int i;if((fp1=fopen("student.txt","wb"))==NULL) /*打开输出文件*/{printf("不能打开文件!\n");return; /*终止程序*/}for(i=0;i<n;i++) /*向student文件中写入信息*/if(fwrite(&ts[i],sizeof(struct tsxx),1,fp1)!=1)printf("文件写入错误\n");fclose(fp1); /*关闭文件*/printf("\n\n\n\n\t\t\t学生借阅图书信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}void TSXX_back(){int i;char d[15];n=openl();printf("请输入归还图书的编号");scanf("%s",d);for(i=0;i<n;i++){if(strcmp(ts[i].bh,d)==0){ts[i].kc++;}else printf("您输入的编号有误,请重新执行此程序或寻则其他操作.\n");}if(n!=-1&&ts[n].kc==ts[n].total)printf("全部入藏.\n");printf("\n\n\n\t\t\t按任意键返回菜单");getch();save();}。
c语言课程设计图书信息管理系统
c语言课程设计图书信息管理系统本课程设计的选题是基于C程序设计语言的图书信息管理系统。
该系统以菜单方式工作,包括图书信息录入、浏览、查询和排序、删除和修改等功能。
在基本要求达到后,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
为了实现这些功能,我们需要遵循结构化程序设计思想,将系统设计任务分解成许多子功能模块进行设计。
程序将综合if语句及switch语句的运用方法及嵌套应用方法,循环结构的三种语句while、do-while、for,以及函数的定义方法和调用方法等来进行编写。
系统的总体结构包括录入、浏览、查询和排序、删除和修改等功能模块。
重要数据的数据结构设计采用结构体的形式,将所需的数据全放在一维数组中,方便文件录入和读取的操作。
具体的功能模块包括录入模块、浏览模块、删除模块、修改模块和查询模块。
录入模块用于录入图书信息并保存于文件中,浏览模块用于添加一个或多个图书信息,并将所添加图书信息保存,方便查找。
删除模块和修改模块分别用于对图书信息进行删除和修改处理。
查询模块则提供了按分类号、作者名、书名等多种查询方式,方便用户查找所需图书信息。
在基本功能实现的基础上,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
includeincludeincludestruct BOOK {char shuming[999]。
zuozheming[999]。
fenleihao[999]。
danwei[999]。
shijian[999]。
jiage[999];books[___];void select() {system("cls");void jm();void input();void output();void search();void xiugai();void shanchu();int n;printf("图书管理功能界面\n");menu:jm();scanf("%d"。
图书馆管理系统(C语言程序设计)
图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用0表示或借出用读者编号表示),读者数据由编号、姓名和电话号码构成。
实现功能包括:(1)添加图书的记录(2)图书管理(借书和还书)(3)对图书数据排序(按单价的降序)(4)删除图书记录(5)修改图书记录(6)添加读者记录(7)输出图书信息表和读者信息表*#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>/*函数的声明*/void bookname();void writername();void booknumber();void press();void bookdate();void Bfind(); //查询主菜单void Bdevise(); //修改函数void Badd(); //添加函数void Bdelete(); //删除函数void Bdisplay(); //显示所以已保存的图书信息函数void Bclean(); //清除所有图书信息函数void lendbook(); // 借书函数void returnbook(); //还书函数void lendorreturnbook();//借书或还书主菜单函数void appealkey();//用户密码申诉函数void devisepeoplekey();//修改用户密码函数void accountapply(); //用户申请账户函数void addpeopleaccount(); //管理员之添加用户帐号函数void addmanageaccount(); //管理员之添加管理员账号函数void addaccount(); //管理员之账户添加主菜单函数void devisepeopleaccount();//管理员之修改用户账号函数void devisemanageaccount();//管理员之修改管理员帐号函数void deviseaccount();//管理员之修改账号主菜单函数void deletepeopleaccount();//管理员之删除用户账号函数void deletemanageaccount();//管理员之删除管理员账号函数void deleteaccount();//管理员之删除账号主菜单函数void displayallpeopleaccounts();//显示所有用户信息函数void displayallmanageaccounts();//显示所有管理员信息函数void displayallaccountsmessage();//显示所有账号信息主菜单函数void highaddpeopleaccount(); //高级管理员添加用户账户函数void highaddmanageaccount(); //高级管理员添加管理员账户函数void highaddaccount(); //高级管理员之添加账户主菜单函数void booksmanage();//图书操作主菜单函数void accountsmanage();//管理员账号操作主菜单函数void highaccountsmanage();//高级管理员账号操作主菜单函数void menu1(); //用户之查询主菜单void menu2(); //管理员之查询主菜单void menu3(); //高级管理员之查询主菜单/*定义书的类型*/struct book{int bookstock; //库存量char bookname[20]; //书名char bookwriter[20]; //作者char booknumber[20]; //书号char press[20]; //出版社char bookdate[20]; //出版日期char price[20]; //出版价格int turefalse; //判断图书是否被借阅}books[20];/*定义用户类型*/struct peopleaccount{char pname[20];char pkey[20];}peopleaccounts[20];/*定义管理员类型*/struct manageaccount{char mname[20];char mkey[20];}manageaccounts[20];/*定义借书卡类型*/struct card{char cardnumber[20]; //借书卡号和用户信息一起写入yonghu.txt文件中的}cards[20];/*定义文件指针变量*/FILE *fp1; //fp1打开用户信息文件FILE *fp2; //fp2打开管理员信息文件FILE *fp3; //fp3打开图书信息文件FILE *fp4; //打开借还书记录的文件FILE *fpa; //fpa是临时文件指针/*改变输出的字体颜色*/void color(const unsigned short color1){if(color1>=0&&color1<=15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);/*仅限改变0-15的颜色;如果在0-15那么实现他的颜色因为如果超过15后面的改变的是文本背景色。
C语言程序设计作业源程序之图书信息管理系统
图书信息管理系统图书信息管理系统源程序m_book.c + s_book.c程序源码:m_book.c#include <stdlib.h>struct node{ char name[10];int price;char pub[15];};extern struct node *add(),*del(struct node *);extern struct node *load(),*mhdel(struct node *);/*******************************************************//* 函数功能:显示菜单,选择菜单*//* 输入参数:无*//* 函数输出:选择的菜单序号*//*******************************************************/int menu_select(){int cn=0;printf(" **********************************************\n");printf("\t\t 1. Add a book\n");printf("\t\t 2. Display book library\n");printf("\t\t 3. Query a book\n");printf("\t\t 4. Delete a book\n");printf("\t\t 5. Save to disk\n");printf("\t\t 6. Load from disk \n");printf("\t\t 7. Mohu search\n");printf("\t\t 8. Mohu delete\n");printf("\t\t 0. Exit\n");printf("\t***********************************************\n");printf("\n Input(0~8): ");for(; ;){ scanf("%d",&cn);if (cn<0 ||cn>8) printf("Error ! Input again(1~6):");elsebreak;}return cn;}void main(void){struct node *head=NULL;for(; ;){ clrscr();switch(menu_select()){case 1: head=add(head);break;case 2: print(head);break;case 3: search(head);break;case 4: head= del(head);break;case 5: save(head);break;case 6: head=load();break;case 7: mhsearch(head);break;case 8: head=mhdel(head);break;case 0: exit(0);}}}s_book.c#include <stdio.h>#include <string.h>#include <stdlib.h>struct node{char name[10];float price;char pub[15];struct node *link;};struct node *add(struct node *head ) ; /* 函数功能:创建结点,输入结点数据*/ void print(struct node *head); /* 函数功能:链表输出*/void save(struct node *head); /* 函数功能:链表存储*/void search(struct node *head); /* 函数功能:链表结点查找*/struct node *del(struct node *head); /* 函数功能:结点删除*/struct node *load(void); /* 函数功能:从文件中读入数据,创建链表*/struct node *mhdel(struct node *head); /* 函数功能:结点模糊删除*/void mhsearch(struct node *head); /* 函数功能:链表结点模糊查找*//*******************************************************//* 函数功能:创建结点,输入结点数据*//* 输入参数:链表头指针*//* 函数输出:链表头指针*//*******************************************************/struct node *add(struct node *head ){int i;float jg;struct node *p, *pnew;pnew=(struct node *)malloc(sizeof(struct node));printf("Please input book name,price,publisher\n");printf("name:");scanf("%s",pnew->name);printf("price:");scanf("%f",&jg);pnew->price=jg;printf("publisher:");scanf("%s",pnew->pub);pnew->link=NULL;if (head==NULL)return (pnew);p=head;while (p->link!=NULL) /* 找到尾结点*/p=p->link;p->link=pnew;return (head);}/*******************************************************/ /* 函数功能:链表输出*//* 输入参数:链表头指针*//* 函数输出:无*//*******************************************************/ void print(struct node *head){struct node *p;p=head;printf("name\tprice\tpublisher\n");while (p!=NULL){printf("%s\t%-5.2f\t%-s\n",p->name,p->price,p->pub);p=p->link;}printf("\n\t\tPress any keys!");getch();}/*******************************************************/ /* 函数功能:链表存储*//* 输入参数:链表头指针*//* 函数输出:无*//*******************************************************/ void save(struct node *head){FILE *fp;struct node *p;if ((fp=fopen("library","wb"))==NULL){ printf("Can't open file!\n");exit(1);}p=head;while (p!=NULL){fwrite(p,sizeof(struct node),1,fp);p=p->link;}fclose(fp);}/*******************************************************/ /* 函数功能:从文件中读入数据,创建链表*//* 输入参数:无*//* 函数输出:链表头指针*//*******************************************************/ struct node *load(void){FILE *fp;struct node *p,*pnew,*phead;if ((fp=fopen("library","rb"))==NULL){ printf("Can't open file!\n");exit(1);}pnew=(struct node *)malloc(sizeof(struct node));fread(pnew, sizeof(struct node),1,fp);pnew->link=NULL;phead=pnew;p=pnew;while (!feof(fp)){ pnew=(struct node *)malloc(sizeof(struct node));if (1!=fread(pnew, sizeof(struct node),1,fp)) break;pnew->link=NULL;p->link=pnew;p=p->link;}fclose(fp);return(phead);}/*******************************************************/ /* 函数功能:链表结点查找*//* 输入参数:链表头指针*//* 函数输出:无*//*******************************************************/ void search(struct node *head){char sname[15];struct node *p;printf("Please input book name\n");printf("name:");scanf("%s",sname);p=head;while (p!=NULL){ if (strcmp(p->name,sname)==0){printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); printf("\n\t\tPress any keys!");getch();return;}p=p->link;}printf("Book Not Exist!\n");printf("\n\t\tPress any keys !"); getch();}/*******************************************************/ /* 函数功能:结点删除*//* 输入参数:链表头指针*//* 函数输出:返回链表头指针*//*******************************************************/ struct node *del(struct node *head){char sn[15],s;int flag=0;struct node *p,*q;printf("Please input book name\n");printf("name:");scanf("%s",sn);p=head;while(p!=NULL){while(p!=NULL &&(strcmp(p->name,sn)!=0)){ q=p;p=p->link;}if((strcmp(p->name,sn)==0)&& p!=NULL){flag=1;printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); printf("Do you want to del this book(y/n)");scanf("\n%c",&s);if(s=='y' || s=='Y'){if(p==head)head=p->link;else q->link=p->link;free(p);printf("This book is deleted!\n");printf("\n\t\tPress any keys !");getch();}else{printf("\nThis book not delete!\n");printf("\n\t\tPress any keys!");getch();return head;}}else{ if(flag!=1){ printf("\nNOT found!");printf("\n\t\tPress any key!");getch();}break;}if(p!=NULL){ p=p->link; }}return head;}void mhsearch(struct node *head){char s[15];int flag=0;struct node *p;printf("Please input book name\n");printf("name:");scanf("%s",s);p=head;while(p!=NULL){while(p!=NULL && (strstr(p->name,s)==NULL)){ p=p->link;}if(strstr(p->name,s)!=NULL){printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); flag=1;getch();}else{ if(flag!=1){ printf("\nNOT found!");printf("\n\t\tPress any key!");getch();}}if(p!=NULL){ p=p->link; }}}struct node *mhdel(struct node *head){char sn[15],s;int flag=0;struct node *p,*q;printf("Please input book name\n");printf("name:");scanf("%s",sn);p=head;while(p!=NULL){while(p!=NULL &&(strstr(p->name,sn)==NULL)){ q=p;p=p->link;}if((strcmp(p->name,sn)!=NULL)&& p!=NULL){flag=1;printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); printf("Do you want to del this book(y/n)");scanf("\n%c",&s);if(s=='y' || s=='Y'){if(p==head)head=p->link;else q->link=p->link;free(p);printf("This book is deleted!\n");printf("\n\t\tPress any keys !");getch();}else{printf("\nThis book not delete!\n");printf("\n\t\tPress any keys!");getch();return head;}}else{ if(flag!=1){ printf("\nNOT found!");printf("\n\t\tPress any key!");getch();}break;}p=head;}return head;。
c语言图书信息管理系统c语言
图书管理系统目录一、问题描述这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
通过这些信息使之提供以下功能:(1)图书信息创建功能。
其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
(图书信息用文件保存)。
(2)图书信息查看功能。
用来查看各项图书信息。
(3)图书信息查找功能。
通过已知信息来查找想要的图书。
(4)图书信息的删除。
可以删除特定图书。
(5)图书信息的修改。
可以修改图书的各项信息。
(6)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能二、概要设计1 数据结构图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
struct book{int num;//编号char name[20];//书名char author[20];//作者char publisher[20];//出版社int price;//价格int store;//库存};//图书信息结构体2 模块划分本系统主要有创建新的图书、查找图书、删除图书、修改图书、查看图书和图书排序几个基本功能。
void setup(struct book bo[]);//新建图书void search(struct book bo[]);//查找图书void modify(struct book bo[]);//查看图书void del(struct book bo);//删除图书void allbook(struct book bo[]);显示所有图书3 程序流程图否开始菜单新建图书修改信息查询图书删除图书所有图书退出是结束三、详细设计1 主函数int main()//主{struct book bo[100];char c;while(1){system("color 1A");printf("\n");printf("\n\t\t\t >>>欢迎进入图书管理系统<<<\n\n");printf("===================================== ===========================================\ n\n");printf("\t\t\t\t 1 录入新书\n\t\t\t\t 2 查询图书\n");printf("\t\t\t\t 3 修改信息\n\t\t\t\t 4 删除图书\n");printf("\t\t\t\t 5 所有图书\n");printf("\t\t\t\t 0 退出系统\n\n");printf("===================================== ===========================================\ n");printf("请选择:");c=getchar();switch(c){case'1':{setup(bo); getchar();break;}case'2':{search(bo);getchar();break;}case'3':{modify(bo);getchar();break;}case'4':{del(bo);getchar();break;}case'5':{allbook(bo);getchar;break;}case'0':{printf("\n感谢使用本系统");return 0;break;}default:{printf("\n输入有误,请重新输入:" );c=getchar();} }}}2 新建图书void setup(struct book bo[])打开文件或者新建一个文件,键盘输入新建的图书信息,然后把数据全部保存在数组bo数组中,最后存入文件。
C语言课程设计 图书信息管理系统 原创
10级计算机科学与技术 10级计算机科学与技术
李德 曹瑞 常树刚
主要内容
设 计 目 的 设 计 计 与 测 试 设 试 体”使其具有数据 录入、显示、查询(排序)、删除和修改 功能。 数据包括:图书号、图书名、作者名、图 书分类号、出版单位、出版日期、图书价 格。 可显示所有保存的记录。 可按图书号进行排序。 可分别按图书号、图书名进行查询及删除
• • • •
总体设计
图书信 息管理系统
数据录入
数据浏览 排序) (排序)
数据查询
数据删除
数据修改
详细设计
• 主函数 • 子函数
void main() { int a; FILE *fp; if((fp=fopen("library.txt","r"))==NULL) { printf("\n●不能打开图书信息库●\n"); fp=fopen("library.txt","w+"); printf("\n★初始化图书信息库,初始化之后要重启程序★\n"); library.count=0; fwrite(&library.count,sizeof(int),1,fp); fclose(fp); return; } fread(&library.count,sizeof(int),1,fp); fread(library.book,sizeof(library.book[0]),library.count,fp); fclose(fp); do { system("cls"); printf("\n★德州学院计算机系★"); printf("\n★李德 ★曹瑞 ★常树刚\n"); printf("\n =============★欢迎进入图书信息管理系统★============= \n"); printf("\n |************************************************|\n"); printf("\n | ---------- ●1. 图书信息录入 -----------|\n"); printf("\n | ---------- ●2. 图书信息浏览 -----------|\n"); printf("\n | ---------- ●3. 图书信息查询 -----------|\n"); printf("\n | ---------- ●4. 图书信息删除 -----------|\n"); printf("\n | ---------- ●5. 图书信息修改 -----------|\n"); printf("\n | ---------- ●0. 退出图书信息系统 --------|\n"); printf("\n |************************************************|\n"); printf("\n ==============★欢迎进入图书信息管理系统★============= \n"); printf("\n 请输入您需要的选择: "); fflush(stdin); scanf("%d",&a);
图书管理系统c语言
图书管理系统C语言1. 简介图书管理系统是一种用于管理图书馆藏书和借阅记录的软件系统。
它通常包括图书的录入、借阅、归还、查询等功能,能够提高图书馆的工作效率和服务质量。
本文将使用C语言编写一个简单的图书管理系统,实现基本的图书信息录入、修改、查询、借阅、归还等功能。
2. 功能实现2.1 数据结构我们首先需要定义合适的数据结构来存储图书信息和借阅记录。
以下是一个简单的数据结构示例:struct Book {int id; // 图书编号char title[100]; // 图书标题char author[50]; // 图书作者char category[50]; // 图书分类int isBorrowed; // 图书是否已借阅,0表示未借阅,1表示已借阅char borrowerName[100]; // 借阅者姓名// 可根据需求扩展其他字段};struct BorrowRecord {int bookId; // 图书编号char borrowerName[100]; // 借阅者姓名char borrowDate[20]; // 借阅日期char returnDate[20]; // 归还日期// 可根据需求扩展其他字段};2.2 图书信息录入和修改我们可以通过实现相应的函数来实现图书信息的录入和修改。
以下是一个简单的示例:void addBook(struct Book *library, int *count) {// 输入图书信息,将其存入library数组中,同时更新count}void updateBook(struct Book *library, int count, int bookId) { // 根据图书编号bookId,更新library数组中对应图书的信息}2.3 图书查询我们可以根据图书的不同字段来实现不同的查询功能,比如根据图书标题、作者、分类等进行模糊查询,或根据图书编号进行精确查询。
c语言图书管理系统流程图
c语言图书管理系统流程图C语言图书管理系统流程图概述:C语言图书管理系统是一个用于管理图书馆或书店的系统,它可以实现图书的添加、删除、查询和借还等功能。
本文将通过详细的流程图,介绍C语言图书管理系统的运行流程。
1. 添加图书:- 用户输入图书信息,包括书名、作者、出版日期和价格等。
- 系统接收用户输入的信息,并生成一个唯一的图书编号。
- 系统将图书信息和图书编号存储到数据库中。
2. 删除图书:- 用户输入要删除的图书编号。
- 系统在数据库中查找并验证该图书编号是否存在。
- 如果存在,则从数据库中删除该图书信息。
3. 查询图书:- 用户输入要查询的图书名称或作者等信息。
- 系统在数据库中查找与用户输入信息匹配的图书。
- 系统将符合条件的图书信息显示给用户。
4. 借阅图书:- 用户输入要借阅的图书编号。
- 系统在数据库中查找并验证该图书编号是否存在。
- 如果该图书可借,则系统记录借阅人的信息,标记该图书为已借出状态。
5. 归还图书:- 用户输入要归还的图书编号。
- 系统在数据库中查找并验证该图书编号是否存在,并检查该图书是否已借出。
- 如果该图书已借出且由用户借出,则系统记录归还时间,将该图书状态标记为可借。
6. 统计功能:- 用户选择统计功能入口。
- 系统提供多种统计选项,例如按照作者统计、按照出版日期统计、按照价格区间统计等。
- 系统在数据库中进行相应的查询并展示统计结果。
7. 备份与恢复:- 用户选择备份或恢复功能入口。
- 备份功能:系统将数据库中的图书信息备份到指定的文件中。
- 恢复功能:系统从指定的备份文件中还原图书信息到数据库中。
8. 系统维护:- 用户选择系统维护功能入口。
- 维护功能包括数据库清理、数据完整性检查、系统日志管理等。
- 用户可以根据需求选择相应的维护操作。
总结:C语言图书管理系统通过以上流程图所示的各项功能,实现了对图书的添加、删除、查询和借还等操作,同时还提供了统计、备份和维护等实用的功能。
图书信息管理系统——C语言
图书信息管理系统前言计算机对社会发展所具有的广泛而深远的影响。
人类文化的内涵是随着社会发展而进化的。
在现代信息社会中,计算机已不仅仅是一种工具,而且是一种文化。
信息技术对人类社会进行的全方位渗透,已经形成一种新的文化形态——信息时代的计算机文化。
计算机知识成为当代知识分子结构中不可缺少的重要部分。
C语言是今年来国内外得到迅速推广使用的一种高级语言。
C语言功能丰富,表达能力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的语言特点,因此C语言对我们来说很重要。
设计是一门重要的计算机基础课程,通过学习,学生不仅要掌握高级程序设计语言的知识,更重要的是在实践中逐步掌握程序设计的思想和方法,培养问题求解和语言的应用能力。
此次上机实习,不但要使同学们的程序设计能力上一台阶,同时要提高与程序设计和软件开发有关的各种综合能力。
由于课时和上机时间的仓促,所以我对很多内容还来不及消化,对上机演练十分陌生,还有一些知识遗忘,因而这次程序设计的实习实际上是对我的一次集中的强化练习。
虽然其时间短,任务重,但我们的确达到了此次课程设计的目的。
图书信息管理系统一、题目要求1、新进图书基本信息的输入。
2、办理借书手续。
3、办理还书手续。
4、管理书籍。
二、需求分析根据题目需要,由于图书信息需要存放在文件中,所以应提供文件输入、输出等操作。
应提供查找、借阅、管理等功能。
由于有多种借阅图书的方法,而又需要提供相应的算法,最后还应提供键盘是选择菜单实现功能。
三、总体设计四、详细设计1、主函数[说明]主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。
[流程][程序]void main() { int choice; printf("请建立学生人事文件\n");buildfile1(); /*建立并输出学生人事文件*/ print1(); printf("请建立书籍档案文件\n"); buildfile2(); print2(); /*建立并输出书*/ printf("请建立借还关系文件\n");buildfile3(); /*建立并输出借还关系文件*/ print3(); printf("\n"); printf("欢迎使用图书馆管理系统!\n");do{printf("0---退出\n1----借书\n2---还书\n3---统计某天各种类型书进货量\n");printf("4---对各类书某月进货量、出借量用链表进行排序\n");printf("5---查询本人书籍借阅情况\n6---查询某类图书借还情况\n");printf("请输入您要进行的操作:");scanf("%d",&choice);switch(choice){case 0: printf("退出成功\n"); return;case 1: borrow(); break;case 2: back(); break;case 3: day_import(); break;case 4: sort(); break;case 5: searchme(); break;case 6: search(); break;default: printf("非法输入! 请重输!\n\n");}}while(choice>=0||choice<=6);}2、各功能模块设计(1)建立学生人事文件模块[说明]数据信息存放在文件中,一条记录对应一条学生信息,方便管理。
C语言程序设计-图书管理信息系统1
#include<stdio.h>#include <string.h>#include <stdlib.h>#include<conio.h>#define Max 2typedef struct book //书的信息{char book_num[10];//书号char book_name[20];//书名char book_writer[10];//作者int book_xy;//书的剩余数量int book_kc;//书的总数量struct book *next;}BK;typedef struct borrow //被借书的信息{char borrow_book_num[10];//借书书号char limit_date[8];//借书归还日期}BO;typedef struct reader //读者信息{char reader_num[10];//读者号char reader_name[10];//读者姓名int right;//已借数量BO borrow[Max];//已借书信息struct reader *next;}RD;BK *h_book;RD *h_reader;void Login();int Menu();void Init();void Init_book();void Menu_select();void Insert_New_Book();void Find_Book();void add_reader();void Print_reader();void Print_book();void Borrow_Book();void Return_Book();void Save();void Save_Book();void Save_Reader();void Load();void Load_Reader();void Load_Book();void Login(){system("cls");printf("\n\n\n\t\t\t欢迎使用图书管理系统\n");printf("\n\n\t\t本程序分析者单思海学号:201120210116\n\n\n\n\n\n\n");//以前是设计者xxxxprintf("\n\n\n\t\t 按任意键进入系统...");getch(); system("cls");}int Menu() /*主菜单*/{ int dm;printf("\n\t\t图书管理系统主菜单\n");printf("=================================================\n");printf("☆\t0----退出系统☆\n");printf("☆\t1----采编入库☆\n");printf("☆\t2----登记读者☆\n");printf("☆\t3----借阅登记☆\n");printf("☆\t4---还书管理☆\n");printf("☆\t5---查询图书信息☆\n");printf("☆\t6----查询读者信息☆\n");printf("=================================================\n");printf("请选择相应的代码:");for(;;){ scanf("%d",&dm);if(dm<0||dm>6)printf("\n错误!请重新输入:");else break;}return dm;}void Menu_select()/*主菜单选择函数*/{for(;;){switch(Menu()) /*功能选择*/{ case 0:system("cls");Save();printf("\n\n\t文件保存成功!\n");printf("\n\n\t欢迎下次使用本系统!\n");getch();exit(0);case 1:Insert_New_Book();break;case 2:add_reader();break;case 3:Borrow_Book();break;case 4:Return_Book();break;case 5:Print_book();break;case 6:Print_reader();break;default:printf("\n错误!");exit(0);}}}void Init() /*初始化*/{Init_book();}void Init_book() /*初始化图书信息*/{BK *p0;printf("\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n");p0=(BK*)malloc(sizeof(BK));h_book=p0;printf("\n请输入图书信息:\n");printf("图书编号:"); /*输入图书编号(唯一)*/scanf("%s",p0->book_num);printf("图书名称:"); /*输入图书名称*/scanf("%s",p0->book_name);printf("图书作者:"); /*输入图书作者*/scanf("%s",p0->book_writer);printf("图书数量:"); /*输入图书数量*/scanf("%d",&p0->book_kc);p0->book_xy=p0->book_kc; /*开始时图书现有量和库存量相等*/ p0->next=NULL;printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");getch();system("cls");}void Insert_New_Book()/*新书入库*/{BK *p,*p0,*p1;p=p1=h_book;printf("\n新书入库模块...\n");printf("\n请输入新书信息..\n包括书号.书名.数量..\n");p0=(BK *)malloc(sizeof(BK));printf("图书编号:");scanf("%s",p0->book_num);while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)p1=p1->next;if(strcmp(p0->book_num,p1->book_num)==0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/{printf("\n此编号图书已存在!!直接入库!\n");printf("图书数量:");scanf("%d",&p0->book_kc);p1->book_kc+=p0->book_kc;p1->book_xy+=p0->book_kc;}else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/{printf("图书名称:");scanf("%s",p0->book_name);printf("图书作者:");scanf("%s",p0->book_writer);printf("图书数量:");scanf("%d",&p0->book_kc);while(p->next){ p=p->next; }if(h_book==NULL) h_book=p0; /*此处分两种情况,链表中没有数据,head直接指向p0处*/else p->next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/p0->next=NULL;p0->book_xy=p0->book_kc;}printf("\n新书入库完毕!按任意键继续下一步操作..\n");getch();system("cls");}void add_reader()/*添加读者*/{ RD *p0;printf("\n读者初始化开始,请输入读者信息..\n包括书证号.姓名..\n");p0=(RD*)malloc(sizeof(RD)); /*申请新结点存储空间*/h_reader=p0;printf("\n请输入读者的信息:\n");printf("读者书证号:");scanf("%s",p0->reader_num);printf("读者姓名:");scanf("%s",p0->reader_name);p0->right=0;for(i=0;i<Max;i++){strcpy(p0->borrow[i].borrow_book_num,"0"); /*所借图书直接置为0(即没有借书)*/ strcpy(p0->borrow[i].limit_date,"0");}p0->next=NULL;printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");getch();system("cls");}void Borrow_Book() /*借书模块*/{BK *p0; RD *p1;char bo_num[10],rea_num[10],lim_date[8];int i;p0=h_book; p1=h_reader;printf("\n借书模块...\n");printf("\n请输入借书的读者书证号:");scanf("%s",rea_num);while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0) //查找读者号{p1=p1->next;}if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0){printf("\n此读者编号不存在!按任意键返回..\n");goto END;}printf("\n请输入你要借的书的编号:");scanf("%s",bo_num);while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL) //查找书号{p0=p0->next;}if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0){printf("\n此图书编号不存在!按任意键返回..\n");else if(p0->book_xy<=0){printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回....");}else if(p1->right>=Max){printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回....");}else if(strcmp(p1->borrow[0].borrow_book_num,"0")!=0){for(i=0;i<Max;i++){if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0){printf("\n抱歉!同一个读者不能同借两本相同的书!\n");}else if(strcmp(p1->borrow[i].borrow_book_num,"0")==0){printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);p0->book_xy--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);}}}else{printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date ,lim_date );p0->book_xy--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);}END:getch(); system("cls");}void Return_Book() /*还书模块*/{BK *p; RD *q;int i,j,find=0;char return_book_num[10],return_reader_num[10];p=h_book; q=h_reader;printf("\n还书模块...\n");printf("\n请输入要还书的读者编号:");scanf("%s",return_reader_num);while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0)q=q->next;if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0){find=2;printf("\n此读者编号不存在!按任意键返回..\n");goto end;}printf("\n请输入读者还书的编号:");scanf("%s",return_book_num);while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)p=p->next;if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0){find=2;printf("\n错误!此图书编号不存在!按任意键返回..\n");goto end;}for(i=0;i<Max;i++)if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0) /*如果此读者借了此书*/{find=1;for(j=i;j<Max-1;j++){strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);}strcpy(q->borrow[Max-1].borrow_book_num,"0");strcpy(q->borrow[Max-1].limit_date,"0");p->book_xy++;q->right--;printf("\n编号%s的读者还书完毕!按任意键继续下步操作..",return_reader_num);}if(find==0)printf("\n错误!此读者未借此书!按任意键返回..\n");end: getch(); system("cls");}void Print_book() /*查询图书信息*/{BK *p;p=h_book;printf("\n图书信息如下:\n\n");printf("图书编号\t图书名称\t图书作者\t现有\t\t库存\n");while(p!=NULL){printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p ->book_kc);p=p->next;}printf("\n图书信息打印完毕!按任意键继续下一步操作..");getch();system("cls");}void Print_reader() /*查询读者信息*/{RD *p;int i;p=h_reader;printf("\n读者信息如下:\n\n");printf("读者书证号\t\t读者姓名\n");printf("\n");while(p!=NULL){printf("\t%s\t\t%s",p->reader_num,p->reader_name);for(i=0;i<Max;i++){printf("\n");printf("图书编号",i+1);printf("\t还书日期",i+1);printf("\n");printf("\t%s",p->borrow[i].borrow_book_num);printf("\t\t%s",p->borrow[i].limit_date);}printf("\n");p=p->next;}printf("\n读者信息打印完毕!按任意键继续下一步操作..");getch();system("cls");}//文件模块void Save() /*保存信息*/{Save_Reader();Save_Book();}void Save_Reader() /*保存读者信息*/{FILE *fp_reader;RD *p,*p0;p=h_reader;if((fp_reader=fopen("Reader.txt","wb"))==NULL) /*创建文件,进行保存*/{printf("\n文件保存失败!\n请重新启动本系统...\n");exit(0);}while(p!=NULL){if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*将链表中的信息写入文件中*/printf("\n写入文件失败!\n请重新启动本系统!\n");p0=p;p=p->next;free(p0); /*释放所有结点*/}h_reader=NULL;fclose(fp_reader); /*关闭文件*/}void Save_Book() /*保存图书信息*/{FILE *fp_book; /*创建文件型指针*/BK *p,*p0;p=h_book;if((fp_book=fopen("Book.txt","wb"))==NULL) /*创建文件,进行保存*/{printf("\n文件保存失败!\n请重新启动本系统...\n");exit(0);}while(p!=NULL){if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*将链表中的信息写入文件中*/ printf("\n写入文件失败!\n请重新启动本系统!\n");p0=p;p=p->next;free(p0);}h_book=NULL;fclose(fp_book); /*关闭文件*/}void Load() /*加载信息*/{Load_Reader();Load_Book();}void Load_Reader() /*加载读者信息*/{RD *p1,*p2,*p3;FILE *fp; /*创建文件型指针*/fp=fopen("book.txt","rb"); /*打开文件*/ p1=(RD *)malloc(sizeof(RD));fread(p1,sizeof(RD),1,fp);h_reader=p3=p2=p1;while(! feof(fp)) /*读出信息,重新链入链表*/ { p1=(RD *)malloc(sizeof(RD));fread(p1,sizeof(RD),1,fp);p2->next=p1;p3=p2;p2=p1;}p3->next=NULL;free(p1);fclose(fp); /*关闭文件*/}void Load_Book() /*加载图书信息*/{BK *p1,*p2,*p3;FILE *fp; /*创建文件型指针*/fp=fopen("Book.txt","rb"); /*打开文件*/p1=(BK *)malloc(sizeof(BK));fread(p1,sizeof(BK),1,fp);h_book=p3=p2=p1;while(! feof(fp)) /*读出信息,重新链入链表*/ { p1=(BK *)malloc(sizeof(BK));fread(p1,sizeof(BK),1,fp);p2->next=p1;p3=p2;p2=p1;}p3->next=NULL;free(p1);fclose(fp); /*关闭文件*/}void main(){FILE *fp_book,*fp_reader; /*创建文件型指针*/Login();if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("Reader.txt","rb"))==NULL) { Init(); }else Load();Menu_select(); /*调用主菜单*/}。
图书管理系统的设计(C语言)
图书管理系统设计图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等功能描述:1 .新进熟土基本信息的输入2 .图书基本信息的查询3 .对撤销图书信息的删除4 .为借书人办理注册5 .办理借书手续6 .办理换书手续要求:以文件方式存储数据,系统以菜单方式工作。
这是本人大一第二学期初 C 语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ 网络硬盘中找到了当初的teta 版,发布于此,以作记念。
C 源代码如下:#include〈stdio 。
h〉#include<stdlib。
h〉#include〈string 。
h>struct book {char book_name [30];int bianhao;double price;char author[20];char state [20] ;char name[20];char sex [10];int xuehao;struct book *book_next;};struct club {char name [20];char sex[10];int xuehao;char borrow [30];struct club *club_next;};void Print_Book(struct book *head_book);/*浏览所有图书信息*/void Print_Club(struct club *head_club);/*浏览所有会员信息*/struct book *Create_New_Book();/*创建新的图书库, 图书编号输入为0 时结束*/struct book *Search_Book_bianhao(int bianhao,struct book *head_book);struct book *Search_Book_name (char *b_name,struct book *head_book);struct book *Search_Book_price (double price_h,double price_l,struct book *head_book);struct book *Insert_Book (struct book *head_book,struct book *stud_book) ;/*增加图书,逐个添加*/struct book *Delete_Book(struct book *head_book,int bianhao);/*删除图书*/struct club *Create_New_Club() ;struct club *Search_Club_xuehao(int xuehao,struct club *head_club);struct club *Search_Club_name (char *c_name,struct club *head_club);struct club *Insert_Club (struct club *head_club,struct club *stud_club);struct club *Delete_Club (struct club *head_club,int xuehao);struct book *Lent_Book (int bianhao ,int xuehao,struct book *head_book,struct club *head_club);struct book *back (int bianhao,int xuehao,struct book *head_book,struct club *head_club); int main(){struct book *head_book,*p_book;char book_name [30],name [20],author [20],sex [10];int bianhao;double price,price_h,price_l;int size_book=sizeof(struct book);int m=1,n=1,f;char *b_name,*c_name;struct club *head_club,*p_club;int xuehao;int size_club=sizeof (struct club) ;int choice;printf ("\n 欢迎您第一次进入图书管理系统!\n\n");printf("---——>[向导]————-〉[新建图书库] \n\n”) ;printf ("注意:当输入图书编号为0 时,进入下一步.\n\n");head_book=Create_New_Book();system(”cls”) ;printf("\n 欢迎您第一次进入图书管理系统!\n\n") ;printf("----—〉[向导]——---〉[新建会员库]\n\n”);printf(”注意:当输入会员学号为0 时,进入主菜单.\n\n”);head_club=Create_New_Club () ;system (”cls”);do {printf(”\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n”);printf("\n”);printf ("\t\t\t[1] :借书办理\t");printf(" [6]:还书办理\n”);printf (”\n");printf(”\t\t\t[2]:查询图书\t");printf(" [7]:查询会员\n”);printf (” \t\t\t[3]:添加图书\t");printf (" [8]:添加会员\n”);printf ("\t\t\t[4]:删除图书\t");printf (” [9] :删除会员\n") ;printf (” \t\t\t[5]:遍历图书\t");printf (” [10]:遍历会员\n\n”) ;printf ("\t\t\t〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n”);printf("\t\t\t0:退出\n\n”) ;printf(”请选择〈0~10〉:”);scanf(”%d",&choice);switch(choice) {case 1:printf ("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");printf (”输入所借图书编号:\n");scanf (”%d",&bianhao);printf ("输入借书人的学号:\n”);scanf ("%d",&xuehao);head_book=Lent_Book(bianhao,xuehao,head_book,head_club);system (”cls");printf (” \n 借阅成功!\n\n");printf (”相关信息如下:\n\n");head_book=Search_Book_bianhao (bianhao,head_book);break;case 2:system ("cls”) ;printf(”\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n”); printf ("1。
c语言图书馆管理系统(codeblocks版)
printf("\t--------PASS: %40s--------\n", p1->pass);
printf("\t--------LEVEL:%40d--------\n", p1->level);
/*
*图书馆管理系统
*@author琴卓
*@time 2015-12-10
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<windows.h>
#define PASS_LEN 20 //密码长度
int lendsum;
struct user *next;
}user;
//用户结构体简写为bokk
typedef struct book {
char name[20];
char author[20];
char publish[20];
char year[10];
char ISBN[40];
char state[10];
char choice;
//程序入口
void main()
{
system("color 8b");
system("mode con cols=100 lines=50");
printf("\t\t\t图书馆系统细则:\n\t\t1.新用户注册由系统管理员操作\n\t\t2.图书由图书管理员负责\n\t\t3.普通用户最多借3本书为期30天,可续借一次,\n\t\t超期不换将每天扣除0.1元,超过10元账户将冻\n\t\t结,届时无法完成登录,需要找系统管理员解冻\n\t\t4.密码输入支持退格,访问级别1代表普通用户\n\t\t5.单项数据输入不支持空格\n\t\t6.程序每关闭开启一次经过6天\n");
c语言实习报告 图书信息管理系统
C语言课程设计院系:工程学院姓名:王保成学号:20111000341 班号:051113指导教师:日期:一、需求分析:1、图书管理信息包括:登录号,书名,作者号,分类号,出版单位,出版时间,价格等。
设计图书管理系统。
2、程序的系统功能:(1)、系统以菜单方式工作;(2)、图书信息录入功能;(3)、图书信息浏览功能;(4)、图书信息查询功能;(5)、图书信息删除与修改。
3、测试数据(后附)。
二、概要设计:1:本系统包括两个抽象数据:图书库链表和借书者链表。
(1)定义图书链表类型为:ADT Abook数据对象 D={bi|bi=Booktype,i=1……n n>=o}数据关系 R={<bi-1,bi>|(bi-1,bi)=D,i=2……n}基本操作:Insert(n)操作结果:建立一个长度为n的链表或插入n个新结点。
Del(n)操作结果:从已建立链表中删除n个结点。
Print( )操作结果:输出已建立链表。
Search( )操作结果:按要求查找并输出已建立链表中的结点。
Borrow( )操作结果:按要求改变已建立链表中某一结点的相关信息。
return( )操作结果:按要求改变已建立链表中某一结点的相关信息。
(2)定义图书链表类型为:ADT Aborrow数据对象 D={ri|ri|borrowtype,i=1……n n>=1}数据关系 R={<ri-1,ri>|ri-1,ri=D,i=2……n}基本操作:creat(n)操作结果:建立一个长度为n的链表。
Insert(n)操作结果:插入n个新结点到已建立链表中。
Remove(n)操作结果:从已建立链表中删除n个结点。
2:主程序的流程:1选择系统(1)、录入图书信息(2)、浏览图书信息(3)、图书信息查询功能:1按登录号查询2按书名查询3按作者名查询4按分类号查询5按出版单位查询6按价格查询(4)、图书信息删除与修改1删除2修改(0)、返回三、详细设计:图书信息管理系统 图书信息录入 图书信息浏览 图书信息查询 返回图书信息删除与修改按书名查找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];四、调试分析1在最初进行模块划分是未将借书人信息管理作为一个单独摸块,致使调试时无法明确管理结借书者信息,造成书目链表混乱,重新分配后解决了这个问题2 原先想进行中文书名及人命输入输出,但由于未能找到相关信息资料,无法完成该操作,最终放弃该设计3 最初我们曾规定了一些变量以及结构体,但随着设计的进行深化,最初的结构体及变量无法满足需要,致使调试时出现不少混乱,后来我们重新规定了一下,解决了这些问题;4 程序的串联我们采取了循环控制与选择结构相结合的结构很好地解决了系统长时间运行及循环执行命令的问题,使演示系统现实化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(3)图书信息浏览功能(4)图书信息查询功能(5)图书信息的删除与修改功能二、【各功能模块】1、菜单模块《1》、主函数:建立menu( )函数将主函数功能提取出来,主函数main调用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.h>#include<stdlib.h>#include<string.h>#include<conio.h>void menu();#define N 3typedef struct system{long num;char name[20];char writer[10];char sort[10];char publisher[20];long time;float price;}BOOK;注:定义的BOOK结构体N为限定的录入图书个数(可依据不同要求变化范围)long num为定义的登录号(长整形变量)char name[20]为定义的书名的数组char writer[10]为定义的作者的数组char sort[10]定义的分类号数组char publisher[20]定义的出版单位数组long time定义的出版时间长整形变量float price价格为浮点型变量。
《2》、【数据存储】整个程序没有利用保存save函数,而是利用txt.txt \ tab.txt 两个文件录入存取数据信息,并通过文件的读取、写入进行图书信息的修改/删除等功能。
(fopen fwrite fread 写入及读取数据进行存储)。
《3》【图书信息录入】图书录入流程图【程序】void input() /*定义录入函数*/{int i;BOOK a;FILE *fp;if((fp=fopen("txt.txt","w"))==NULL){printf("error!\n");exit(0);}for(i=1;i<=N;i++){printf("\t请输入您所需书籍的登陆号:");scanf("%ld",&a.num);printf("\t请输入书名:");scanf("%s",);printf("\t请输入作者名:");scanf("%s",a.writer);printf("\t请输入分类号:");scanf("%s",a.sort);printf("\t请输入出版单位:");scanf("%s",a.publisher);printf("\t请输入出版时间:");scanf("%ld",&a.time);printf("\t请输入该书的价格:");scanf("%f",&a.price);fwrite(&a,sizeof(BOOK),1,fp);}fclose(fp);}《4》【图书信息浏览】该模块的功能是显示所有录入的图书信息,流程图如下:图书浏览流程【程序】void list() /*定义浏览函数*/{BOOK a;FILE *fp;if((fp=fopen("txt.txt","r"))==NULL){printf("error!\n");exit(0);}printf("\n\n\n\n\n\n\n\n\n登陆号\t书名\t作者名\t分类号\t出版单位\t 出版时间\t价格\n\n");while(fread(&a,sizeof(BOOK),1,fp)!=0)printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",a.num,,a.writer,a.sort,a.publisher,a.time,a.price);fclose(fp);printf("\n\t press any key to continue...");getch();}《5》【图书信息查询】[需求分析]用户需要查找的图书,调用函数:1、按书名查找 search_by_name2、按作者名查找 search_by_write,两种方式进行查询。
输入查询方式,进入功能选项,1、首先打开源文件txt.txt ,则按照输入书名进行for 循环查找,若查到则显示图书信息。
若无,则显示“file open error!!”。
按任意键结束。
2、与1、流程相同,按照作者名查询。
查询功能流程图【程序】void search() /*定义查询函数*/{int a;printf("\t\t******************************\n");printf("开始查询\n");printf("\t\t\t1---------------按书名查询\n");printf("\t\t\t2---------------按作者名查询\n");printf("\t\t\t0---------------exit\n");printf("\t\t******************************\n") ;printf("\t\t请选择你想要的查询方式:");scanf("%d",&a);switch(a){case 1:search_by_name();break;case 2:search_by_writer();break;case 0:return;}}void search_by_name() /*定义按书名查询*/{FILE *fp;int i;BOOK b[N];char s2[20];fp=fopen("txt.txt","r");if(fp==NULL){printf("file open error!!\n");exit(0);}for(i=0;i<N&&fp!=NULL;i++)//shanchufread(&b[i],sizeof(BOOK),1,fp);printf("请输入要查询的书名: ");scanf("%s",s2);for(i=0;i<N;i++){if(strcmp(s2,b[i].name)==0){printf("书号书名作者种类出版商出版日期价格 \n");printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",b[i].num,b[i].name, b[i].writer,b[i].sort,b[i].publisher,b[i].time,b[i].price);}fclose(fp);}}void search_by_writer() /*定义按作者名查询*/{int i;FILE *fp;BOOK b[N];char s3[20];fp=fopen("txt.txt","r");if(fp==NULL){printf("file open error!!\n");exit(0);}for(i=0;i<N;i++)fread(&b[i],sizeof(BOOK),1,fp);printf("请输入要查询的书的作者: ");scanf("%20s",s3);for(i=0;i<N;i++)if(strcmp(s3,b[i].writer)==0){printf("书号书名作者种类出版商出版日期价格 \n");printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",&b[i].num,b[i].name,b[i].writer,&b[i].sort,b[i].publisher,&b[i].time,&b[i].price);}fclose(fp);}《6》【图书信息删除】[需求分析]该模块功能是,先输入需要删除的图登陆号,打开存储文件for循环查找该图书信息,然后利用b[k]=b[k+1]语句进行删除,即将要删除的一列用后一列进行替换完成删除功能,最后将改后的信息在写入结构体存入文件,关闭文件夹。