高校教材管理系统c语言代码
时间: 2023-07-31 12:12:53 浏览: 138
以下是一个简单的高校教材管理系统的C语言代码示例,仅供参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最大教材数量
#define MAX_USERS 10 // 最大用户数量
#define BOOK_FILE "books.txt" // 教材文件
#define USER_FILE "users.txt" // 用户文件
// 定义教材结构体
typedef struct {
char name[50];
char author[50];
char publisher[50];
int year;
int stock; // 库存
} Book;
// 定义用户结构体
typedef struct {
char username[20];
char password[20];
int role; // 角色,1为管理员,0为普通用户
} User;
// 全局变量
Book books[MAX_BOOKS];
int bookCount = 0;
User users[MAX_USERS];
int userCount = 0;
// 函数声明
void loadBooks(); // 加载教材数据
void saveBooks(); // 保存教材数据
void loadUsers(); // 加载用户数据
void saveUsers(); // 保存用户数据
int findBook(char name[]); // 查找教材
int findUser(char username[]); // 查找用户
void addBook(); // 添加教材
void removeBook(); // 删除教材
void editBook(); // 修改教材信息
void borrowBook(); // 借阅教材
void returnBook(); // 归还教材
void addUser(); // 添加用户
void removeUser(); // 删除用户
void editUser(); // 修改用户信息
void showBooks(); // 显示教材列表
void showUsers(); // 显示用户列表
int main() {
int choice;
char username[20], password[20];
int index;
loadBooks();
loadUsers();
// 用户登录
printf("请输入用户名和密码\n");
printf("用户名:");
scanf("%s", username);
printf("密码:");
scanf("%s", password);
index = findUser(username);
if (index == -1 || strcmp(users[index].password, password) != 0) {
printf("用户名或密码错误\n");
return 0;
}
// 根据用户角色显示不同的菜单
if (users[index].role == 1) { // 管理员
while (1) {
printf("请选择操作:\n");
printf("1. 添加教材\n");
printf("2. 删除教材\n");
printf("3. 修改教材信息\n");
printf("4. 借阅教材\n");
printf("5. 归还教材\n");
printf("6. 添加用户\n");
printf("7. 删除用户\n");
printf("8. 修改用户信息\n");
printf("9. 显示教材列表\n");
printf("10. 显示用户列表\n");
printf("0. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1: addBook(); break;
case 2: removeBook(); break;
case 3: editBook(); break;
case 4: borrowBook(); break;
case 5: returnBook(); break;
case 6: addUser(); break;
case 7: removeUser(); break;
case 8: editUser(); break;
case 9: showBooks(); break;
case 10: showUsers(); break;
case 0: return 0;
default: printf("无效的选择\n");
}
}
} else { // 普通用户
while (1) {
printf("请选择操作:\n");
printf("1. 借阅教材\n");
printf("2. 归还教材\n");
printf("3. 显示教材列表\n");
printf("0. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1: borrowBook(); break;
case 2: returnBook(); break;
case 3: showBooks(); break;
case 0: return 0;
default: printf("无效的选择\n");
}
}
}
return 0;
}
// 加载教材数据
void loadBooks() {
FILE *fp;
fp = fopen(BOOK_FILE, "r");
if (fp == NULL) {
printf("无法打开教材文件\n");
return;
}
while (!feof(fp)) {
fscanf(fp, "%s %s %s %d %d", books[bookCount].name, books[bookCount].author, books[bookCount].publisher, &books[bookCount].year, &books[bookCount].stock);
bookCount++;
}
fclose(fp);
}
// 保存教材数据
void saveBooks() {
FILE *fp;
int i;
fp = fopen(BOOK_FILE, "w");
if (fp == NULL) {
printf("无法打开教材文件\n");
return;
}
for (i = 0; i < bookCount; i++) {
fprintf(fp, "%s %s %s %d %d\n", books[i].name, books[i].author, books[i].publisher, books[i].year, books[i].stock);
}
fclose(fp);
}
// 加载用户数据
void loadUsers() {
FILE *fp;
fp = fopen(USER_FILE, "r");
if (fp == NULL) {
printf("无法打开用户文件\n");
return;
}
while (!feof(fp)) {
fscanf(fp, "%s %s %d", users[userCount].username, users[userCount].password, &users[userCount].role);
userCount++;
}
fclose(fp);
}
// 保存用户数据
void saveUsers() {
FILE *fp;
int i;
fp = fopen(USER_FILE, "w");
if (fp == NULL) {
printf("无法打开用户文件\n");
return;
}
for (i = 0; i < userCount; i++) {
fprintf(fp, "%s %s %d\n", users[i].username, users[i].password, users[i].role);
}
fclose(fp);
}
// 查找教材
int findBook(char name[]) {
int i;
for (i = 0; i < bookCount; i++) {
if (strcmp(books[i].name, name) == 0) {
return i;
}
}
return -1;
}
// 查找用户
int findUser(char username[]) {
int i;
for (i = 0; i < userCount; i++) {
if (strcmp(users[i].username, username) == 0) {
return i;
}
}
return -1;
}
// 添加教材
void addBook() {
Book b;
printf("请输入教材名称:");
scanf("%s", b.name);
printf("请输入作者:");
scanf("%s", b.author);
printf("请输入出版社:");
scanf("%s", b.publisher);
printf("请输入出版年份:");
scanf("%d", &b.year);
printf("请输入库存数量:");
scanf("%d", &b.stock);
books[bookCount] = b;
bookCount++;
saveBooks();
printf("添加成功\n");
}
// 删除教材
void removeBook() {
char name[50];
int index;
printf("请输入教材名称:");
scanf("%s", name);
index = findBook(name);
if (index == -1) {
printf("未找到该教材\n");
return;
}
if (books[index].stock < 0) {
printf("该教材已被借出,无法删除\n");
return;
}
// 删除该教材,将后面的教材前移
for (int i = index; i < bookCount - 1; i++) {
books[i] = books[i + 1];
}
bookCount--;
saveBooks();
printf("删除成功\n");
}
// 修改教材信息
void editBook() {
char name[50];
int index;
printf("请输入教材名称:");
scanf("%s", name);
index = findBook(name);
if (index == -1) {
printf("未找到该教材\n");
return;
}
printf("请输入新的作者:");
scanf("%s", books[index].author);
printf("请输入新的出版社:");
scanf("%s", books[index].publisher);
printf("请输入新的出版年份:");
scanf("%d", &books[index].year);
printf("请输入新的库存数量:");
scanf("%d", &books[index].stock);
saveBooks();
printf("修改成功\n");
}
// 借阅教材
void borrowBook() {
char name[50];
int index;
printf("请输入教材名称:");
scanf("%s", name);
index = findBook(name);
if (index == -1) {
printf("未找到该教材\n");
return;
}
if (books[index].stock <= 0) {
printf("该教材已全部借出,请尝试其他教材\n");
return;
}
books[index].stock--;
saveBooks();
printf("借阅成功\n");
}
// 归还教材
void returnBook() {
char name[50];
int index;
printf("请输入教材名称:");
scanf("%s", name);
index = findBook(name);
if (index == -1) {
printf("未找到该教材\n");
return;
}
books[index].stock++;
saveBooks();
printf("归还成功\n");
}
// 添加用户
void addUser() {
User u;
printf("请输入用户名:");
scanf("%s", u.username);
printf("请输入密码:");
scanf("%s", u.password);
printf("请输入角色(1为管理员,0为普通用户):");
scanf("%d", &u.role);
users[userCount] = u;
userCount++;
saveUsers();
printf("添加成功\n");
}
// 删除用户
void removeUser() {
char username[20];
int index;
printf("请输入用户名:");
scanf("%s", username);
index = findUser(username);
if (index == -1) {
printf("未找到该用户\n");
return;
}
// 删除该用户,将后面的用户前移
for (int i = index; i < userCount - 1; i++) {
users[i] = users[i + 1];
}
userCount--;
saveUsers();
printf("删除成功\n");
}
// 修改用户信息
void editUser() {
char username[20];
int index;
printf("请输入用户名:");
scanf("%s", username);
index = findUser(username);
if (index == -1) {
printf("未找到该用户\n");
return;
}
printf("请输入新的密码:");
scanf("%s", users[index].password);
printf("请输入新的角色(1为管理员,0为普通用户):");
scanf("%d", &users[index].role);
saveUsers();
printf("修改成功\n");
}
// 显示教材列表
void showBooks() {
printf("教材名称\t作者\t出版社\t出版年份\t库存\n");
for (int i = 0; i < bookCount; i++) {
printf("%s\t%s\t%s\t%d\t%d\n", books[i].name, books[i].author, books[i].publisher, books[i].year, books[i].stock);
}
}
// 显示用户列表
void showUsers() {
printf("用户名\t密码\t角色\n");
for (int i = 0; i < userCount; i++) {
printf("%s\t%s\t%d\n", users[i].username, users[i].password, users[i].role);
}
}
```
这是一个简单的示例,实际应用中可能需要更加完善的功能和安全性考虑。
阅读全文