《C语言程序》课程设计_图书管理系统_第1页
《C语言程序》课程设计_图书管理系统_第2页
《C语言程序》课程设计_图书管理系统_第3页
《C语言程序》课程设计_图书管理系统_第4页
《C语言程序》课程设计_图书管理系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序课程设计报告书设计题目: 图书管理系统 专业:软件工程 班级: 3班 学生姓名: 张欣然 学号:20105837 指导教师: 陈莉娜 设计题目图书管理系统主要包括管理图书的库存信息、每一本书的借阅信息以及每一个人的借书信息。每一种图书的库存信息包括编号、书名、作者、出版社、出版日期、金额、类别、总入库数量、当前库存量、已借出本数等。每一本被借阅的书都包括如下信息:编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。每一个人的借书信息包括借书证号、姓名、班级、学号等。系统功能包括以下方面:A、借阅资料管理要求把书籍、期刊、报刊分类管理,这样的话操作会更加灵活和方便,可以随时对其

2、相关资料进行添加、删除、修改、查询等操作。B、借阅管理  (1) 借出操作    (2) 还书操作    (3) 续借处理提示:以上处理需要互相配合以及赔、罚款金额的编辑等操作完成图书借还业务的各种登记。例如:读者还书时不仅更新图书的库存信息,还应该自动计算该书应罚款金额。并显示该读者所有至当日内到期未还书信息。C、读者管理   读者等级:对借阅读者进行分类处理,例如可分为教师和学生两类。并定义每类读者的可借书数量和相关的借阅时间等信息。 读者管理:对读者信息可以录入,并且可对读者进行挂失或注销

3、、查询等服务的作业。D、统计分析      随时可以进行统计分析,以便及时了解当前的借阅情况和相关的资料状态,统计分析包括借阅排行榜、资料状态统计和借阅统计、显示所有至当日内到期未还书信息等功能分析。E 系统参数设置:可以设置相关的罚款金额,最多借阅天数等系统服务器参数。根据题目分析总体作品分为6个模块1. 图书数据2. 借书人信息3. 借书模块4. 还书模块5. 图书管理6. 查询模块第一模块:书号,书名,作者,出版时间,价格,册数,页数。第二模块:姓名,单位,所借书目,借阅时间第三模块:输入书名,编号,借书证第四模块:登记借书号,

4、还书操作,罚款处理第五模块:对书库中的书进行管理,新书入库,旧书删除,书库查询第六模块:书的查询。 数据测试 源代码汉字菜单的编写可参照以下代码:#include "stdio.h". main() char c; int i; do clrscr(); for(i=0;i<80;i+) printf("*"); printf("t 1: add booksn"); printf("t 2: list booksn"); printf("t 3: sreach booksn"); prin

5、tf("t 4: borrow booksn"); printf("t 5: return booksn"); printf(“t6: exitn”) printf("t请选择输入选项123456:n"); do c=getchar(); while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&!=6); getchar(); switch(

6、c) case '1': input(); break; case '2': del(); break; case '3': find(); break; case '4': arrange(); break; case 5: right(); break;case '6': exit(0); printf(" 按任意键返回主菜单:n"); getchar(); clrscr(); while(1); #include <stdio.h>#include <stdlib.h&g

7、t;#include <string.h>#define BORROWED     1#define NOBORROW     0/* 定义图书结构 */struct Book    int   _id;            / 编号,唯一    char _name32;    /

8、图书的名称,不唯一    int   _type;        / 图书的类型,不唯一    int   _status;        / 图书的状态,借出/没有借出    int   _count;        / 图书借出的次数&

9、#160;   struct Book* _next; / 下一本书    struct Book* _prev; / 上一本书;/* 定义图书类型 */typedef struct Book Book;/* 操作的目录提示 */char book_menu32 =    "add books",    "list books",    "search books",  

10、60; "borrow books",    "return books",    "exit",    "",;/* 操作的目录提示1 */char book_menu_sub32 =    "search books by name",    "search books by type",   

11、 "",;/* 添加图书类型,用户信息显示 */char book_types32 =    "type0",    "type1",    "type2",    "",;/* 添加图书状态,用户信息显示 */char book_status32 =    "noborrow",    "

12、;borrowed",    "",;/* 增加图书,id自动排号 */int add_books(Book* head, Book* book_for_add)    Book* p = head;    if (!p)        return -1;    while (p->_next)       &

13、#160;    p = p->_next;    ;    p->_next = book_for_add;    book_for_add->_id = p->_id+1;    book_for_add->_prev = p;    book_for_add->_next = NULL;    book_for_add->_count =

14、0;    book_for_add->_status = 0;    return 0;/* 建立图书管理链表 */Book* create_list(Book* book_head)    if (book_head)            book_head->_prev = book_head;        book

