C语言---图书销售管理系统(共21页).doc





《C语言---图书销售管理系统(共21页).doc》由会员分享,可在线阅读,更多相关《C语言---图书销售管理系统(共21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上目录专心-专注-专业 图书销售管理系统设计一、 设计要求1. 图书信息包括:序号、书名、作者、出版单位、价格。2. 系统以菜单方式工作。v3. 图书信息录入功能(图书信息用文件保存)输入。v4. 图书信息的删除与修改功能。5. 图书信息浏览功能输出。v6. 查询功能算法:(按书名/作者查询)。7. 排序功能算法:(按书名排序/按价格排序)。8. 图书购买功能:统计选购图书的总价,给出清单,屏幕输出参考以下的实际购书单。二、 总体设计思路1. 主要功能:系统主要包括八个功能模块。1) 图书信息的录入:将所要录入的图书信息包括序号、书名、作者、出版社、价格等录入一个文本文
2、件中。每录入一本书,系统提示是否继续,若不继续,则返回主界面。2) 图书信息的查询:将所有图书信息包括序号、书名、出版社、作者、价格等显示在屏幕上,最后返回主界面。3) 图书信息的查询:通过输入图书名称或作者完成图书信息的查找,并在屏幕上显示,返回主界面。4) 图书信息的修改:通过输入序号,判断此图书是否存在,若不存在则提示用户重新输入图书序号,若存在则要求输入要修改图书的序号,对该图书重新录入信息。录入后,提示是否继续,如不继续,则返回主界面。 5) 图书信息的删除:通过输入序号,判断此图书是否存在,若存在, 则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书序号,删除完毕后,返
3、回主界面。6) 图书信息的排序:通过输入书名或价格,提示用户输入想要使用的排序方式,排序后的信息显示在屏幕上,返回主界面。7) 图书的购买:通过输入要购买的图书序号,计算出总本书和总价格并连同其他购买信息一并显示在屏幕上。8) 退出系统:返回主页面。2. 总体思路框图图书销售管理系统退出系统图书信息排序图书信息删除图书信息修改图书信息查询图书购买清单图书信息浏览图书信息录入图1. 总体思路框图三、 主要参数和函数1. 全局变量1) 定义一个存放图书信息的结构体struct book,并定义此类型的变量struct book listN,用来表示图书数组。struct book /*定义结构体类
4、型*/ int num; /*序号为整型*/ char name40; /*书名为字符串*/ char author20; /*作者为字符串*/ char publish50; /*出版社为字符串*/ float price; /*价格为浮点型*/ ;struct book listN; /*定义struct book类型的变量 list N个*/2) int Count=0,定义全局变量,用来表示图书的个数,初始值为0。2. 主要函数1) 主函数main(),控制整个系统的执行流程,使系统菜单可以循环执行。根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。通过将swi
5、tch语句与break语句联合使用来实现多分支选择结构程序的设计。case1至case7分别实现不同的功能,并能返回主界面;case0直接返回主界面。程序代码:void main() int choice1; printf( *n); printf( * 欢迎进入图书销售管理系统 *n); printf( *n); do printf(#); /*显示菜单*/printf(功能选项: n);printf( 1 : 图书信息录入 n);printf( 2 : 图书信息浏览 n);printf( 3 : 图书信息查询 n);printf( 4 : 图书信息修改 n);printf( 5 : 图书信
6、息删除 n); printf( 6 : 图书信息排序 n); printf( 7 : 图书的购买 n);printf( 0 : 退出系统 n);printf(#);printf(t请选择操作:); scanf(%d, &choice1); switch (choice1) /*菜单选择*/ case 1 : input();break; case 2 : show_bookinformation(list); break ; case 3 : check_bookinformation (list); break ; case 4 : modify_bookinformation (list)
7、; break ; case 5 :delete_bookinformation(list);break ; case 6 :reorder_bookinformation(list);break; case 7 :buytotal(list);break; case 0 :break ; while (choice1!=0); printf(谢谢! 欢迎下次使用使用!n);2) 打开数据文件函数open(),把文件的信息打开到一个结构体数组中。定义指向文件的指针读取数据,若指针指向NULL,则显示“无法操作,无文件信息!”,要调用fopen、fclose和fread函数。程序代码:void
8、open() int i; FILE *fp; if(fp=fopen(book.txt,rb+)=NULL) printf(无法操作,无文件信息!n); exit(0); for(i=0;iN;i+) if(fread(&listi,sizeof(struct book),1,fp)=0) printf(数据输出失败!n); exit(0); fclose(fp);3) 信息录入文件函数read(),函数类型为void。定义指向文件的指针读取数据,把输入的图书信息保存到文件中,若指针指向NULL,则输出无法操作。利用for循环保存信息到指定文件。程序代码:void read() int i;
9、 FILE *fp; if(fp=fopen(book.txt,wr+)=NULL) printf(n不能打开文件!n); exit(0); for(i=0;iN;i+) if(fwrite(&listi,sizeof(struct book),1,fp)!=1) printf(文件写入错误!n); fclose(fp);4) 信息录入系统函数input(),提供录入图书信息功能。在for循环下,一次提示用户输入图书序号、书名、作者、出版社以及价格。每循环一次,提示用户是否继续,当选“1”时继续输入图书信息,选“2”时返回主界面;每循环一次Count自增1。程序代码:void input()
10、int i,k,j,t; for(j=0;listj.num!=0;j+) t=j+1; for(i=t;iN;i+) printf(t请输入您的图书序号:); scanf(t%d,&listi.num); printf(t请输入书名:); scanf(t%s,listi.name); printf(t请输入作者:); scanf(t%s,listi.author); printf(t请输入出版社:); scanf(t%s,listi.publish); printf(t请输入价格:); scanf(t%f,&listi.price); fflush(stdin); printf(tn是否继续
11、录入?(1.是 2.否); scanf(%d,&k); if(k=2) break; Count=i+1; read();5) 删除图书信息函数delete_bookinformation (struct book list),提供对图书信息的删除功能。此函数运行时利用open函数打开数据文件,读取信息;利用for循环,当输入序号与循环中的某一对应数据相同时,将后一个赋值给前一个从而把要删除的图书信息删除掉。如果i=0,则直接输出“图书销售系统没有你要输出的图书信息!”。删除后会显示“删除成功”,同时Count自减1;最后还要执行read函数,重新记录图书信息。程序代码:void delete
12、_bookinformation (struct book list) int j,k,d,i=0; open(); printf(请输入要删除的图书的序号:n); scanf(%d,&d); for(j=0;listj.num!=0;j+) if(listj.num=d) for(k=j;listk.num!=0;k+) listk=listk+1; i+; if(i=0) printf(图书销售系统没有你输入的图书序号,请重新选择输入!n); else Count=Count-1; read(); printf(删除成功n);6) 修改图书信息函数modify_bookinformatio
13、n (struct book list),提供对图书信息的修改功能。首先提示用户输入要修改的图书序号,利用for循环找到要修改的list,系统提示用户依次输入修改后的图书序号、图书名、作者、出版社、价格。如果输入的序号a为0,则提示“未发现您要找的书!”。程序代码:void modify_bookinformation (struct book list) int j,k=0,number; open(); printf(t请输入您要修改的图书的序号:); scanf(%d,&number); for (j=0;listj.num!=0;j+) if (listj.num=number) pr
14、intf(nt请输入您修改后的图书信息:nn); printf(t请输入您要修改的图书的序号:); scanf(%d,&listj.num); printf(t请输入您修改后的书名:); scanf(%s,listj.name); printf(t请输入您修改后的作者名:); scanf(%s,listj.author); printf(t请输入您修改后的出版社:); scanf(%s,listj.publish); printf(t请输入您修改后的书的价格:); scanf(%f,&listj.price); read(); printf(n修改成功!); k+; if (k=0) prin
15、tf(nnt找不到需要修改的图书!);7) 图书信息输出函数show_bookinformation(struct book list),提供图书信息输出功能,浏览图书信息。通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加printf()实现图书信息的循环输出显示。程序代码:void show_bookinformation(struct book list)int i;open();printf(n*图书信息显示*n);printf(图书序号t图书名t作者名t出版社t图书价格n); for(i=0;listi.num!=0;i
16、+) printf( %dtt%st%st%st%6.2fn,listi.num,listi.name, listi.author,listi.publish,listi.price); 8) 图书信息查询函数check_bookinformation (struct book list),提供用户根据图书书名或作者查询图书信息功能。通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加printf()实现图书信息的循环输出显示。通过将switch语句与break语句联合使用来实现多分支选择结构。若选“1”实现按书名查询;若选“2”实
17、现按作者查询。两者代码类似,都利用字符串操作,最后依次显示查询后的结果。程序代码:void check_bookinformation (struct book list) /*查询图书信息*/int j,i,t,k=0;char c20,d20;printf(请输入查询方式:n 1.按书名查询 2按作者查询:n);scanf(%d,&t); if(t=1) open(); printf(请输入要查询的书名号:n); scanf(%s,c); printf(n *你想要查询的图书信息(按作者名)* n); for(j=0;listj.num!=0;j+) if(strcmp(c,listj.n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 销售 管理 系统 21

限制150内