c语言课程设计-图书管理系统_第1页
c语言课程设计-图书管理系统_第2页
c语言课程设计-图书管理系统_第3页
c语言课程设计-图书管理系统_第4页
c语言课程设计-图书管理系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计报告图书信息管理系统设计专业 计应 班级 3 学号 姓名 陈金 指导老师 杨有安C 语言程序设计1、题目要求设计“图书信息管理系统”要求:图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。使之提供以下功能:(1) 系统以菜单方式工作。(2) 管理员登入系统。(3) 图书信息录入功能。(图书信息用文件保存)。(4) 图书信息浏览功能。(5) 图书信息(按作者,按书名查)(6) 图书信息查询功能的删除和修改。2、分析:根据题目要求,应当把图书信息和管理员信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一

2、个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。3、总体设计: 一、根据题目要求,可以将系统分为六个模块:(1) 管理员登录系统模块。(2) 菜单选择模块。(3) 图书信息录入功能模块。(4) 图书信息浏览功能。(5) 图书信息查询功能。(6) 图书信息的删除和修改。 二、功能模块图管理员登录系统模块菜单选择模块。菜单选择模块。菜单选择模块。菜单菜单选择模块。(1) 择模块。图书信息录入功能模块图书信息浏览功能模块图书信息查询功能模块图书信息的删除和修改图书信

3、息管理系统三、程序结构head head users User ,up, mgstruct users管理员账户、密码书1struct *next书1的各项图书信息struct tsxt_list char bookname20; char chubanshe20; char cbtime15; char loginnum10; float price; char fenleihao10; struct tsxt_list * next; ;书2struct *next书2的各项图书信息 /*图书信息结构体*/ 管理员结构体 struct users Char Name20; char ps8

4、; user,up,mg; 书2的各项图书信息书3struct *next 书nstruct *next 书2的各项图书信息null四、程序调用图主函数main函数cijiemian登入菜单界面函数loginmanager登入系统账户密码不匹配匹配函数 zujiemian进入图书信息管理系统菜单选择错误查寻2、图书浏览1、图书录入图书浏览图书信息修改按作者按书名四、各个函数所实现的功能cijimian -次界面菜单creat_Books_doc-增加图书节点DeleteDoc -删除图书Info_changw-改变图书信息insertDoc-录入图书loginmanager- 管理员登陆pri

5、nt_book_Doc- 打印图书save - 保存图书search- 查询界面search_author_name- 按作者查search_book_name- 按书名查4、详细设计:头函数名:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<conio.h>/*图书信息结构体*/*包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等*/struct tsxt_list char bookname20; char chu

6、banshe20; char cbtime15; char loginnum10; float price; char fenleihao10; struct tsxt_list * next; ; struct users /管理员结构体 char Name20; /管理员账户 char ps8; / 用户密码 user,up,mg; /userN为文件保存的管理员信息,up为键盘输入管理员信息,mg为管理员结构体变量。一管理员登入:/*管理员登录函数*/void loginmanager()FILE * fp=NULL; /定义文件指针 char DataFile20="mana

7、ger.txt"/存储管理员信息的文件名 int i=0,j=1; char relogin; /是否重新登录 int success=0; /登录成功的标志 printf("n-管理员登录-n"); fp=fopen(DataFile,"r");if(fp=NULL) /如果当前文件不存在,初始化根账户为gary,密码为313 printf("首次使用该系统!n");printf("管理员账户为:gary 密码为:313n");fp=fopen(DataFile,"a"); /以追加

8、方式打开文件strcpy(user.Name,"gary");strcpy(user.ps,"313"); fwrite(&user,sizeof(user),1,fp); fclose(fp);elsefclose(fp);again: printf("请输入管理员账户:"); scanf("%s",up.Name); /输入用户名 up.Name19='0' printf("请输入管理员密码:"); fflush(stdin);for(i=0;i<7;i+) /

9、输入密码,以*在屏幕显示 up.psi=getch(); up.psi+1='0' /字符要以'0'结尾 if(up.psi='b')i-; up.psi='0' /清除前一个字符 i-; /接收前一个字符 printf("b "); printf("b"); continue;if(up.psi='r') up.psi='0' break; printf("*"); fp=fopen(DataFile,"rt"); i

10、f(fp=NULL) / 打开文件失败时提示 printf("n打开 %s 失败!按任意键结束程序n",DataFile); perror("Open file fail"); getchar(); return; if(fp=fopen("manager.txt","r")=NULL)/打开文件,并判断是否出错 printf("n出错,请检查文件是否存在,按任意键返回主菜单n");elsefread(&mg,sizeof(struct users),1,fp);/从文件中读取信息 fc

