//
// main.c
// 高级语言课程设计图书管理系统
//
// Created by 蔡星旖 on 2022/8/1.
//
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> using namespace std; //管理员用户:账号:888888, 密码:123456
//读者用户:账号自主设置, 密码:自主设置 //图书信息
struct Book
{
int num;
char name[100];
char author[100];
char pub[100];
double price;
int cnt;
}; struct Stu
{
int num;
int password;
int cnt;
struct Book book;
}; struct SNode
{
struct Stu stu;
struct SNode* next;
}; typedef struct Node
{
struct Book data;
struct Node* next;
}Node, *LinkList; struct Node* list = NULL;
struct SNode* Slist = NULL; //创建图书表头
struct Node* createHead(void)
{
//动态内存申请
struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
headNode -> next = NULL;
return headNode;
} //创建用户信息表头
struct SNode* createSHead(void)
{
//动态内存申请
struct SNode* headNode = (struct SNode*)malloc(sizeof(struct SNode));
headNode -> next = NULL;
return headNode;
} //创建节点
struct Node* creatNode(struct Book data)
{
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode -> data = data;
newNode -> next = NULL;
return newNode;
} //创建读者账户信息
struct SNode* creatReaderNode(struct Stu data)
{
struct SNode* newNode = (struct SNode*)malloc(sizeof(struct SNode));
newNode -> stu = data;
newNode -> next = NULL;
return newNode;
} //打印链表
void printList(struct Node* headNode)
{
struct Node* pMove = headNode -> next;
printf("图书编号\t\t\t书名\t\t\t作者\t\t\t出版社\t\t\t价格\t\t\t库存\n");
while(pMove != NULL)
{
printf("%d\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t%.1f\t\t\t%d\n", pMove ->data.num, pMove ->data.name, pMove ->data.author, pMove -> data.pub, pMove ->data.price, pMove -> data.cnt);
pMove = pMove -> next;
}
} //插入:头插法插入书籍信息
void insertNodeByHead(struct Node* headNode, struct Book data)
{
struct Node* newNode = creatNode(data);
newNode -> next = headNode -> next;
headNode -> next = newNode;
} //插入:头插法插入读者账户信息
void insertNodeReader(struct SNode* headNode, struct Stu a)
{
struct SNode* newNode = creatReaderNode(a);
newNode -> next = headNode -> next;
headNode -> next = newNode;
} //写文件操作
void save(const char* fileName, struct Node* headNode)
{
FILE * fp = fopen(fileName,"w");
struct Node* pMove = headNode -> next;
while(pMove != NULL)
{
fprintf(fp, "%d\t%s\t%s\t%s\t%.1lf\t%d\n", pMove -> data.num, pMove -> data.name, pMove ->data.author, pMove -> data.pub, pMove -> data.price, pMove -> data.cnt);
pMove = pMove -> next;
}
fclose(fp);
} //读图书文件操作
void readFile(const char* fileName, struct Node* headNode)
{
FILE * fp = fopen(fileName,"r");
if(fp == NULL)
{
//第一次打开程序文件是不存在的
fp = fopen(fileName, "w+");
}
struct Book tmp;
while(fscanf(fp, "%d\t%s\t%s\t%s\t%lf\t%d\n", &tmp.num, tmp.name, tmp.author, tmp.pub, &tmp.price, &tmp.cnt) != EOF)
{
insertNodeByHead(list, tmp);
}
fclose(fp);
} void save2(const char* fileName, struct SNode* headNode)
{
FILE * fp = fopen(fileName,"w");
struct SNode* pMove = headNode -> next;
while(pMove != NULL)
{
fprintf(fp,"%d\t%d\t%d\t%d\t%s\t%s\t%s\t%.lf\t%d\n", pMove ->stu.num, pMove ->stu.password, pMove ->stu.cnt, pMove ->stu.book.num, pMove ->stu.book.name, pMove ->stu.book.author, pMove ->stu.book.pub, pMove ->stu.book.price, pMove ->stu.book.cnt);
pMove = pMove -> next;
}
fclose(fp);
} void readFile2(const char* fileName, struct SNode* headNode)
{
FILE * fp = fopen(fileName,"r");
if(fp == NULL)
{
//第一次打开程序文件是不存在的
fp = fopen(fileName, "w+");
}
struct Stu tmp;
while(fscanf(fp, "%d\t%d\t%d\t%d\t%s\t%s\t%s\t%lf\t%d\n",&tmp.num, &tmp.password, &tmp.cnt, &tmp.book.num, tmp.book.name, tmp.book.author, tmp.book.pub, &tmp.book.price, &tmp.book.cnt) != EOF)
{
insertNodeReader(Slist, tmp);
}
fclose(fp);
} //检验密码是否正确
int denglu(struct SNode* headNode,int zhanghao, int mima)
{
struct SNode* pMove = headNode ->next;
while(pMove != NULL)
{
if(pMove ->stu.num == zhanghao)
{
if(pMove ->stu.password == mima)
return 1;
else
return 0;
}
pMove = pMove -> next;
}
if(pMove == NULL) return 2;
return 0;
} //修改密码
int xiugai(struct SNode* headNode,int zhanghao, int mima1, int newmima)
{
struct SNode* pMove = headNode ->next;
while(pMove != NULL)
{
if(pMove ->stu.num == zhanghao)
{
if(pMove ->stu.password == mima1)
{
pMove -> stu.password = newmima;
return 1;
}
else
return 0;
}
pMove = pMove -> next;
}
if(pMove == NULL) return 2;
return 0;
} //指定书籍编号删除
void deletebynum(struct Node* headNode, int num)
{
struct Node* LDNode = headNode;
struct Node* DNode = headNode -> next;
while(DNode != NULL && DNode -> data.num != num)
{
LDNode = DNode;
DNode = DNode -> next;
}
if(DNode == NULL)
return ;
else
{
LDNode -> next = DNode -> next;
free(DNode);
DNode = NULL;
}
}
//指定作者删除
void deletebyname(struct Node* headNode, char* bookname)
{
struct Node* LDNode = headNode;
struct Node* DNode = headNode -> next;
while(DNode != NULL && strcmp(bookname, DNode ->data.name) )
{
LDNode = DNode;
DNode = DNode -> next;
}
if(DNode == NULL)
return ;
else
{
LDNode -> next = DNode -> next;
free(DNode);
DNode = NULL;
}
} //按书籍编号进行排序
void BubbleSortBynum(struct Node* headNode)
{
for(struct Node* p = headNode -> next; p != NULL; p = p -> next)
{
for(struct Node* q = headNode -> next; q -> next!= NULL; q = q -> next)
{
if (q->data.num > q->next->data.num) {
struct Book tmp = q->data;
q->data = q->next->data;
q->next->data = tmp;
}
}
}
printList(headNode);
} //按书籍价格进行排序,交换数据,并不改变节点之间的指针关系 void BubbleSortByprice(struct Node* headNode)
{
for(struct Node* p = headNode -> next; p != NULL; p = p -> next)
{
for(struct Node* q = headNode -> next; q -> next != NULL; q = q -> next)
{
if(q -> data.price > q -> next -> data.price)
{
struct Book tmp = q->data;
q->data = q->next->data;
q->next->data = tmp;
}
}
}
printList(headNode);
} //按书籍库存数量进行排序
void BubbleSortBycnt(struct Node* headNode)
{
for(struct Node* p = headNode -> next; p != NULL; p = p -> next)
{
for(struct Node* q = headNode -> next; q -> next != NULL; q = q -> next)
{
if(q -> data.cnt > q -> next -> data.cnt)
{
struct Book tmp = q->data;
q->data = q->next->data;
q->next->data = tmp;
}
}
}
printList(headNode);
} //两个链表划分的过程
LinkList Split(LinkList head)
{
if (head == NULL) {
return head;
} LinkList prev = NULL;
LinkList slow = head;
LinkList fast = head;
// 注意这里了要判断fast.next 是否为空
while (fast && fast -> next) {
fast = fast -> next -> next;
prev = slow;
slow = slow -> next;
}
prev -> next = NULL; // 断开链表,返回后面一段的第一个节点
return slow;
} //两个有序链表归并的过程
LinkList merge(LinkList left, LinkList right) {
LinkList head = new Node;
LinkList cur = head;
while (left != NULL && right != NULL) {
if (left -> data.num > right -> data.num) {
cur -> next = right;
right = right -> next;
} else {
cur -> next = left;
left = left -> next;
}
cur = cur -> next;
} while (left != NULL) {
cur -> next = left;
cur = cur -> next;
left = left -> next;
} while (right != NULL) {
cur -> next = right;
cur = cur -> next;
right = right -> next;
}
return head -> next;
} //按书籍编号进行归并排序
LinkList sortList(LinkList head) {
if (head == NULL || head -> next == NULL) {
// 为空 或 只有一个链表节点均不用排序
return head;
}
LinkList mid = Split(head);
LinkList left = sortList(head);
LinkList right = sortList(mid);
return merge(left, right);
} //按书名查询书籍
struct Node* SearchByname(struct Node* headNode, char* Bookname )
{
struct Node* pMove = NULL;
for(pMove = headNode -> next; pMove != NULL; pMove = pMove -> next)
{
if(strcmp(pMove -> data.name, Bookname) == 0)
{
break;
}
}
return pMove;
} //按书籍编号查询书籍
struct Node* SearchBynum(struct Node* headNode, int num )
{
struct Node* pMove = NULL;
for( pMove = headNode -> next; pMove != NULL; pMove = pMove -> next)
{
if(pMove -> data.num == num)
{
break;
}
}
return pMove;
} //找到借阅的指针
struct SNode* borrow2(struct SNode* headNode,int zhanghao)
{
struct SNode* pMove = headNode ->next;
while(pMove != NULL)
{
if(pMove ->stu.num == zhanghao)
{
return pMove;
}
}
return pMove;
} //按书名借书
void borrowByname(struct Node* headNode, struct SNode* headSNode, char* name, int zhanghao)
{
struct Node* tmp = SearchByname(headNode, name);
if(tmp != NULL)
{ struct SNode* reader = borrow2(Slist, zhanghao);
if(tmp -> data.cnt > 0)
{
reader -> stu.book = tmp->data;
reader -> stu.cnt = 1;
tmp -> data.cnt --;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
cout << "借书成功" << endl;
}
else
{
cout << "馆内该图书已全部借出" << endl;
}
}
else
{
cout << "图书馆内没有您要借阅的这本图书!" << endl;
}
} //按图书编号借书
void borrowBynum(struct Node* headNode, struct SNode* headSNode, int num, int zhanghao)
{
struct Node* tmp = SearchBynum(headNode, num);
if(tmp != NULL)
{
struct SNode* reader = borrow2(Slist, zhanghao);
if(tmp -> data.cnt > 0)
{
reader -> stu.book = tmp->data;
reader -> stu.cnt ++;
tmp -> data.cnt --;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
cout << "借书成功" << endl;
}
else
{
cout << "馆内该图书已全部借出" << endl;
}
}
else
{
cout << "图书馆内没有您要借阅的这本图书!" << endl;
}
} //按书名还书
void sendByname(struct Node* headNode, struct SNode* headSNode, char* name, int zhanghao)
{
struct Node* tmp = SearchByname(headNode, name);
if(tmp != NULL)
{
struct SNode* reader = borrow2(Slist, zhanghao);
reader -> stu.cnt = 0;
reader -> stu.book ={0, "/0", "/0", "/0", 0, 0};
tmp->data.cnt ++;
cout << "还书成功" << endl;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
}
else
{
cout << "此书不是本图书馆藏书!" << endl;
}
} //按图书编号还书
//按书名还书
void sendBynum(struct Node* headNode, struct SNode* headSNode, int num, int zhanghao)
{
struct Node* tmp = SearchBynum(headNode, num);
if(tmp != NULL)
{
struct SNode* reader = borrow2(Slist, zhanghao);
reader -> stu.cnt = 0;
reader -> stu.book ={0, "/0", "/0", "/0", 0, 0};
tmp->data.cnt ++;
cout << "还书成功" << endl;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
}
else
{
cout << "此书不是本图书馆藏书!" << endl;
}
} //图书馆界面、菜单
void allmenu(void)
{
printf("-------------------------\n");
printf("欢迎来到图书管理系统\n");
printf("\t0.退出系统\n");
printf("\t1.登记书籍\n");
printf("\t2.浏览书籍\n");
printf("\t3.查询书籍\n");
printf("\t4.书籍排序\n");
printf("\t5.删除书籍\n");
printf("-------------------------\n");
printf("请输入0~7选择您需要的业务\n");
} //菜单按键
void allkeydown(void) {
int k = 0;
//临时变量存储书籍信息
struct Book tmpBook;
scanf("%d", &k);
if (k == 0)
{
printf("\t退出\n");
printf("\t退出成功\n");
system("pause");
exit(0);
}
else if (k == 1)
{
printf("\t登记\n");
printf("请输入书籍的信息:编号 书名 作者 出版社 价格 数量:\n");
scanf("%d%s%s%s%lf%d", &tmpBook.num, tmpBook.name, tmpBook.author, tmpBook.pub, &tmpBook.price, &tmpBook.cnt);
insertNodeByHead(list, tmpBook);
save("bookinfo.txt", list);
cout << "添加成功" << endl;
}
else if (k == 2)
{
printf("\t浏览\n");
printList(list);
}
else if (k == 3)
{
printf("\t查询\n");
printf("请输入您要选择的查询方式:\n");
printf("1.按书名查找\n");
printf("2.按书籍编号查找\n");
int k2;
scanf("%d", &k2);
if (k2 == 1)
{
printf("请输入您要查找的书名:\n");
scanf("%s", tmpBook.name);
struct Node *p = SearchByname(list, tmpBook.name);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
else if (k2 == 2)
{
printf("请输入您要查询书籍的编号:\n");
scanf("%d", &tmpBook.num);
struct Node *p = SearchBynum(list, tmpBook.num);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
else
{
printf("您的输入有误, 查找失败!\n");
}
}
else if(k == 4)
{
printf("\t排序\n");
printf("请选择您要排序的方式:\n");
printf("1.按书籍的序号进行排序\n");
printf("2.按书籍的价格进行排序\n");
printf("3.按书籍的库存数量进行排序\n");
int m = 0;
scanf("%d", &m);
if (m == 1)
{
BubbleSortBynum(list);
}
else if (m == 2)
{
BubbleSortByprice(list);
}
else if (m == 3)
{
BubbleSortBycnt(list);
}
else
{
printf("输入错误\n");
}
}
else if(k == 5)
{
printf("\t删除\n");
printf("请选择删除书籍的方式:\n");
printf("1.按书籍的编号删除\n");
printf("2.按书名删除\n");
int k1;
scanf("%d", &k);
if (k == 1)
{
printf("请输入您要删除书籍的编号:\n");
int num1 = 0;
scanf("%d", &num1);
deletebynum(list, num1);
save("bookinfo.txt", list);
}
else if (k == 2)
{
printf("请输入您要删除书籍的书名:\n");
char ch[100];
scanf("%s", ch);
deletebyname(list, ch);
save("bookinfo.txt", list);
printf("删除成功!\n");
}
else
{
printf("您的输入有误, 删除失败!\n");
}
}
else
{
printf("\t输入错误\n");
}
} void secondmenu(void)
{
printf("-------------------------\n");
printf("欢迎来到图书管理系统\n");
printf("0.退出系统\n");
printf("1.浏览图书\n");
printf("2.查找图书\n");
printf("3.借阅图书\n");
printf("4.归还图书\n");
printf("-------------------------\n");
} void secondkey(int zhanghao) {
int k = 0;
cin >> k;
struct Book tmpBook;
if (k == 0)
{
printf("\t退出\n");
printf("\t退出成功\n");
system("pause");
exit(0);
}
else if (k == 1)
{
printf("\t浏览\n");
printList(list);
}
else if (k == 2)
{
printf("\t查询\n");
printf("请输入您要选择的查询方式:\n");
printf("1.按书名查找\n");
printf("2.按书籍编号查找\n");
int k2;
scanf("%d", &k2);
if (k2 == 1)
{
printf("请输入您要查找的书名:\n");
scanf("%s", tmpBook.name);
struct Node *p = SearchByname(list, tmpBook.name);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
else if (k2 == 2)
{
printf("请输入您要查询书籍的编号:\n");
scanf("%d", &tmpBook.num);
struct Node *p = SearchBynum(list, tmpBook.num);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
}
else if (k == 3)
{
printf("\t借阅\n");
cout << "请选择您要借阅的方式!" << endl;
cout << "1.按书名借阅" << endl;
cout << "2.按图书编号借阅" << endl;
int key = 0;
cin >> key;
if (key == 1)
{
cout << "请输入您要借阅的书名" << endl;
char tmpbook[100];
cin >> tmpbook;
borrowByname(list, Slist, tmpbook, zhanghao);
}
else if (key == 2)
{
cout << "请输入您要借阅图书的编号" << endl;
int num;
cin >> num;
borrowBynum(list, Slist, num, zhanghao);
}
}
else if (k == 4)
{
printf("\t归还\n");
cout << "请您选择归还的方式" << endl;
cout << "1.按书名归还 " << endl;
cout << "2.按图书编号归还" << endl;
int key = 0;
cin >> key;
if (key == 1)
{
cout << "请输入您要归还的书名" << endl;
char tmpbook[100];
cin >> tmpbook;
sendByname(list, Slist, tmpbook, zhanghao);
} else if (key == 2)
{
cout << "请输入您要归还图书的编号" << endl;
int num;
cin >> num;
sendBynum(list, Slist, num, zhanghao);
}
}
else
{
printf("您的输入有误, 查找失败!\n");
}
} void mainmenu(void)
{
printf("-------------------------\n");
printf("欢迎来到图书管理系统\n");
printf("请登陆您的账户\n");
printf("如果您是新用户请选择注册您的账号\n");
printf("0.注册账号\n");
printf("1.登陆管理员账号\n");
printf("2.登陆读者账号\n");
printf("3.修改密码\n");
printf("-------------------------\n");
} void mainkey()
{
int k = 0;
cin >> k;
if(k == 0)
{
cout << "请输入您要注册的账号和密码, 要求都是整数" << endl;
int zhanghao, mima;
cin >> zhanghao >> mima;
struct Stu tmp;
tmp = {zhanghao, mima, 0, 0, "/0", "/0", "/0", 0.0, 0};
insertNodeReader(Slist,tmp);
save2("reader.txt", Slist);
cout << "注册成功!请您登陆" << endl;
}
else if(k == 2)
{
cout << "请输入您的账号和密码" << endl;
int zhanghao, mima;
cin >> zhanghao >> mima;
int res = denglu(Slist,zhanghao, mima);
if(res == 1)
{
cout << "登陆成功" << endl;
while(1)
{
secondmenu();
secondkey(zhanghao);
system("pause");
system("cls");
} }
else if(res == 0)
{
cout << "您输入的密码错误" << endl;
}
else if(res == 2)
{
cout << "您输入的账户错误或您还未注册账户" << endl;
}
}
else if(k == 1)
{
cout << "请输入管理员账号和密码:" << endl;
int num, password;
cin >> num >> password;
if(num == 888888 && password == 123456)
{
cout << "登陆成功" << endl;
while(1)
{
allmenu();
allkeydown();
system("pause");
system("cls");
}
}
else
{
cout << "登陆错误" << endl;
}
}
else if(k == 3)
{
cout << "请输入您原来的账号,密码,以及您要修改的新密码,以便验证您的身份" << endl;
int zhanghao, mima, newmima;
cin >> zhanghao >> mima >> newmima;
int res = xiugai(Slist, zhanghao, mima, newmima);
if(res == 1)
{
cout << "修改成功!" << endl;
save2("reader.txt", Slist);
}
else
{
cout << "您输入的账号或密码有误请您检查后重试!" << endl;
}
}
} int main(int argc, const char * argv[])
{
list = createHead();
Slist = createSHead();
readFile("bookinfo.txt", list);
readFile2("reader.txt", Slist);
while(1)
{
mainmenu();
mainkey();
system("pause");
system("cls");
}
return 0;
}

大一下c语言课程设计的更多相关文章

  1. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  2. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  3. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  4. C语言课程设计(成绩管理系统)

    C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...

  5. C语言课程设计

    目录 实现目的 游戏玩法介绍 实现流程与作品架构 任务列表及贡献度 总结感想 作品源码与仓库地址(附页) 资料引用与出处(附页) 实现目的 2048,作为一款极其经典的游戏,从发行到现在,已经有了极多 ...

  6. C语言课程设计大整数运算

    该大整数运算系统用于对有符号的位数不超过500位的大整数进行加.减.乘.除四则运算和计算N(0<=N<=10000)的阶乘.注意事项 :    1.操作期间,进行四则运算时若大整数为正数请 ...

  7. 大一C语言课程设计——班级档案管理系统

    记录我在大一第二学期期末做的C语言课程毕业设计 1. 班级档案管理系统运用到的主要结构体 typedef struct birthday //出生日期{int year;int month;int d ...

  8. springboot+bootstrap实现图书商城管理(大三下学期课程设计)

    在csdn上记一次自己的课程设计过程(已经实习两个月了.感觉这个很容易做.支付可能需要多花点时间.): 在此框架基础之上权限认证管理设置成功:https://blog.csdn.net/weixin_ ...

  9. C语言课程设计——电影院订票系统

    1. 课题简介 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户登录系统后,实现电影放映厅信息管理和电 ...

  10. JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)

    阿西吧.自从学会使用框架.再看以前写的.我真的是要死了.项目用的还不是maven.整理项目能给我搞死.更要命的是这个项目还是用eclipse写的.数据库还是SQL server.阿西吧 这个系统代码不 ...

随机推荐

  1. centos系统给centos-root硬盘扩容

    此服务器为虚拟机,通过lsblk命令查看当前虚拟机硬盘: 其中一块硬盘大小为100G,已作为系统盘使用,但是只分配了15G的空间使用,需要对剩余空间进行分区,并扩容到对应centos卷组的root目录 ...

  2. 在mapper.xml中遍历添加多条数据

    <insert id="saveAuditDf" parameterType="java.util.List"> insert into audit ...

  3. 【Docker】部署Redis

    1.下载镜像 #下载最新版Redis镜像 (其实此命令就等同于 : docker pull redis:latest ) docker pull redis # 下载指定版本的Redis镜像 (xxx ...

  4. PWM点灯

    目录 PWM脉冲宽调点灯 前言 1.什么是PWM 2.PWM的实现 3.PWM实现步骤(通用定时器) 3.1 打开定时器的时钟 3.2 配置端口 3.3 设置定时器 3.4 设置PWM 3.5 完整代 ...

  5. Blazor提取出Razor类库,没有css的class的智能提示

    最开始从stackoverflow上找到了答案,有两种办法,但都不太理想 后来自己找了新的办法,其实很简单,把要用的css复制到Razor类库的wwwroot文件夹中,默认是不会复制到引用Razor类 ...

  6. 【博客索引】Welcome!!

    欢迎来到 Daniel_yzy 的博客园 个人简介 初二,男,就读于长沙市一中双语实验学校. 爱好 OI,一生讨厌文化课. 当然,也是唯物主义无神论者. 已有 npy,要问是谁的话可以私下问. 博客索 ...

  7. EntityCleanFramework

    EF几乎是按照领域的概念诞生,它可以和Clean结合(ECF是我新想出的名字).ECF 是为了统一业务架构开发方式,也可以说成在 微服务架构 中服务的通用开发方式.当有了统一开发方式后,协作将更上一层 ...

  8. 聊聊 RocketMQ 名字服务

    NameServer 是专为 RocketMQ 设计的轻量级名字服务,它的源码非常精简,八个类 ,少于1000行代码. 这篇文章, 笔者会从基础概念.Broker发送心跳包.NameServer 维护 ...

  9. 【译】摇摆你的调试游戏:你需要知道的 Parallel Stack Window 小知识!

    在 Visual Studio 2022 17.6和17.7中,我们在 Parallel Stack 窗口中添加了大量新功能,可以将您的多线程调试提升到一个新的水平. 但是 Parallel Stac ...

  10. 2023-08-10:景区里有m个项目,也就是项目数组为int[][] game,这是一个m*2的二维数组 景区的第i个项目有如下两个参数: game[i] = { Ki, Bi } Ki一定是负数,

    2023-08-10:景区里有m个项目,也就是项目数组为int[][] game,这是一个m*2的二维数组 景区的第i个项目有如下两个参数: game[i] = { Ki, Bi } Ki一定是负数, ...