15、_head->_next = NULL;        book_head->_id = 1;        book_head->_count = 0;        book_head->_status = 0;        return book_head;/* 释放链表 */void free_

16、list(Book* book_head)    Book *p, *p1;    p = book_head;    while(p)            p1 = p->_next;        free(p);        p = p1; &

17、#160;  /* 打印图书信息 */void print_book(Book* book)    printf("id:%d, name:%s, type:%s, status:%s, times:%d n",           book->_id, book->_name, book_typesbook->_type,        

18、   book_statusbook->_status, book->_count);/* 列出所有登记的图书 */void list_books(Book* book_head)    Book* p = book_head;    while (p)            print_book(p);        p = p-&g

19、t;_next;    /* 借书,返回该书的指针,否则就返回NULL,可能不存在图书,或者已经被借走了 */Book* borrow_books(Book* book_head, int id)    Book* p = book_head;    while (p)            if (p->_id = id)      

20、60;     break;        p = p->_next;        if (!p)/* 不存在 */        return NULL;    if (p->_status != 0) /* 已经被借走 */        r

21、eturn NULL;    p->_status = 1; /* 借书登记 */    p->_count+;     /* 被借阅次数+1 */    return p;/* 查找书名称,返回查找到的数量,书名可能有重复的,一本书可能也有很多本,但是ID却是唯一的 */int search_books_by_name(Book* book_head, char* name)    int count = 0; 

22、   Book* p = book_head;    while (p)            if (strcmp(p->_name, name) = 0)                    print_book(p);   &

23、#160;        +count;                p = p->_next;        return count;/* 查找书类型,返回查找到的数量,一个类型会有很多书 */int search_books_by_type(Book* book_head, int type)  

24、;  int count = 0;    Book* p = book_head;    while (p)            if (p->_type = type)                    print_book(p);&#

25、160;           +count;                p = p->_next;        return count;/* 还书,正常归还就返回该书的指针,否则就返回NULL */Book* return_books(Book* book_head, int id)&

26、#160;   Book* p = book_head;    while (p)            if (p->_id = id && p->_status != 0)                    p->_status

27、 = 0; /* 还书登记 */            break;                p = p->_next;        return p;/* 打印操作选项 */void print_menu(char menus32)    in

28、t no = 0;    printf("nPLEASE SELECT ID LIKE 1 or 2 .n");    while (strlen(menusno)            printf("%d   t%sn", no+1, menusno);        +no;  &#

29、160;     printf("OPTION(");    while (no)            printf("/%d", no-);        printf("):");/* 主函数 */int main(void)    char key = 0;  

30、  char ss128;    int loop = 1;    Book first_book, *pBooks, *pTmp;    strcpy(first_book._name, "nihao");    first_book._type = 0;    pBooks = create_list(&first_book);    while (loop) &#

31、160;          print_menu(book_menu);        gets(ss);        key = ss0 - 48;        if(key < 0 | key > 6)       &#

32、160;    printf("Error input !n");        else            printf("INPUT:%dn", key);        switch (key)      &#

33、160;         case 1: / add books            pTmp = (Book*)malloc(sizeof(Book);            if(pTmp)         

34、60;                  printf("Add_Book input name:");                gets(ss);         

35、0;      strncpy(pTmp->_name, ss, 31);                print_menu(book_types);                gets(ss);   

36、60;            key = ss0 - 48;                if(key <= 0 | key > (sizeof(book_types)/32) )            &

37、#160;       key = 1;                pTmp->_type = key - 1;                add_books(pBooks, pTmp);   &

38、#160;                    break;        case 2: / list books            list_books(pBooks);     

39、       break;        case 3: / search books            print_menu(book_menu_sub);            gets(ss);    

40、;        key = ss0 - 48;            printf("INPUT:%dn", key);            switch (key)          

41、              case 1: / search books by name                printf("input book name:");           &#

42、160;    gets(ss);                key = search_books_by_name(pBooks, ss);                if(key = 0)      

43、              printf("no found!n");            case 2: / search books by type                pr

44、int_menu(book_types);                gets(ss);                key = ss0 - 48;            &

45、#160;   key = search_books_by_type(pBooks, key-1);                if(key = 0)                    printf("no found!n

46、");            default:                break;                     

47、;   break;        case 4: / borrow books            printf("Borrow books, input book id:");            gets(ss);    

48、;        key = atoi(ss);            pTmp = borrow_books(pBooks, key);            if (!pTmp)          

49、0;     printf("borrow books failed: %dn", key);            else                          &

50、#160; printf("borrow books successful!n");                print_book(pTmp);                        break;        case 5: / return books   

温馨提示

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

评论

0/150

提交评论