c语言图书管理系统源代码

更新时间:2024-01-08 21:02:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计

//******************************************* //图书管理系统v1.0 作者:何星霖 //2016年1月5日

//******************************************* //头文件

#include #include #include #include #include #include

//*********************************************** //结构体

//*********************************************** //时间

typedef struct t { int year; int month; int day; }TIME;

//图书信息

typedef struct book { char no[5]; char name[31]; char author[21]; char publish[25]; char sort[21]; char publish_date[14]; char ISBN[18]; TIME wareroom_date; int jude_borrow; int number_sum; int number_now; float price; char content[201]; struct book * pnext; struct book * pup; }BOOK; //学生信息

typedef struct student_ifo { char name[17];

第 1 页

课程设计

char no[12]; char sex[3]; char ciphercode[17]; float payment; int borrow; struct student_ifo *pnext; struct student_ifo *pup; }STUDENT;

//图书借阅信息 typedef struct libray { char book_no[5]; char student_no[12]; TIME borrow_time; TIME later_time; int judge;//书已还为1,未还为0 struct libray *pnext; }LIBRAY;

//还书信息记录

typedef struct return_ifo { char book_no[5]; char student_no[12]; int days; TIME borrow_time; TIME time; struct return_ifo * pnext; }RETURN;

//学号,编号保存 typedef struct no { char no1[12]; LIBRAY * libray_p; RETURN * return_p; struct no *pnext; }NO; //短消息

typedef struct message { char send_no[12]; char receive_no[12]; char content[201]; TIME send_time; int jude_read;

第 2 页

课程设计

struct message *pnext; struct message *pup; }MESSAGE;

//***************************************

//函数原型声明

//************************************************ //***************************************

//主要函数

//************************************************ void welcome(); int feature(int); int login(int); void exit1(int); int regist(); void load(int); void load1(int);

void admin_student_look(); void admin_student_search(); void admin_student_alter(); void admin_student_delete(); void admin_book_look(); void admin_book_add(); void admin_book_alter(); void admin_book_search(); void admin_book_delete(); void admin_book_borrow(); void admin_book_return(); void admin_book_borrow_s(); void admin_book_return_s(); void admin_message_receive(); void admin_message_send(); void admin_message_all_send(); void admin_message_delete(); void admin_sys_code(); void admin_sys_file(); void user_ifo_borrow(); void user_ifo_look(); void user_ifo_alter(); void user_book_look(); void user_book_search(); void user_book_borrow(); void user_book_return();

第 3 页

课程设计

void user_book_borrow(); void user_message_receive(); void user_message_send(); void user_message_delete();

//***************************************

//辅助函数

//************************************************ int menu(int); int menu11(); int menu12(); int menu13(); int menu14(); int menu15(); int menu21(); int menu22(); int menu23(); int loginmenu();

STUDENT* student_search(char*,int); BOOK * book_no_search(char*); void book_search(char*,int);

void book_borrow(char*,BOOK*); void all_book_look();

void book_search_menu(); LIBRAY* libray_search(char*); void libray_ifo_search(char*,int); void return_ifo_search(char*,int); void book_prn(BOOK*,int); void save(int);

//*************************************** //功能函数

//************************************************ void pause(int); void cls(int); void clear(int);

void code_change(int); int check(char*,int,int); void time_now();

void sum_later_day(LIBRAY*); int sum_money(RETURN*); int check_message(char*);

void color(const unsigned short);

//********************************************* //全局变量

//*********************************************

第 4 页

课程设计

BOOK *book_phead,*book_pend;

STUDENT *student_phead,*student_pend; STUDENT *user_student; LIBRAY *libray_phead;

MESSAGE *message_phead,*message_pend; RETURN *return_phead; NO *no_phead;

char *admin_no={\int year,month,day;

HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); //********************************************* //图书库管理模块

//********************************************* //111图书库总浏览 void admin_book_look() { cls(1);