11、lose(fp);if(strcmp(mg.Name,up.Name)=0&&strcmp(mg.ps,up.ps)=0) success=1; if(success=1) printf("n登录成功,按任意键进入图书管理系统菜单系统!n"); getchar(); zujiemian(); else fflush(stdin); /清除输入缓冲区中的字符 printf("n用户名或密码错误!重新输入请按y,退出请按n:n"); relogin=getchar(); if(relogin='y'|relogin='

12、Y') getchar(); goto again; else cijiemian(); exit(0); 登入流程图 开始输入管理员帐号和密码输入正确与否进入功能菜单页面结束N 二、来到功能菜单页面void search_author_name(struct tsxt_list *head);void search_book_name(struct tsxt_list * head);struct tsxt_list * Create_Books_Doc() /*新增图书*/ struct tsxt_list * head; head=(struct tsxt_list *)mall

13、oc(sizeof(struct tsxt_list); head->next=NULL; return head;void save(struct tsxt_list * head) /*保存图书 */ struct tsxt_list *p; FILE *fp; p=head; fp=fopen("data.txt","w+");fprintf(fp," n"); fprintf(fp," 登录号书名 作 者 出版单位出版时间分类号 价格 n"); fprintf(fp," n");w

14、hile(p->next!= NULL) p=p->next; fprintf(fp,"%-6.6%-10.10s%-10.10s%-10.10s%-12.12s%-6.6s%.2fn",p->loginnum,p->bookname,p->author,p->chubanshe,p->cbtime,p->fenleihao,p->price); fprintf(fp," n"); fclose(fp); printf(" 已将图书数据保存n"); void InsertDoc(s

15、truct tsxt_list *head) /*添加图书*/ struct tsxt_list *s, *p; char flag='Y' p=head; while(p->next!= NULL) p=p->next; while(flag='Y'|flag='y') system("cls"); /* *进行清屏 */ s=(struct tsxt_list *)malloc(sizeof(struct tsxt_list); printf("-<-<-<-图书录入-<-&l

16、t;-<"); printf("tttttttttt"); printf("n 请输入图书登陆号(5位):"); fflush(stdin); scanf("%s",s->loginnum); printf("n 请输入图书书名(5位):"); fflush(stdin); scanf("%s",s->bookname); printf("n 请输入图书作者名(4位):"); fflush(stdin); scanf("%s",

17、s->author); printf("n 请输入图书出版社(4位):"); fflush(stdin); scanf("%s",s->chubanshe); printf("n 请输入图书出版时间(9位):"); fflush(stdin); scanf("%s",s->cbtime); printf("n 请输入图书分类号(5位):"); fflush(stdin); scanf("%s",s->fenleihao); printf("n

18、 请输入图书价格(4位):"); fflush(stdin); scanf("%f",&s->price); printf("n"); p->next=s; p=s; s->next=NULL; printf(" 添加成功!"); system("cls"); /* *进行清屏 */ printf("n 继续添加?(Y/N):"); fflush(stdin); scanf("%c",&flag); printf("n&q

19、uot;); if(flag='N'|flag='n') break; else if(flag='Y'|flag='y') continue; save(head); return;void search(struct tsxt_list *head) /* *定义查询函数 */ int a; system("cls"); /* *进行清屏 */ printf("tt*n"); printf("开始查询n"); printf("ttt1 一 按书名查询n&qu

20、ot;); printf("ttt2 一 按作者查询n"); printf("ttt0 一 退出n" ); printf("tt*n" ); printf("tt请选择你想要的枪毙的方式(*_*) 嘻嘻 :"); scanf("%d",&a); switch(a) case 1: search_book_name(head); break; case 2: search_author_name(head); break; case 0: system("cls");

21、/* *进行清屏 */ return; void search_book_name(struct tsxt_list *head)/*按照书名查询*/ struct tsxt_list *p; char temp20; p=head; if(head=NULL | head->next=NULL) printf(" 图书库为空!n"); else printf("请输入您要查找的书名: "); fflush(stdin); scanf("%s",temp); while(p->next!= NULL) p=p->ne

22、xt; if(strcmp(p->bookname,temp)=0) printf("n图书已找到!n"); printf("n"); printf("登录号: %stn",p->loginnum); printf("书名: %stn",p->bookname); printf("作者名: %stn",p->author); printf("出版单位: %stn",p->chubanshe); printf("出版时间: %stn&qu

23、ot;,p->cbtime); printf("分类号: %stn",p->fenleihao); printf("价格: %.2ftn",p->price); if(p->next=NULL) printf("n查询完毕!n"); return; void search_author_name(struct tsxt_list *head) /*按照作者查询*/ struct tsxt_list *p; char t20; p=head; if(head=NULL|head->next=NULL) pr

24、intf(" 图书库为空! n"); else printf("请输入您要查找的作者名:"); fflush(stdin);scanf("%s",t); while(p->next!=NULL) p=p->next; if(strcmp(p->author,t)=0) printf("n*图书已找到!*n"); printf("n"); printf("*登入号:%stn",p->loginnum); printf("n"); pr

25、intf("*书名:%stn",p->bookname); printf("n"); printf("*作者名:%stn",p->author); printf("n"); printf("*出版单位:%stn",p->chubanshe); printf("n"); printf("*出版时间:%stn",p->cbtime); printf("n"); printf("*分类号:%stn"

26、,p->fenleihao); printf("n"); printf("*价格:%.2ftn",p->price); if(p->next=NULL) printf("查询完毕!"); printf("n"); printf("n"); return; void Print_Book_Doc(struct tsxt_list * head) /*打印图书信息*/ struct tsxt_list *p; if(head=NULL | head->next=NULL) p

27、rintf("n 没有图书记录! nn"); return; p=head; printf(" n"); printf(" 登录号书 名 作 者出版单位| 出版时间分类号价格n"); printf(" n"); while(p->next!= NULL) p=p->next; printf("%-6.6s%-10.10s%-8.8s%-9.8s %-12.12s%-6.5s%.2fn",p->loginnum,p->bookname,p->author,p->

28、chubanshe,p->cbtime,p->fenleihao,p->price); printf(" n"); printf("n"); void info_change(struct tsxt_list * head) /*修改图书信息*/ struct tsxt_list * p; int panduan=0; char temp20; p=head; system("cls"); /*进行清屏*/ printf("请输入要修改的书名:"); scanf("%s",te

29、mp); while(p->next!= NULL) p=p->next; if(strcmp(p->bookname,temp)=0) printf("n 请输入图书登陆卡号:"); fflush(stdin); scanf("%s",p->loginnum); printf("n 请输入图书书名:"); fflush(stdin); scanf("%s",p->bookname); printf("n 请输入图书作者名:"); fflush(stdin); sc

30、anf("%s",p->author); printf("n 请输入图书出版社:"); fflush(stdin); scanf("%s",p->chubanshe); printf("n 请输入图书出版时间:"); fflush(stdin); scanf("%s",p->cbtime); printf("n 请输入图书分类号:"); fflush(stdin); scanf("%s",p->fenleihao); printf(

31、"n 请输入图书价格:"); fflush(stdin); scanf("%f",&p->price); printf("n"); panduan=1; if(panduan=0) system("cls"); /*进行清屏*/ printf("n 没有图书记录! nn"); return; void DeleteDoc(struct tsxt_list * head) /*删除图书*/ struct tsxt_list *s,*p; char temp20; int pandua

32、n; panduan=0; p=s=head; system("cls"); /*进行清屏*/ printf(" 请输入您要删除的书名:"); scanf("%s",temp); while(p!= NULL) if(strcmp(p->bookname,temp)=0) panduan+; break; p=p->next; if(panduan=1) for(;s->next!=p;) s=s->next; s->next=p->next; free(p); printf("n 删除成

33、功! n"); else printf(" 您输入的书目不存在,请确认后输入!n"); return; int zujiemian() /*主界面*/ struct tsxt_list * head; char choice; head=NULL; system("cls"); for(;) printf(" n"); printf(" 一 图书信息管理系统 n"); printf(" n"); printf(" 1图书信息录入 n"); printf("

34、 n"); printf(" 2图书信息浏览 n"); printf(" n"); printf(" 3图书信息查询 n"); printf(" n"); printf(" 4图书信息修改 n"); printf(" n"); printf(" 5图书信息删除 n"); printf(" n"); printf(" 6退出系统 n"); printf(" n"); printf(" 计应<三>班:n"); printf(" -陈金 "); printf(" 请选择菜单序号:"); fflush(stdin); scanf("%c",&choice); if(choice='1') if(head=NULL) head=Create_Books_Doc(); InsertDoc(head); else if(choice='2') Print_Book_Doc(head)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论