/*****************************************
** 图书馆管理系统 **
** 登录界面: **
** 1.学生登录 **
** 2.管理员登录 **
** 3.注册新用户 **
** 4.退出 **
** 管理员登录: **
** 1.添加书籍 **
** 2.删除书籍 **
** 3.书籍信息更改 **
** 4.查询书籍 **
** 5.查看已注册用户列表 **
** 6.还欠款操作 **
** 7.返回登录界面 **
** 普通用户登录: **
** 1.查看已借书籍 **
** 2.借阅书籍 **
** 3.归还书籍 **
** 4.查看所有书籍 **
** 5.续借 **
** 5.返回登录界面 **
******************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define NUM 4
time_t t;
struct tm* lt;
//书籍
typedef struct book_info{
char book_name[21];
char book_num[9];
int book_index;
int book_index2;
book_info* next;
long lend_time[6];
long return_time[6];
bool flag;
double stu_penalty;
}info_book,*book;
//学生数据
typedef struct stu_table{
char stu_name[21]; //最后一个单元放'\0'
char stu_num[13];
char stu_mm[13];
stu_table* next;
info_book* stu_book;
int stu_already_len;
int stu_can_len;
}table_stu,*stu;
//管理员数据
typedef struct man_table{
char man_name[10];
long man_num;
long man_mm;
man_table* next;
}table_man,*man;
//登录界面选项
void Select_Options(){
printf("***********************\n");
printf("* 选择登录账户: *\n");
printf("* 1.学生登录 *\n");
printf("* 2.管理员登录 *\n");
printf("* 3.注册新用户 *\n");
printf("* 4.退出 *\n");
printf("***********************\n");
}
//学生用户选项
void Select_Stu(){
printf("请选择操作:\n");
printf("1.查看已借书籍\n");
printf("2.借阅书籍\n");
printf("3.归还书籍\n");
printf("4.查看所有书籍\n");
printf("5.续借\n");
printf("6.返回登录界面\n");
}
//管理员选项
void Select_Man(){
printf("请选择操作:\n");
printf("1.添加书籍\n");
printf("2.删除书籍\n");
printf("3.书籍信息更改\n");
printf("4.查看所有书籍\n");
printf("5.查看已注册用户列表\n");
printf("6.还欠款操作\n");
printf("7.返回登录界面\n");
}
//计算超时时间
double Over_Time(long times[]){
time(&t);
lt = localtime(&t);
double t1,t2,t3,t4,t5,t6,t8;
if(lt->tm_sec >= times[5]){//秒大于,那么分正常减
t2 = (lt->tm_sec)-(times[5]); //超出几秒
if(lt->tm_min >= times[4]){//分大于,那么时正常减
t3 = (lt->tm_min)-(times[4]); //超出几分
if(lt->tm_hour >= times[3]){ //时大于,日正常减
t4 = (lt->tm_hour)-(times[3]);//超出几时
if(lt->tm_mday >= times[2]){//日大于,月正常减
t5 = (lt->tm_mday)-(times[2]); //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mday)-(times[2]);
t1 = (lt->tm_year+1900)-(times[0])-1;
}
}else{//日小于,月减一
t5 = 30+(lt->tm_mday)-(times[2]); //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}
}else{//时小于,日减一
t4 = 24+(lt->tm_hour)-(times[3]); //超出几时
if(lt->tm_mday >= times[2]){//日大于,月正常减
t5 = (lt->tm_mday)-(times[2])-1; //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}else{//日小于,月减一
t5 = 30+(lt->tm_mday)-(times[2])-1; //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}
}
}else{//分小于,那么时减一
t3 = 60+(lt->tm_min)-(times[4]); //超出几分
if(lt->tm_hour >= times[3]){//时大于,日正常减
t4 = (lt->tm_hour)-(times[3])-1; //超出几时
if(lt->tm_mday >= times[2]){//日大于,月正常减
t5 = (lt->tm_mday)-(times[2]); //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}else{//日小于,月减一
t5 = 30+(lt->tm_mday)-(times[2]); //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}
}else{//时小于,日减一
t4 = 24+(lt->tm_hour)-(times[3])-1; //超出几时
if(lt->tm_mday >= times[2]){//日大于,月正常减
t5 = (lt->tm_mday)-(times[2])-1; //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}else{//日小于,月减一
t5 = 30+(lt->tm_mday)-(times[2])-1; //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}
}
}//分小于完成
}else{//秒小于,那么分减一
t2 = 60+(lt->tm_sec)-(times[5]); //超出几秒
if(lt->tm_min >= times[4]){//分大于,时正常减
t3 = (lt->tm_min)-(times[4])-1; //超出几分
if(lt->tm_hour >= times[3]){//时大于,日正常减
t4 = (lt->tm_hour)-(times[3]); //超出几时
if(lt->tm_mday >= times[2]){//日大于,月正常减
t5 = (lt->tm_mday)-(times[2]); //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}else{//日小于,月减一
t5 = 30+(lt->tm_mday)-(times[2]); //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}else{//月小于,年减一
t6 = 12+(lt->tm_mon+1)-(times[1])-1; //超出几月
t1 = (lt->tm_year+1900)-(times[0])-1; //超出几年
}
}
}else{//时小于,日减一
t4 = 24+(lt->tm_hour)-(times[3]); //超出几时
if(lt->tm_mday >= times[2]){//日大于,月正常减
t5 = (lt->tm_mday)-(times[2])-1; //超出几日
if(lt->tm_mon+1 >= times[1]){//月大于,年正常减
t6 = (lt->tm_mon+1)-(times[1]); //超出几月
t1 = (lt->tm_year+1900)-(times[0]); //超出几年
}els
评论0