C语言图书信息管理系统

合集下载

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语言程序设计:图书信息管理系统毕业设计

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语言 图书馆信息管理系统

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语言图书管理系统

c语言图书管理系统
rg.h.ah = 0;
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语言-图书信息管理系统

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语言图书信息管理系统

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语言课程设计图书信息管理系统本课程设计的选题是基于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语言程序设计)

图书馆管理系统(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后面的改变的是文本背景色。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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]语句进行删除,即将要删除的一列用后一列进行替换完成删除功能,最后将改后的信息在写入结构体存入文件,关闭文件夹。

相关文档
最新文档