C语言程序设计课设——图书出入库管理系统

图书出入库管理系统

C语言程序设计课设

说是C语言程序设计的课设,实际上和上学期的数构的课设没什么区别,换了个系统而已,也不知道学校老师为啥要多一门这个课设。不过还是有所收获的,会改了很多常见的BUG,还把系统做的有点花里胡哨的(功能多了点)。等以后有空,还想再完善一下这个简易的图书管理系统,毕竟老师给了我一个“界面设计还可以再优化”的建议,而且有些地方还有些小毛病要改正。

系统简介

图书出入库管理系统具体的功能包括:登陆注册、图书入库(管理员专属权限)、图书销售(购物车功能)、查看图书列表及库存情况、添加图书(加入购物车)、删除图书、数据保存、数据备份等功能,如图1所示。两个bk数组的数据分别来自文件book.txt和文件buy.txt,us数组的数据来自文件user.txt,三个数组作为数据基础,所有的功能操作都围绕着这三个数组,影响这三个数组,其数据的变化最终也要分别保存到对应的三个文件中。
基本功能:通过该系统可以进行图书信息显示、图书入库、图书销售、图书查询、图书删除等操作。
可选功能:通过该系统可以进行系统登录身份权限验证,分为普通用户和管理员两种权限身份,不同权限,可使用的功能不同。
添加图书时需要录入以下内容:书名、作者、类型、出版社、书号、价格、库存数量。

代码部分

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <io.h>
#include <conio.h>
#define MAXNUM 100    /*书库中书籍种类可能达到的最大数量*/ 
//账号状态及界面功能标识符,pyth和gly分别表示普通用户和管理员的身份;cklb和gwc分别表示查看列表和购物车的功能 
int ptyh=0,gly=0,cklb=0,gwc=0;   
//创建三个顺序表(书库书籍、购物车书籍、帐号) 
typedef struct       /*书籍定义*/ 
  {
   char bkname[10];  /*书名*/
   char auname[10];	 /*作者*/ 
   char type[5];	 /*类型*/
   char press[21];   /*出版社*/
   int bknum; 	     /*书号*/
   float price;      /*价格*/
   int num;          /*库存数量*/
  } BOOK;
  
typedef struct
{
   
	BOOK bk[MAXNUM];     /*通过类型定义变量,书库书籍信息数组*/ 
	int TotalBook;       /*最后一个元素在数组中的位置,即下标,空表为-1 */ 
}BookList;               /*书籍信息表的顺序存储结构类型为BookList */
 
BookList  book_list;     /*定义书库书籍信息顺序表*/
BookList  book_buy_list; /*定义购物车书籍信息顺序表*/

typedef struct       /*帐号定义*/ 
  {
   char name[10];    /*用户名*/
   char pass[10];	 /*密码*/
   char type[10];    /*类型(管理员/普通用户)*/
  }USER;

typedef struct
{
   
	USER us[MAXNUM];     /*通过类型定义变量,帐号信息数组*/ 
	int TotalUser;       /*最后一个元素在数组中的位置,即下标,空表为-1 */ 
}UserList;               /*帐号信息表的顺序存储结构类型为UserList */