printf(\?图书库总浏览?\\n\\n\BOOK *q=book_phead->pnext; if(q==NULL) { color(12);

printf(\◆图书库里没有图书◆\\n\\n\ color(9); } else all_book_look(); pause(1); }

//112添加新书

void admin_book_add() { cls(1); printf(\?添加新书?\\n\\n\ BOOK *book_pnew; book_pnew=(BOOK*)malloc(sizeof(BOOK)); while(1) { fflush(stdin); printf(\●编号(4位如0001):\ gets(book_pnew->no); if(check(book_pnew->no,4,4)) break; }

第 5 页

课程设计

if((book_no_search(book_pnew->no))==NULL) { while(1) { fflush(stdin);

printf(\●书名(无空格,最长30字节):\ gets(book_pnew->name); if(check(book_pnew->name,1,30)) break; }

while(1) { fflush(stdin);

printf(\●作者名(无空格,最长20字节):\ gets(book_pnew->author); if(check(book_pnew->author,1,20)) break; }

while(1) { fflush(stdin); printf(\●出版社(无空格,最长24字节):\ gets(book_pnew->publish); if(check(book_pnew->publish,1,24)) break; }

while(1) { fflush(stdin); printf(\●类别(无空格,最长20字节):\ gets(book_pnew->sort); if(check(book_pnew->sort,1,20)) break; }

while(1) { fflush(stdin); printf(\●出版时间(格式:2015/02第1版,最长13字节):\ gets(book_pnew->publish_date); if(check(book_pnew->publish_date,12,13)) break; }

while(1) {

第 6 页

课程设计

fflush(stdin);

printf(\●ISBN(标准ISBN,最长17字节):\ gets(book_pnew->ISBN); if(check(book_pnew->ISBN,13,17)) break; }

while(1) { fflush(stdin);

printf(\●入库数量:\fflush(stdin);

scanf(\if(book_pnew->number_sum>0) break; else { color(12);

printf(\入库数量应该大于0,请重新输入\\n\\n\ color(9); } }

while(1) { printf(\●价格:\ fflush(stdin); scanf(\ if(book_pnew->price>=0) break; else { color(12); printf(\◆价格是非负数,请重新输入◆\\n\\n\ color(9); } }

while(1) { fflush(stdin); printf(\●简介((没有简介则输入无)无空格,最长200字节):\\n\ gets(book_pnew->content); if(check(book_pnew->content,1,200)) break; }

while(1)

第 7 页

课程设计

}

{ fflush(stdin); printf(\●是否可以借出(是按1,否按0):\ scanf(\ if(book_pnew->jude_borrow==0||book_pnew->jude_borrow==1) break; color(12); printf(\◆未知指令??请输入正确的指令◆\\n\\n\ color(9); } book_pnew->number_now=book_pnew->number_sum; book_pnew->wareroom_date.year=year; book_pnew->wareroom_date.month=month; book_pnew->wareroom_date.day=day; book_pnew->jude_borrow=1; book_phead->pnext->pup=book_pnew; book_pnew->pnext=book_phead->pnext; book_pnew->pup=book_phead; book_phead->pnext=book_pnew; cls(1); color(12); printf(\◆添加成功◆\\n\\n\ color(9); printf(\◆请确认信息是否正确?如有错误,返回后到进入修改连接进行修改\\n\\n\ book_prn(book_pnew,1); } else { color(12); printf(\◆你要添加的书已经存在◆\\n\\n\ color(9); free(book_pnew); }

pause(1);

//113图书信息修改 void admin_book_alter() { int n,i,number; float price; char p[202]; BOOK *q; cls(1); printf(\?图书信息修改?\\n\\n\

第 8 页

课程设计

printf(\●输入要修改图书的原始编号(如:0001):\fflush(stdin); scanf(\

q=book_no_search(p); if(q==NULL) { color(12); printf(\◆数据库里没有相关数据,查询无果◆\\n\\n\ color(9); } else {

printf(\?该书的原始信息为:\\n\book_prn(q,1); color(0);

printf(\┏━┯━━━━━━━━━━━┯━┯━━━━━━━━━━━┓\\n\printf(\┃ 1│◎修改编号 │7 │◎修改库存数量 ┃\\n\printf(\┃ 2│◎修改书名 │8 │◎修改类别 ┃\\n\printf(\┃ 3│◎修改作者名 │9 │◎修改简介 ┃\\n\printf(\┃ 4│◎修改出版社 │10│◎修改价格 ┃\\n\printf(\┃ 5│◎修改出版时间 │11│◎是否可以借出 ┃\\n\printf(\┃ 6│◎修改ISBN │0 │◎返回上级菜单 ┃\\n\printf(\┗━┷━━━━━━━━━━━┷━┷━━━━━━━━━━━┛\\n\while(1) { color(10); printf(\●你想修改什么信息:\ fflush(stdin); scanf(\ color(9); fflush(stdin); if(n>=0&&n<=11) { if(n==0) break; switch(n) { case 1:while(1) { while(1) { fflush(stdin); printf(\●编号(4位如0001):\ gets(p);

第 9 页

课程设计

\\n\\n\

if(check(p,4,4)) break; }

if((book_no_search(p))==NULL) break; else printf(\◆你输入的编号已经存在,请重新输入◆

}

break;

case 2: while(1) { fflush(stdin);

printf(\●输入新书名(无空格,最长30字节):\ gets(p); if(check(p,1,30)) break; } break;

case 3: while(1) { fflush(stdin); printf(\●输入新作者名(无空格,最长20字节):\ gets(p); if(check(p,1,20)) break; } break; case 4:while(1) { fflush(stdin); printf(\●输入新出版社(无空格,最长24字节):\ gets(p); if(check(p,1,24)) break; } break; case 8:while(1) { fflush(stdin); printf(\●输入新类别(无空格,最长20字节):\ gets(p); if(check(p,1,20)) break;

第 10 页

课程设计

} break; case 5:while(1) { fflush(stdin);

printf(\●输入新出版时间(格式:2015/02第1版,最长12字

节):\ \\n\\n\

gets(p);

if(check(p,12,12)) break; } break; case 6:while(1) { fflush(stdin); printf(\●输入新ISBN(标准ISBN,最长17字节):\ gets(p); if(check(p,17,17)) break; } break; case 7:while(1) { printf(\●输入新入库数量:\ fflush(stdin); scanf(\ if(number>=q->number_sum-q->number_now) break; else { color(12); printf(\◆库存数量应该大于借出数量,请重新输入◆ color(9); } } break;

case 10:while(1) { printf(\●输入新价格:\ fflush(stdin); scanf(\ if(price>=0) break;

第 11 页

课程设计

else { color(12); printf(\◆价格是非负数,请重新输入◆\\n\\n\ color(9); } } break; case 9:while(1) { fflush(stdin); printf(\●输入新简介((没有简介则输入无)无空格,最长200字节):\\n\ gets(p); if(check(p,1,200)) break; } break; case 11:while(1) { fflush(stdin); printf(\●输入是否可以借出(是按1,否按0):\ scanf(\ if(number==1||number==0) break; color(12); printf(\◆未知指令??请输入正确的指令◆\\n\\n\ color(9); } break; } break; } else { color(12); printf(\◆未知指令??请输入正确的指令◆\\n\\n\ color(9); } } if(n!=0) { color(10); printf(\◆是否确定修改信息?确定按1,放弃按0??\

第 12 页

课程设计

}

fflush(stdin); scanf(\ color(9); if(i==1) { switch(n) { case 1:strcpy(q->no,p);break; case 2:strcpy(q->name,p);break; case 3:strcpy(q->author,p);break; case 4:strcpy(q->publish,p);break; case 5:strcpy(q->publish_date,p);break; case 6:strcpy(q->ISBN,p);break; case 7:q->number_sum=number;break; case 8:strcpy(q->sort,p);break; case 9:strcpy(q->content,p);break; case 10:q->price=price;break; case 11:q->jude_borrow=number;break; } printf(\◆修改成功◆\\n\\n\ } } if(i!=1) printf(\◆你已放弃修改◆\\n\\n\}

pause(1);

//114图书信息查询

void admin_book_search() { cls(1); printf(\?图书信息查询?\\n\\n\ book_search_menu(); pause(1); }

//115图书信息删除

void admin_book_delete() { int n; char p[30]; BOOK *q,*q1,*q2; cls(1); printf(\?图书信息删除?\\n\\n\ printf(\●输入要删除图书的编号(如:0001):\

第 13 页

课程设计

scanf(\

q=book_no_search(p); if(q==NULL) { color(12);

printf(\◆数据库里没有相关数据,查询无果◆\\n\ color(9); } else {

printf(\◆该书的信息为:\\n\book_prn(q,1); color(12);

printf(\◆是否确定删除该书?确定按1,放弃按0??\fflush(stdin); scanf(\color(9); if(n==1) { if(q->number_now!=q->number_sum) { color(12);

printf(\◆该书还有书没有还,请归还完后再删除该图书◆\\n\

color(9); } else { q1=q->pup; q2=q->pnext; q1->pnext=q2; if(q2!=NULL) q2->pup=q1; free(q); printf(\◆删除成功◆\\n\ } } else printf(\◆你已放弃删除◆\\n\ } pause(1); }

//********************************************* //管理员学生信息模块

//*********************************************

第 14 页

课程设计

//121学生信息总浏览 void admin_student_look() { cls(1);

printf(\?学生信息总浏览?\\n\\n\int i=0,n; STUDENT *p;

p=student_phead->pnext;

if(student_phead->pnext==NULL) { color(12); printf(\◆系统里还没有学生注册◆\\n\ color(9); pause(1); } else {

printf(\序号 学号 姓名 性别 借书数量 需交罚金\\n\ while(p!=NULL) { i++; printf(\n\\n\ printf(\ %-11s %-16s %-2s %-8d %-.2f\\n\>borrow,p->payment); p=p->pnext; if(i%5==0) { color(10); printf(\◆是否继续查看下一页(是按1,返回按0)??\ fflush(stdin); scanf(\ color(9); if(n==0) break; printf(\序号 学号 姓名 性别 借书数量 需交罚金\\n\ } } if(p==NULL) {

第 15 页

课程设计

printf(\◆你已经浏览完了全部学生信息◆\\n\ pause(1);

}

}

}

//122学生信息查询

void admin_student_search() { int n; char p[20]; STUDENT *q; cls(1); printf(\?学生信息查询?\\n\\n\

printf(\┏━┯━━━━━━━━━━━┯━┯━━━━━━━━━━━┓\\n\ printf(\┃ 1│◎按姓名查询 │0 │◎返回上级菜单 ┃\\n\ printf(\┃ 2│◎按学号查询 │ │ ┃\\n\ printf(\┗━┷━━━━━━━━━━━┷━┷━━━━━━━━━━━┛\\n\ while(1) { color(10); printf(\●你想根据什么查询:\ fflush(stdin); scanf(\ color(9);

if(n==1||n==2||n==0) { if(n==0) break; switch(n)

{

case 1:printf(\●请输入姓名:\

case 2:printf(\●请输入学(如:11503010210):\ } break; } else { color(12); printf(\◆未知指令??请输入正确的指令◆\\n\ color(9); } } if(n!=0)

第 16 页

课程设计

{

if(q==NULL) { color(12);

printf(\◆数据库里没有相关数据,查询无果◆\\n\ color(9); } else {

printf(\◆根据你输入的信息 查到的结果为:\\n\ printf(\学号 姓名 性别 借书数量 需交罚金\\n\ printf(\ %-16s %-2s %-8d %-.2f\\n\>payment); } } else }

printf(\◆你已放弃查询◆\\n\pause(1);

//123学生信息修改

void admin_student_alter() { int n,i; char p[20]; float m; STUDENT *q; cls(1); printf(\?学生信息修改?\\n\\n\ printf(\●输入要修改信息学生的学号(如:11503010210):\ scanf(\ q=student_search(p,2); if(q==NULL) { color(12);

printf(\◆数据库里没有相关数据,查询无果◆\\n\ color(9); } else { printf(\◆该同学的原始信息为:\\n\ printf(\学号 姓名 性别 借书数量 需交罚金\\n\printf(\ %-16s %-2s %-8d %-.2f\\n\

第 17 页

课程设计

ayment); color(0); printf(\┏━┯━━━━━━━━━━━┯━┯━━━━━━━━━━━┓\\n\ printf(\┃ 1│◎修改姓名 │4 │◎学生交罚金 ┃\\n\ printf(\┃ 2│◎修改学号 │0 │◎返回上级菜单 ┃\\n\ printf(\┃ 3│◎重置密码 │ │ ┃\\n\ printf(\┗━┷━━━━━━━━━━━┷━┷━━━━━━━━━━━┛\\n\ while(1) { color(10);

printf(\●你想修改什么信息:\fflush(stdin); scanf(\color(9);

if(n==1||n==2||n==3||n==4||n==0) { if(n==0) break; switch(n) { case 1:while(1) { fflush(stdin); printf(\●请输入新姓名:\ gets(p); if(check(p,1,20)) break; }break; case 2:while(1) { fflush(stdin); printf(\●请输入新学号(11位):\ gets(p); if(student_search(p,2)==NULL||strcmp(admin_no,p)==0) { if(check(p,11,11)) break; } color(12); printf(\◆你输入的学号已存在,请重新输入◆\\n\ color(9); }break; case 3: printf(\新密码为:123456\\n\ strcpy(p,\

第 18 页

课程设计

break; case 4:while(1) { printf(\●请输入新的罚金:\ fflush(stdin); scanf(\ if(m>=0) break; color(12);

printf(\◆罚金不能为负数,请重新输入◆\\n\color(9);

}break; } break; } else { color(12);

printf(\◆未知指令??请输入正确的指令◆\\n\ color(9); } }

if(n!=0) { color(10); printf(\◆确定修改信息?确定按1,放弃按0??\ fflush(stdin); scanf(\ color(9); if(i==1) { switch(n) { case 1:strcpy(q->name,p);break; case 2:strcpy(q->no,p);break; case 3:strcpy(q->ciphercode,p);break; case 4:q->payment=m;break; } printf(\◆修改成功◆\\n\ } }

if(i!=1)

第 19 页

课程设计

}

printf(\◆你已放弃修改◆\\n\}

pause(1);

//124学生信息删除

void admin_student_delete() { int n; char p[20]; STUDENT *q,*q1,*q2; cls(1); printf(\?学生信息删除?\\n\\n\ printf(\●输入要删除学生的学号(如:11503010210):\ scanf(\ q=student_search(p,2); if(q==NULL) { color(12); printf(\◆数据库里没有相关数据,查询无果◆\\n\ color(9); } else { printf(\◆该同学的信息为:\\n\ printf(\学号 姓名 性别 借书数量 需交罚金\\n\ printf(\ %-16s %-2s %-8d %-.2f\\n\>payment); color(12); printf(\◆是否确定删除该学生的信息?确定按1,放弃按0??\ fflush(stdin); scanf(\ color(9); if(n==1) { if(q->borrow>0) { color(12); printf(\◆该同学还有图书没还,让同学把书还后再删除◆\\n\ color(9); } else if(q->payment>0) { color(12);

第 20 页

课程设计

printf(\◆该同学还有罚金没交,让同学交了罚金后再删除◆\\n\ color(9); } else { q1=q->pup; q2=q->pnext; q1->pnext=q2; if(q2!=NULL) q2->pup=q1; free(q); printf(\◆删除成功◆\\n\ } } else printf(\◆你已放弃删除◆\\n\ } pause(1); }

//********************************************* //管理员短消息模块

//*********************************************

//131收消息

void admin_message_receive() { cls(1); printf(\?收件箱?\\n\\n\ int i=0; MESSAGE *message_p; STUDENT *student_p; message_p=message_phead->pnext; while(message_p!=NULL) { if((strcmp(message_p->receive_no,admin_no))==0) { student_p=student_search(message_p->send_no,2); printf(\●序号:%d\\n\ printf(\发件人ID(学号):%s\\n\ printf(\发件人姓名:%s\\n\ printf(\发送时间:%d/%d/%d\\n\_time.day); printf(\内容:%s\\n\\n\ message_p->jude_read=1;

第 21 页

课程设计

i++; } message_p=message_p->pnext; }

if(i==0) { color(10); printf(\◆你没有收到任何消息◆\\n\ color(9); }

pause(1);

}

//132发消息

void admin_message_send() { cls(1); printf(\?发消息?\\n\\n\ int i;

MESSAGE * message_pnew;

message_pnew=(MESSAGE *)malloc(sizeof(MESSAGE)); while(1) {

printf(\●输入对方ID(学号):\ fflush(stdin); scanf(\ if(check(message_pnew->receive_no,11,11)) break; }

while(1) {

printf(\●内容(注:少于100个中文字包括符号,且不能有空格):\\n fflush(stdin); scanf(\ if(message_pnew->content,1,200) break; }

strcpy(message_pnew->send_no,admin_no); message_pnew->send_time.year=year; message_pnew->send_time.month=month; message_pnew->send_time.day=day; message_pnew->jude_read=0; color(10);

printf(\◆是否发送?(是按1,否按0):\

fflush(stdin);

第 22 页

\ 课程设计

}

scanf(\color(9); if(i!=0) { message_pnew->pup=message_pend; message_pnew->pnext=NULL; message_pend->pnext=message_pnew; message_pend=message_pnew; printf(\◆发送成功◆\\n\} else {

printf(\◆发送失败◆\\n\ free(message_pnew); }

pause(1);

//133删除消息

void admin_message_delete() { cls(1); printf(\?删除消息?\\n\\n\ int i=0,n=0; MESSAGE *message_p,*message_q,*q2; message_p=message_phead->pnext; while(message_p!=NULL) { if((strcmp(message_p->receive_no,admin_no))==0) { printf(\序号:%d\\n\ printf(\发件人学号:%s\\n\ printf(\发送时间:%d/%d/%d\\n\_time.day); printf(\内容:%s\\n\ i++; } message_p=message_p->pnext; } if(i==0) { color(12); printf(\◆你没有收到任何消息◆\\n\ color(9);

第 23 页

课程设计

}

} else { while(1) {

printf(\◆输入你想要删除信息的序号(放弃删除按0):\fflush(stdin); scanf(\if(n==0) break; if(n>0&&n<=i) { i=0; message_p=message_phead->pnext; while(message_p!=NULL) { if((strcmp(message_p->receive_no,admin_no))==0) { i++; if(n==i) break; } message_p=message_p->pnext; } message_q=message_p->pup; q2=message_p->pnext; message_q->pnext=q2; if(q2!=NULL) q2->pup=message_q; free(message_p);

printf(\◆删除成功◆\\n\

break; } else { color(12); printf(\◆未知指令,请重新输入??\\n\ color(9); } } }

if(n!=0) pause(1);

第 24 页

课程设计

//134群发短消息

void admin_message_all_send() { cls(1); printf(\?群发短消息?\\n\\n\int i;

color(10);

printf(\群发短消息是指给所有的学生发送这条信息\\n\ color(9); char a[201]; while(1) {

printf(\●内容(注:少于100个中文字包括符号,且不能有空格):\\n fflush(stdin); gets(a); if(a,1,200) break; }

color(10);

printf(\◆是否发送?(是按1,否按0):\ fflush(stdin); scanf(\ color(9); if(i!=0) { MESSAGE * message_pnew; STUDENT * p=student_phead->pnext; while(p!=NULL) { message_pnew=(MESSAGE *)malloc(sizeof(MESSAGE)); strcpy(message_pnew->send_no,admin_no); strcpy(message_pnew->content,a); strcpy(message_pnew->receive_no,p->no); message_pnew->send_time.year=year; message_pnew->send_time.month=month; message_pnew->send_time.day=day; message_pnew->jude_read=0; message_pnew->pup=message_pend; message_pnew->pnext=NULL; message_pend->pnext=message_pnew; message_pend=message_pnew; p=p->pnext; }

printf(\◆发送成功◆\\n\

第 25 页

\

课程设计

} else { printf(\◆取消发送◆\\n\ } pause(1); }

//********************************************* //图示管理系统设置模块

//********************************************* //141系统文件管理 void admin_sys_file() { cls(1);

printf(\?系统文件管理?\\n\\n\int i,n; color(0);

printf(\┏━┯━━━━━━━━━━━┯━┯━━━━━━━━━━━┓\\n\printf(\┃ 1│◎备份系统文件 │0 │◎返回上级菜单 ┃\\n\printf(\┃ 2│◎启用备份文件 │ │ ┃\\n\printf(\┗━┷━━━━━━━━━━━┷━┷━━━━━━━━━━━┛\\n\while(1) { color(10);

printf(\●请输入指令:\fflush(stdin); scanf(\color(9); if(i==0) break; else if(i==1) { color(10); printf(\◆是否备份系统文件?是按1,放弃按0??\ fflush(stdin); scanf(\ color(9); if(n==1) { save(2); printf(\◆备份成功◆\\n\ } else printf(\◆你已放弃备份系统文件◆\\n\

第 26 页

课程设计

break; }

else if(i==2) { color(12);

printf(\◆启用备份文件是高风险指令,对系统有严重的影响,请管理员慎重决

定。\\n\ printf(\◆系统将录入并保存最近一次保存的备份文件的信息。\\n\ printf(\◆管理员密码将默认为:123456\\n\ printf(\◆是否启用备份文件?是按1,放弃按0??\ fflush(stdin); scanf(\ color(9); if(n==1) { FILE *student_f; FILE *libray_f; FILE *book_f; FILE *message_f; FILE *return_f; FILE *admin_f; admin_f=fopen(\ book_f=fopen(\ student_f=fopen(\ libray_f=fopen(\ message_f=fopen(\ return_f=fopen(\ if(book_f!=NULL&&student_f!=NULL&&libray_f!=NULL&&return_f!=NULL&&message_f!=NULL&&admin_f!=NULL) { clear(1); load(2); load1(2); fprintf(admin_f,\ fclose(admin_f); printf(\启用备份成功\\n\ } else printf(\◆你备份不足文件,启用失败◆\\n\ } else printf(\◆你已放弃启用备份文件◆\\n\ break;

第 27 页

课程设计

} else { color(12);

printf(\◆未知指令??请输入正确的指令◆\\n\

color(9); } } if(i!=0) pause(1); }

//142修改管理员密码 void admin_sys_code() { cls(1); printf(\?修改管理员密码?\\n\\n\ code_change(1); pause(1); }

//********************************************* //借阅信息模块

//*********************************************

//151借书信息总浏览 void admin_book_borrow() { cls(1); printf(\?借书信息总浏览?\\n\\n\ int i=0,n; LIBRAY *p; BOOK *book_p; STUDENT *student_p; p=libray_phead->pnext; while(p!=NULL) { i++; book_p=book_no_search(p->book_no); student_p=student_search(p->student_no,2); printf(\●序号:%d\\n学号:%s\\n学生姓名:%s\\n\ printf(\图书编号:%s\\n图书名:%s\\n\ printf(\借书日期:%d/%d/%d\\n\ printf(\应还书日期:%d/%d/%d\\n\ printf(\是否归还:\

第 28 页

课程设计

}

if(p->judge==1) printf(\是\\n\else printf(\否\\n\p=p->pnext; if(i%5==0) { color(10);

printf(\◆是否继续查看下一页(是按1,返回按0)??\ fflush(stdin); scanf(\ color(9); if(n==0) break; } }

if(p==NULL) { color(10); printf(\◆你已经浏览完了全部借书信息◆\\n\ color(9); pause(1); }

//152借书信息查询

void admin_book_borrow_s() { cls(1); printf(\?借书信息查询?\\n\\n\ int n,i=0; char p[12]; LIBRAY *q; BOOK *book_p; STUDENT *student_p; NO * q1; color(0); printf(\┏━┯━━━━━━━━━━━┯━┯━━━━━━━━━━━┓\\n\ printf(\┃ 1│◎按学号 │4 │◎按借书日期月 ┃\\n\ printf(\┃ 2│◎按书的编码 │5 │◎按借书日期日 ┃\\n\ printf(\┃ 3│◎按是否归还 │0 │◎返回上级菜单 ┃\\n\ printf(\┗━┷━━━━━━━━━━━┷━┷━━━━━━━━━━━┛\\n\ while(1) { color(10);

第 29 页

课程设计

printf(\●你想根据什么查询:\ fflush(stdin); scanf(\ color(9);

if(n>=0&&n<=5) { if(n==0) break; switch(n) {

case 1:printf(\●请输入学

(如:11503010210):\ case 2:printf(\●请输入书的编(如:0001):\ case 3:printf(\●是按1,否按0:\ case 4:printf(\●请输入月份(式:2015/12):\ case 5:printf(\●请输入日期(式:2015/12/25):\ } break; } else { color(12); printf(\◆未知指令??请输入正确的指令◆\\n\ color(9); } }

if(n!=0) { q1=no_phead->pnext; if(q1==NULL) { color(12); printf(\◆数据库里没有相关数据,查询无果◆\\n\ color(9); } else { while(q1!=NULL) { q=q1->libray_p;

i++;

第 30 页

号号

格格

课程设计

book_p=book_no_search(q->book_no); student_p=student_search(q->student_no,2); printf(\●序号:%d\\n学号:%s\\n学生名:%s\\n\ printf(\图书编号:%s\\n图书名:%s\\n\ printf(\借书

期:%d/%d/%d\\n\ printf(\应还书期:%d/%d/%d\\n\ printf(\是否归还:\ if(q->judge==1) printf(\是\\n\ else }

日日

printf(\否\\n\ q1=q1->pnext; if(i%5==0) { color(10); printf(\◆是否继续查看下一页(是按1,返回按0)??\ fflush(stdin); scanf(\ color(9); if(n==0) break; } } q1=NULL; while(no_phead->pnext!=NULL) { q1=no_phead->pnext; no_phead->pnext=q1->pnext; free(q1); q1=NULL; } free(no_phead); pause(1); } } else { printf(\◆你已放弃查询◆\\n\ pause(1); }

第 31 页

课程设计

//153还书信息总浏览 void admin_book_return() { cls(1);

printf(\?还书信息总浏览?\\n\\n\ int i=0,n; RETURN *p; BOOK *book_p; STUDENT *student_p; p=return_phead->pnext; while(p!=NULL) { i++; book_p=book_no_search(p->book_no); student_p=student_search(p->student_no,2); printf(\●序号:%d\\n学号:%s\\n学生姓名:%s\\n\ printf(\图书编号:%s\\n图书名:%s\\n\ printf(\借书日期:%d/%d/%d\\n\ printf(\应还书日期:%d/%d/%d\\n\ printf(\借书天数:%d\\n\ p=p->pnext; if(i%5==0) { color(10); printf(\◆是否继续查看下一页(是按1,返回按0)??\ fflush(stdin); scanf(\ color(9); if(n==0) break; } } if(p==NULL) { color(10); printf(\◆你已经浏览完了全部还书信息◆\\n\ color(9); pause(1); } }

//154还书信息查询

void admin_book_return_s() {

第 32 页

课程设计

cls(1);

printf(\?还书信息总查询?\\n\\n\ int n,i=0; char p[12]; RETURN *q; BOOK *book_p;

STUDENT *student_p; NO * q1; color(0);

printf(\┏━┯━━━━━━━━━━━┯━┯━━━━━━━━━━━┓\\n\ printf(\┃ 1│◎按学号 │4 │◎按借书日期月 ┃\\n\ printf(\┃ 2│◎按书的编码 │5 │◎按借书日期日 ┃\\n\ printf(\┃ 3│◎按是否超期 │0 │◎返回上级菜单 ┃\\n\ printf(\┗━┷━━━━━━━━━━━┷━┷━━━━━━━━━━━┛\\n\ while(1) { color(10); printf(\●你想根据什么查询:\ fflush(stdin); scanf(\ color(9);

if(n>=0&&n<=5) { if(n==0) break; switch(n)

{

case 1:printf(\●请输入学

(如:11503010210):\ case 2:printf(\●请输入书的编(如:0001):\ case 3:printf(\●是按1,否按0:\ case 4:printf(\●请输入月份(式:2015/12):\ case 5:printf(\●请输入日期(式:2015/12/25):\ } break; } else { color(12); printf(\◆未知指令??请输入正确的指令◆\\n\ color(9);

第 33 页

号号

格格

课程设计

} }

if(n!=0) { q1=no_phead->pnext; if(q1==NULL) { color(12);

printf(\◆数据库里没有相关数据,查询无果◆\\n\ color(9); } else { while(q1!=NULL) { q=q1->return_p; i++; book_p=book_no_search(q->book_no); student_p=student_search(q->student_no,2); printf(\●序号:%d\\n学号:%s\\n学生姓名:%s\\n\ printf(\图书编号:%s\\n图书名:%s\\n\ printf(\借书日期:%d/%d/%d\\n\ printf(\应还书日期:%d/%d/%d\\n\ printf(\借书天数:%d\\n\ q1=q1->pnext; if(i%5==0) { color(10);

printf(\◆是否继续查看下一页(是按1,返回按0)??\ fflush(stdin); scanf(\ color(9); if(n==0) break; } }

q1=NULL;

while(no_phead->pnext!=NULL) { q1=no_phead->pnext; no_phead->pnext=q1->pnext; free(q1);

第 34 页

课程设计

q1=NULL; } free(no_phead); } } else printf(\◆你已放弃查询◆\\n\ pause(1); }

//********************************************* //学生个人信息模块

//********************************************* //211借书信息

void user_ifo_borrow() { cls(2);

printf(\?借书信息?\\n\\n\ NO *q1; int i=0; LIBRAY *libray_q; BOOK *book_q; libray_ifo_search(user_student->no,1); q1=no_phead->pnext; if(q1==NULL) { color(12); printf(\◆你没有借书信息◆\\n\ color(9); } else { printf(\序号 书号 书名 借书时间 还时间\\n\ while(q1!=NULL) { libray_q=q1->libray_p; if(libray_q->judge==0) { book_q=book_no_search(libray_q->book_no); printf(\ %-6s \ printf(\ \ printf(\

\

第 35 页

课程设计

printf(\later_time.day); i++; } q1=q1->pnext; } printf(\姓名:%s 学号:%s 已借:%d 可借:%d\\n\ color(10); printf(\温馨提示:每本书的借期为30天,超期后会按0.1元/天收取罚金\\n\ color(9); } q1=NULL; while(no_phead->pnext!=NULL) { q1=no_phead->pnext; no_phead->pnext=q1->pnext; free(q1); q1=NULL; } free(no_phead); pause(2); }

//212浏览个人信息 void user_ifo_look() { cls(2); printf(\?浏览个人信息?\\n\\n\ printf(\学号:%s\\n\ printf(\姓名:%s\\n\ printf(\性别:%s\\n\ printf(\已借书数量:%d\\n\ printf(\可借书数量:%d\\n\ printf(\罚金:%.2f\\n\ if(user_student->payment>0) { color(10); printf(\温馨提示:如果罚金数目到达10元,将无法借书。请尽快到管理处缴费!\\n\ color(9); } pause(2); }

//213修改个人信息

第 36 页

课程设计

void user_ifo_alter() { int n,i; STUDENT *p; p=user_student; cls(2); color(2); printf(\?修改个人信息?\\n\\n\ color(0);

printf(\┏━┯━━━━━━━━━━━┯━┯━━━━━━━━━━━┓\\n\printf(\┃ 1│◎修改姓名 │4 │◎修改性别 ┃\\n\printf(\┃ 2│◎修改学号 │0 │◎返回上级菜单 ┃\\n\printf(\┃ 3│◎修改密码 │ │ ┃\\n\printf(\┗━┷━━━━━━━━━━━┷━┷━━━━━━━━━━━┛\\n\while(1) { color(10);

printf(\●输入你想要修改的信息的序号:\fflush(stdin); scanf(\color(9);

if(n==1||n==2||n==3||n==4||n==0) { if(n==0) break;

printf(\●输入新信息:\\n\switch(n) {

case 1:while(1) { fflush(stdin); printf(\●新姓名:\ gets(p->name); if(check(p->name,1,20)) break; }break; case 2:while(1) { fflush(stdin); printf(\●请输入新学号(11位):\ gets(p->no); if(student_search(p->no,2)==NULL&&strcmp(admin_no,p->no)!=0) { if(check(p->no,11,11))

第 37 页

课程设计

break; } else { color(12);

printf(\◆你输入的学号已存在,请重新输入◆\\n\

color(9); } }break;

case 3:code_change(2);break; case 4:while(1) { fflush(stdin);

printf(\●性别:\ gets(p->sex); if(check(p->sex,1,2)) break; }break; } break; } else { color(12);

printf(\◆未知指令??请输入正确的指令◆\\n\ color(9); } }

if(n!=0) { if(n!=3) { color(10); printf(\◆是否确定修改信息?确定按1,放弃按0??\ fflush(stdin); scanf(\ color(9); if(i==1) { switch(n) { case 1:strcpy(user_student->name,p->name);break; case 2:strcpy(user_student->no,p->no);break; case 4:strcpy(user_student->sex,p->sex);break;

第 38 页

课程设计

}

printf(\◆修改成功◆\\n\ } } } if(i!=1&&i!=3) printf(\◆你已放弃修改◆\\n\ pause(2); }

//********************************************* //学生图书库模块

//********************************************* //221图书库总浏览 void user_book_look() { cls(2); }

printf(\?图书库总浏览?\\n\\n\all_book_look(); pause(2);

//222图书信息查询 void user_book_search() { cls(2);

printf(\?图书信息查询?\\n\\n\ book_search_menu(); pause(2); }

//223借书

void user_book_borrow() { cls(2);

printf(\?借书?\\n\\n\color(12);

if(user_student->borrow>=10)

printf(\◆你借数数量已达上限,如想借新书,请先归还◆\else if(user_student->payment>=10) printf(\◆你的罚金已经超过10元,请先到管理员处交完罚金在借书◆\\n\else { int i; char book_no[6]; BOOK *book_q; LIBRAY *libray_q;

第 39 页

课程设计

color(10);

printf(\●请输入图书编号(如:0001):\scanf(\

book_q=book_no_search(book_no); if(book_q==NULL) { color(12); printf(\◆图书库里没有该书◆\\n\ color(9); } else { libray_q=libray_search(book_no); color(9);

printf(\◆要借的图书信息为:\\n\book_prn(book_q,1); color(12);

if(libray_q!=NULL) printf(\◆你已经借了该书,不能重复借阅◆\\n\else if(book_q->jude_borrow==0)

printf(\◆该书不允许借出◆\\n\else if(book_q->number_now<=0)

printf(\◆该书已被借完,无法再借◆\\n\ else { color(10); printf(\◆是否要借此书?是按1,放弃按0\\n\ fflush(stdin); scanf(\ color(9); if(i==1) book_borrow(book_no,book_q); } } } color(9); pause(2); }

//224还书

void user_book_return() { cls(2); printf(\?还书?\\n\\n\ if(user_student->borrow==0)

第 40 页

课程设计

{ color(12); printf(\◆你没有借任何书籍◆\\n\ color(9); } else { int i,n=0; char book_no[6]; BOOK *book_q; LIBRAY *libray_q; RETURN *return_pnew;

printf(\◆你已借阅的书籍有:\\n\NO *q,*q1;

libray_ifo_search(user_student->no,1); q1=no_phead->pnext;

printf(\序号 书号 书名 借书时间 归还时间\\n\ while(q1!=NULL) { libray_q=q1->libray_p; if(libray_q->judge==0) { book_q=book_no_search(libray_q->book_no); printf(\ %-5s %-30s\ printf(\

\ printf(\later_time.day); n++; } q1=q1->pnext; } q=NULL; while(no_phead->pnext!=NULL) { q=no_phead->pnext; no_phead->pnext=q->pnext; free(q); q=NULL; } free(no_phead); while(1)

第 41 页

课程设计

{

color(10);

printf(\●请输入需要还书的编号(4位必须写全,如0001):\scanf(\color(9);

if(strlen(book_no)==4) break; else { color(12);

printf(\◆你输入的编号不符合要求,请重新输入◆\\n\ color(9); } }

libray_q=libray_search(book_no); printf(\if(libray_q==NULL) { color(12); printf(\◆你没有借这本书,请查正编号后再输◆\\n\ color(9); } else { book_q=book_no_search(book_no);

printf(\◆要还的图书信息为:\\n\printf(\标签 书名 \\n\

printf(\ %s\\n\color(10);

printf(\◆是否要还此书?(是按1,放弃按0):\fflush(stdin); scanf(\color(9); if(i==1) { libray_q->judge=1; return_pnew=(RETURN *)malloc(sizeof(RETURN)); return_pnew->pnext=return_phead->pnext; return_phead->pnext=return_pnew; strcpy(return_pnew->book_no,book_q->no); strcpy(return_pnew->student_no,user_student->no); return_pnew->borrow_time.year=libray_q->borrow_time.year; return_pnew->borrow_time.month=libray_q->borrow_time.month; return_pnew->borrow_time.day=libray_q->borrow_time.day;

第 42 页

课程设计

return_pnew->time.year=year; return_pnew->time.month=month; return_pnew->time.day=day; book_q->number_now++; user_student->borrow--;

int m=sum_money(return_pnew); if(m==1) {

printf(\◆还书成功◆\\n\} else { color(12);

} } else

printf(\◆借书期限超限,需缴纳罚金,请到管理员处缴纳◆\\n\color(9);

printf(\◆还书成功◆\\n\

printf(\◆你已放弃还书◆\\n\ } } pause(2); }

//********************************************* //学生短消息模块

//********************************************* //231收消息

void user_message_receive() { cls(2);

printf(\?收件箱?\\n\\n\int i=0;

MESSAGE *message_p; STUDENT *student_p;

message_p=message_phead->pnext; while(message_p!=NULL) { if((strcmp(message_p->receive_no,user_student->no))==0) { student_p=student_search(message_p->send_no,2); printf(\序号:%d\\n\ printf(\发件人ID(学号):%s\\n\

第 43 页

课程设计

if(strcmp(message_p->send_no,admin_no)==0)

printf(\发件人姓名:管理员\\n\ else printf(\发件人姓名:%s\\n\ printf(\发送时间:%d/%d/%d\\n\_time.day); printf(\内容:%s\\n\ message_p->jude_read=1; i++; } message_p=message_p->pnext; } if(i==0) { color(12); printf(\◆你没有收到任何消息◆\\n\ color(9); } pause(2); }

//232发消息

void user_message_send() { cls(2); printf(\?发消息?\\n\\n\ int i;

MESSAGE * message_pnew;

message_pnew=(MESSAGE *)malloc(sizeof(MESSAGE)); while(1) { printf(\管理员ID为:11111111111\\n\ printf(\●输入对方ID(学号):\ fflush(stdin); gets(message_pnew->receive_no); if(check(message_pnew->receive_no,11,11)) break; }

while(1) { printf(\●内容(注:少于100个中文字包括符号,且不能有空格):\\n scanf(\ if(message_pnew->content,1,200)

break;

第 44 页

\ 课程设计

}

strcpy(message_pnew->send_no,user_student->no); message_pnew->send_time.year=year; message_pnew->send_time.month=month; message_pnew->send_time.day=day; message_pnew->jude_read=0; color(10);

printf(\◆是否发送?(是按1,否按0):\fflush(stdin); scanf(\color(9); if(i!=0) { message_pnew->pup=message_pend; message_pnew->pnext=NULL; message_pend->pnext=message_pnew; message_pend=message_pnew;

printf(\◆发送成功◆\\n\ } else { printf(\◆发送失败◆\\n\ free(message_pnew); } pause(2); }

//233删除消息

void user_message_delete() { cls(2);

printf(\?删除消息?\\n\\n\ int i=0,n=0; MESSAGE *message_p,*message_q,*q2; message_p=message_phead->pnext; while(message_p!=NULL) { if((strcmp(message_p->receive_no,user_student->no))==0) { printf(\●序号:%d\\n\ printf(\发件人学号:%s\\n\ printf(\发送时间:%d/%d/%d\\n\_time.day); printf(\内容:%s\\n\

第 45 页

课程设计

i++; } message_p=message_p->pnext; }

if(i==0) { color(12); printf(\◆你没有收到任何消息◆\\n\ color(9); pause(2); } else { while(1) { color(10);

printf(\◆输入你想要删除信息的序号(放弃删除按0):\fflush(stdin); scanf(\color(9); if(n==0) break; if(n>0&&n<=i) { i=0; message_p=message_phead->pnext; while(message_p!=NULL) { if((strcmp(message_p->receive_no,user_student->no))==0) { i++; if(n==i) break; } message_p=message_p->pnext; } message_q=message_p->pup; q2=message_p->pnext; message_q->pnext=q2; if(q2!=NULL) q2->pup=message_q; free(message_p); printf(\◆删除成功◆\\n\ break;

第 46 页

课程设计

} else { color(12);

printf(\◆未知指令,请重新输入??\\n\

color(9); } } } if(n!=0) pause(2); }

//********************************************* //函数调用

//********************************************* int feature(int port) { int i; while(1) { switch(port) { case -1:; case -2: port=login(port);if(port!=0)load1(1);break; case 0: port=loginmenu();break; case 1:; case 2: port=menu(port);break; case 3: port=regist();break; case 11: port=menu11();break; case 12: port=menu12();break; case 13: port=menu13();break; case 14: port=menu14();break; case 15: port=menu15();break; case 21: port=menu21();break; case 22: port=menu22();break; case 23: port=menu23();break; case 111: admin_book_look();port=11;break; case 112: admin_book_add();port=11;break; case 113: admin_book_alter();port=11;break; case 114: admin_book_search();port=11;break; case 115: admin_book_delete();port=11;break; case 121: admin_student_look();port=12;break; case 122: admin_student_search();port=12;break; case 123: admin_student_alter();port=12;break;

第 47 页

课程设计

case 124: admin_student_delete();port=12;break; case 131: admin_message_receive();port=13;break; case 132: admin_message_send();port=13;break; case 133: admin_message_delete();port=13;break; case 134: admin_message_all_send();port=13;break; case 141: admin_sys_file();port=14;break; case 142: admin_sys_code();port=14;break; case 151: admin_book_borrow();port=15;break; case 152: admin_book_borrow_s();port=15;break; case 153: admin_book_return();port=15;break; case 154: admin_book_return_s();port=15;break; case 211: user_ifo_borrow();port=21;break; case 212: user_ifo_look();port=21;break; case 213: user_ifo_alter();port=21;break; case 221: user_book_look();port=22;break; case 222: user_book_search();port=22;break; case 223: user_book_borrow();port=22;break; case 224: user_book_return();port=22;break; case 231: user_message_receive();port=23;break; case 232: user_message_send();port=23;break; case 233: user_message_delete();port=23;break; } if(port==110||port==120||port==130||port==140||port==150) port=1; if(port==210||port==220||port==230) port=2; if(port==100) break; if(port==10||port==20) { color(12); printf(\◆是否真的要退出系统?是按1,否按0??\ fflush(stdin); scanf(\ color(9); if(i==1) break; else port/=10; } } return port; }

//*********************************************

第 48 页

课程设计

//存盘模块

//********************************************* void save(int n) {

//学生信息

FILE *student_f; FILE *libray_f; FILE *book_f; FILE *message_f; FILE *return_f; if(n==1) { book_f=fopen(\ student_f=fopen(\ libray_f=fopen(\ message_f=fopen(\ return_f=fopen(\} else { book_f=fopen(\ student_f=fopen(\ libray_f=fopen(\ message_f=fopen(\ return_f=fopen(\}

STUDENT *student_p;

student_p=student_phead->pnext; while(student_p!=NULL) { fwrite(student_p,sizeof(STUDENT),1,student_f); student_p=student_p->pnext; }

fclose(student_f); //图书信息 BOOK *book_p;

book_p=book_phead->pnext; while(book_p!=NULL) { fwrite(book_p,sizeof(BOOK),1,book_f); book_p=book_p->pnext; }

fclose(book_f); //借阅信息

第 49 页

课程设计

LIBRAY *libray_p;

libray_p=libray_phead->pnext; while(libray_p!=NULL) { fwrite(libray_p,sizeof(LIBRAY),1,libray_f); libray_p=libray_p->pnext; }

fclose(libray_f);

//短消息

MESSAGE *message_p;

message_p=message_phead->pnext; while(message_p!=NULL) { fwrite(message_p,sizeof(MESSAGE),1,message_f); message_p=message_p->pnext; }

fclose(message_f);

//还书流水 RETURN *return_p; return_p=return_phead->pnext; while(return_p!=NULL) { fwrite(return_p,sizeof(RETURN),1,return_f); return_p=return_p->pnext; } fclose(return_f); }

//********************************************* //登录模块

//********************************************* int login(int port) { cls(0); char no[13],code_in[17],code_f[17],ch; int i; if(port==-1) { FILE *admin_f; printf(\?管理员登录窗口?\\n\\n\ while(1) { fflush(stdin); printf(\●输入管理员密码:\ for(i=0;i<17&&(ch!='\\r'||i==0);)//i==0;是防止第二次输入密码时ch一开为'\\r'不

第 50 页

本文来源:https://www.bwwdw.com/article/45yo.html

Top