图书管理系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书管理系统 Prepared on 22 November 2020

C语言程序设计

图书管理系统

学生:

专业:电子信息科学与技术

学号:

指导老师:

设计要求

课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。通常,课程设计中的问题比平时的习题复杂得多,也更接近实际。课程设计着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。

题目:图书销售管理系统设计

图书信息包括:序号、书名、作者、出版单位、价格。

试设计一图书销售管理系统,使之能提供以下功能:

1、系统以菜单方式工作

2、图书信息录入功能(图书信息用文件保存)--输入

3、图书信息的删除与修改功能

4、图书信息浏览功能--输出

5、查询功能--算法:按书名/作者查询

6、排序功能--算法

按书名排序

按价格排序

1、独立完成

2、需随程序设计与实现完成一份描述该过程的报告,供考核时参考。

考核方式:

上机面试。在完成程序和文档后,根据题目要求和同学自行完成的文档,可能考核设计思路、代码分析、修改代码、增加功能、跟踪调试等各方面。

设计思路

1.主目录

2.录入

3.图书查询目录

4.排序查询

序号排序查询:

价格排序查询:

5.自定义查询

6.全部查询

7.修改

8.删除

9.替换

9.购买

设计思路

1.录入:

INSERT()函数,因为录入的数据最后要保存进文件中,以供查询、购买等功能的使用,所以在文件已开始if判断语句打开文件a,打开文件也就定义了指针的位置。其次输入信息,写代码时我发现,如果使用scanf()函数,每次在输入一个整形或字符时,总会因为敲了一个回车而提前进入下一行代码,影响正常输入。于是,我在前面加了一个ch=getchar();以接收回车符。

当输入完信息后,使用fwrite();函数将之前已经赋值的结构体变量存入a文件,并用fclose ();关闭文件,防止文件内容被篡改。

在最后加一个switch分支语句以判断是否循环退出,当输入字符‘y’后,自动重复调用INSERT();,否则调用MAINMENU()退到主目录。

2.按功能查询:

在按序号(价格)查询时,首先依然是打开之前已经写入要查询内容的文件,然后通过输入要查询的字符串或整形变量与文件内容比较,如果一致则打印输出此数组的其他结构体成员。具体的比较我使用的是字符串比较函数strcmp(char a[20],char b[20]);或利用if(“int a==int b”)判断整形变量的相等。如果相等则输出结构体变量的其他成员,否则进入下一循环。这里的循环用for()实现,有几个变量就比较几次(包括和自己比较)。

3.排序:

对于排序,有很多种方法,这里我用的是比较简单的冒泡法。冒泡法的原理:首先做一个内循环,将数组的第一个值与后面的值分别比较,如果前者小于后者(降序)则交换两值的位置。

然后是外循环,由for实现第二、第三个值分别与其后面的值比较。最后循环结束后得到交换赋值后的结构体变量,并打印输出。一般的,外层循环的次数是字符数的n-1次,内循环每次循环是起始比较值后面剩下的字符数。同样的,字符串我用strcmp(char a[20],char b[20]),整型变量用‘==’。

4.修改:

修改功能其实是查询函数SEARCH();和录入函数INSERT();的使用。首先还是打开文件,然后,利用scanf();接收要修改的数组的任意一个变量,用strcmp();和‘==’比较是否相符,同样这里要使用for()让输入的变量于每一个数组的相同的类型变量进行比较。若符合则开始进入录入函数给选择的结构体变量分别赋值。

5.删除:

如果是全部删除,则给每一个录入的变量赋空值即可。若是单项删除,首先查询要删除数组的其中一个结构体变量(同修改),如果符合,则赋空值即可。我用的是复制覆盖的方法,即后从要删除的数组后一个数组开始,分别向前移动一位,这里可以用strcpy(char a[20],char b[20]);字符串复制函数,在这里b把值赋给a,但不改变b的值。

6.购买:

购买功能是前面所有功能的综合。先输入要购买的书的一个关键变量,然后与录入的图书信息比较,如果相符则打印出来。此时也可以在定义一个结构体变量,用来存放购买图书所要使用的信息。

源代码:

#include<>

#include<>

#include<>

#include<>

void MAINMENU();

void INSERT();

void WRITEINFILE();

void READFROMFILE(); void SEARCHLIST();

void SORTLIST();

void LISTBYBNO();

void LISTBYPRICE();

void SORTBYBNO();

void SORTBYNAME();

void DIYSEARCH();

void SCAN();

void SEARCHBYBNO();

void SEARCHBYNAME(); void MODIFY();

void DELETELIST();

void DELETEALL();

void DELETEBYBNO();

void ENCHANGELIST(); void ENCHANGEBYBNO(); void ENCHANGEBYNAME(); void BUYLIST();

void BUY();

void EXIT();

#define N 1000

struct BOOK

{

int bno;

char name[20];

char edition[20];

char author[20];

float price;

int storage;

}book[N];

FILE *fp;

char filename[20];

上面是头文件~

相关文档
最新文档