UserList  user_list;     /*定义帐号信息顺序表*/
//创建字符串来存储文本的名称 
char b[10]="book.txt";   
char buy[10]="buy.txt";
char t1[10]="普通用户";
char t2[10]="管理员"; 
//将硬盘帐号信息文件中的数据读入对内存的book_list顺序表中
void ReadData(){
   
	FILE *fp;
	int i;
	if ((fp=fopen("book.txt","rb"))==NULL){
   
	    printf("Can not open the file!\n");return;
	}
	fread(&book_list.TotalBook,sizeof(int),1,fp);
	for(i=0;i<book_list.TotalBook;i++)
	{
   
	    fread(&book_list.bk[i],sizeof(BOOK),1,fp);
	}
	fclose(fp);
}
//将硬盘帐号信息文件中的数据读入对内存的book_buy_list顺序表中
void ReadData_buy(){
   
	FILE *fp;
	int i;
	if ((fp=fopen("buy.txt","rb"))==NULL){
   
	    printf("Can not open the file!\n");return;
	}
	fread(&book_buy_list.TotalBook,sizeof(int),1,fp);
	for(i=0;i<book_buy_list.TotalBook;i++)
	{
   
	    fread(&book_buy_list.bk[i],sizeof(BOOK),1,fp);
	}
	fclose(fp);
}
//将硬盘帐号信息文件中的数据读入对内存的user_list顺序表中
void ReadData_user(){
   
	FILE *fp;
	int i;
	if ((fp=fopen("user.txt","rb"))==NULL)
		{
   printf("Can not open the file!\n");return;}
	fread(&user_list.TotalUser,sizeof(int),1,fp);
	for(i=0;i<user_list.TotalUser;i++)
	{
   
	    fread(&user_list.us[i],sizeof(USER),1,fp);
	}
	fclose(fp);
}
//将内存中三种顺序表的变化,分别存入对应的硬盘文件中
void WriteData(){
   
	FILE *fp;
	if ( (fp=fopen("book.txt","wb"))==NULL){
   
		printf("Can not open the file!\n");return;
		}
	fwrite(&book_list.TotalBook , sizeof(int) , 1 ,fp);
	fwrite(book_list.bk,sizeof(BOOK),book_list.TotalBook,fp);
	fclose(fp);
}
void WriteData_buy(){
   
	FILE *fp;
	if ( (fp=fopen("buy.txt","wb"))==NULL){
   
		printf("Can not open the file!\n");return;
		}
	fwrite(&book_buy_list.TotalBook , sizeof(int) , 1 ,fp);
	fwrite(book_buy_list.bk,sizeof(BOOK),book_buy_list.TotalBook,fp);
	fclose(fp);
}
void WriteData_user(){
   
	FILE *fp;
	int i;
	if ((fp=fopen("user.txt","wb"))==NULL)
	    {
   printf("Can not open the file!\n");return;}
	fwrite(&user_list.TotalUser , sizeof(int) , 1 ,fp
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,C语言程序设计课设图书管理系统主要包括以下功能:图书的录入、删除、查找和导入/导出等。图书的属性包括书号、书名、第一作者、版次、出版社、出版年等信息。 以下是一个简单的C语言程序设计课设图书管理系统的示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 struct Book { char bookId[20]; char title[100]; char author[100]; int edition; char publisher[100]; int year; }; struct Book books[MAX_BOOKS]; int numBooks = 0; void addBook() { if (numBooks >= MAX_BOOKS) { printf("图书库已满,无法添加新书。\n"); return; } struct Book newBook; printf("请输入书号:"); scanf("%s", newBook.bookId); printf("请输入书名:"); scanf("%s", newBook.title); printf("请输入第一作者:"); scanf("%s", newBook.author); printf("请输入版次:"); scanf("%d", &newBook.edition); printf("请输入出版社:"); scanf("%s", newBook.publisher); printf("请输入出版年:"); scanf("%d", &newBook.year); books[numBooks] = newBook; numBooks++; printf("图书添加成功。\n"); } void deleteBook() { char bookId[20]; printf("请输入要删除的书号:"); scanf("%s", bookId); int found = 0; for (int i = 0; i < numBooks; i++) { if (strcmp(books[i].bookId, bookId) == 0) { for (int j = i; j < numBooks - 1; j++) { books[j] = books[j + 1]; } numBooks--; found = 1; break; } } if (found) { printf("图书删除成功。\n"); } else { printf("未找到该书号的图书。\n"); } } void searchBook() { char bookId[20]; printf("请输入要查找的书号:"); scanf("%s", bookId); int found = 0; for (int i = 0; i < numBooks; i++) { if (strcmp(books[i].bookId, bookId) == 0) { printf("书号:%s\n", books[i].bookId); printf("书名:%s\n", books[i].title); printf("第一作者:%s\n", books[i].author); printf("版次:%d\n", books[i].edition); printf("出版社:%s\n", books[i].publisher); printf("出版年:%d\n", books[i].year); found = 1; break; } } if (!found) { printf("未找到该书号的图书。\n"); } } void exportBooks() { FILE *file = fopen("books.txt", "w"); if (file == NULL) { printf("无法打开文件。\n"); return; } for (int i = 0; i < numBooks; i++) { fprintf(file, "%s,%s,%s,%d,%s,%d\n", books[i].bookId, books[i].title, books[i].author, books[i].edition, books[i].publisher, books[i].year); } fclose(file); printf("图书导出成功。\n"); } void importBooks() { FILE *file = fopen("books.txt", "r"); if (file == NULL) { printf("无法打开文件。\n"); return; } numBooks = 0; while (fscanf(file, "%[^,],%[^,],%[^,],%d,%[^,],%d\n", books[numBooks].bookId, books[numBooks].title, books[numBooks].author, &books[numBooks].edition, books[numBooks].publisher, &books[numBooks].year) != EOF) { numBooks++; } fclose(file); printf("图书导入成功。\n"); } int main() { int choice; do { printf("图书管理系统\n"); printf("1. 添加图书\n"); printf("2. 删除图书\n"); printf("3. 查找图书\n"); printf("4. 导出图书\n"); printf("5. 导入图书\n"); printf("0. 退出\n"); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: addBook(); break; case 2: deleteBook(); break; case 3: searchBook(); break; case 4: exportBooks(); break; case 5: importBooks(); break; case 0: printf("感谢使用图书管理系统,再见!\n"); break; default: printf("无效的选择,请重新输入。\n"); break; } } while (choice != 0); return 0; } ``` 这个示例实现了图书管理系统的基本功能,包括添加图书、删除图书、查找图书、导入图书和导出图书等操作。你可以根据需要进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值