📄 教材订购系统.c
字号:
char user_menu()/*教师学生菜单*/
{char n;
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep); /*取得当地时间*/
system("cls");/*刷屏*/
printf(" |*************************************************************|\n");
printf(" | 今天是 %d年%d月%d日 ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);week_day();
printf(" |=============================================================|\n");
printf(" | 欢迎使用我们的系统 |\n");
printf(" | |\n");
printf(" | (按 '0' 退出,) |\n");
printf(" |===========================MENU==============================|\n");
printf(" | 输入您的选择(1-3): |\n");
printf(" | 0.退出 |\n");
printf(" | 1.订购书籍 |\n");
printf(" | 2.查看自己的订购单 |\n");
printf(" | 3.删除订购单中的某些书籍 |\n");
printf(" | 4.查看领书单 |\n");
printf(" | |\n");
printf(" | |\n");
printf(" | |\n");
printf(" |*************************************************************|\n");
printf("\n\t\t\t您的选择是:");
scanf("%s",&n);
return(n);
}
void tcher_stu_do()/*教师和学生模块*/
{USER *head_user;
BOOK *head_book;
head_user=user_input();/*输入教师或学生的信息*/
if(head_user==NULL)return;
save_user_record(head_user);/*追加存储信息到磁盘*/
for(;;)
{
switch(user_menu())/*教师学生菜单*/ /***********************************************************************************************************************/
{case '0':switch(quit()){
case'1':about_system();exit(0);break;
case'0':break;
}
break;
case '1':head_book=load(head_user->num);/*首先检测之前是否有订购单*/
head_book=input_book_list(head_book);/*输入订购单*/
head_book=together(head_book);/*归并相同的名称书籍的数量*/
print_book_list(head_book);
if(head_book)books_list_save(head_book,head_user->num);/*以用户的号码为文件名存储订购单*/
break;
case '2':head_book=load(head_user->num);/*装载已存储的订购单*/
if(head_book)print_book_list(head_book);/*查询自己的订购单*/
else {system("cls");printf("\n\n\n\n并没有属于您的订购单。又或是你的订购单已经经过处理,请到查询领书单");getch();}
break;
case '3':head_book=load(head_user->num);/*装载已存储的订购单*/
if(head_book){print_book_list(head_book);/*查询自己的订购单*/
head_book=obliterate(head_book);
print_book_list(head_book);/*修改自己的订购单*/
if(head_book)books_list_save(head_book,head_user->num);
else delete_file(head_user->num);
}
else {system("cls");printf("\n\n\n\n没有属于您的订购单 .\n请先输入订购单.\n按任意键继续............");getch();}
break;
case '4':
print_fetch(head_user);
break;/*查看个人的领书单-----------------------------------*/
}
}
}
void books_list_save(BOOK *head_book,char filename[])/*以filename为文件名存储书籍信息*/
{
FILE *fp;
BOOK *p;
char a[100]="c:\\";
char b[5]=".txt";
strcat(a,filename);
strcat(a,b);
if((fp=fopen(a,"w"))==NULL)
{
printf("Cannot open the file\n");
return;
}
p=head_book;
while(p!=NULL)
{
fwrite(p,BOOK_LEN,1,fp);
p=p->next;
}
fclose(fp);
printf("Save the file successfully!\n");
}
BOOK *load(char filename[])/*打开文件*/
{BOOK *p1,*p2,*head=NULL;
FILE *fp;
char a[100]="c:\\";
char b[5]=".txt";
strcat(a,filename);
strcat(a,b);
if((fp=fopen(a,"r"))==NULL)
{
return(NULL);
}
p1=(BOOK *)malloc(BOOK_LEN);
if(!p1)
{
printf("Out of memory!\n");
return(head);
}
head=p1;
while(!feof(fp))
{
if(fread(p1,BOOK_LEN,1,fp)!=1) break;
p1->next=(BOOK *)malloc(BOOK_LEN);
if(!p1->next)
{
printf("Out of memory!\n");
return (head);
}
p2=p1;
p1=p1->next;
}
p2->next=NULL;
fclose(fp);
return (head);
}
void print_book_list(BOOK *head_book)/*显示订购单(总共10行)*/
{int n,i,j,t;
char m;
BOOK *q,*point[10];
USER *p;
for(i=0;i<=9;i++)point[i]=NULL;/*指针数组初置为空*/
for(q=head_book,j=1;q;q=q->next,j++)/*设置一个指针数组用来标记每一页的初指针*/
{
if(j%10==1)point[j/10+1]=q;
}
i=1;/*页数*/
while(q=point[i])
{ n=1;
system("cls");/*刷屏*/
printf("*************************************<List>*************************************");
printf("| '1' -上一页 '2' -下一页 '0' -确认 |");
printf("================================================================================");
printf("================================================================================");
printf("| 编号 | 书名 | 主编 | 数量 |\n");
printf("--------------------------------------------------------------------------------");
while(q&&n<=10)/*每页显示17行*/
{printf("| %-3d |%-30s|%-30s|%-6d|\n",n,q->nam,q->editor,q->amount);
n++;
q=q->next;
}
q=NULL;
printf("================================================================================");
printf("第%d页",i);
m=getch();
if(m=='0')break;
else if(m=='1')
{if(point[i-1]){i-=1;}
else {printf("\n\n这是第一页,没有上一页了!!!按任意键继续 ");getch();}
}
else if(m=='2')
{if(point[i+1]){i+=1;}
else {printf("\n\n这是最后一页,没有下一页了!!!按任意键继续");getch();}
}
}
return;
}
void print_fetch(USER *head_user)/*显示用户表单*/
{char a[10]="f";
BOOK*head_book;
strcat(a,head_user->num);
head_book=load(a);
if(head_book==NULL)
{system("cls");
printf("\n\n\n\n\n可能您的订购单还未经过发行人员的审核,请多等待几天\n");
printf("又或许之前您并没有提交订购单,请确定您已经填写订购单 \n\n按任意键继续");getch();
}
else{system("cls");
printf(" 提示 \n\n");
printf(" 如果您发现订购的某些书籍不在您的领书单里面,即表明该书库存却货。\n");
printf(" 请稍等几日后再提交该书的订购申请。\n");
printf(" 在您查询过领书单之后,系统将会删除领书单!!!!\n\n\n\n\n\n");
printf("\n\n\n 按任意键后将显示领书单");
getch();
print_book_list(head_book);
delete_file(a);
}
}
void buyer()/*采购员模块*/ /************************************************************************************************************************/
{USER *head_buyer;
BOOK *absent_books;
BOOK*new_adding=NULL;
head_buyer=user_input();/*输入采购员的信息*/
if(head_buyer==NULL)return;
for(;;)
{
switch(buyer_menu())/*菜单*/
{case '0':switch(quit()){case'1':about_system();exit(0);break;
case'0':break;
}
break;
case '1':/*输入进书单*/
new_adding=input_book_list(new_adding);
new_adding=together(new_adding);/*归并相同名称书籍的数量*/
books_list_save(new_adding,"new_add");
print_book_list(new_adding);
add_to_store(new_adding);
break;
case '2':absent_books=load("lack");
if(absent_books)
{absent_books=together(absent_books);
books_list_save(absent_books,"lack");
system("cls");
printf("\n\n\n 提示\n\n");
printf(" 在您查询过缺书单之后,系统将会删除缺书单\n\n\n\n");
printf("\n\n\n 按任意键后将显示缺书单");
getch();
print_book_list(absent_books);
delete_file("lack");
}else {system("cls");printf("\n\n\n\n\n\ 暂无缺书记录!!!");getch();}
break;/*查看书库缺书单*/
}
}
}
char buyer_menu()/*采购员菜单*/
{char n;
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep); /*取得当地时间*/
system("cls");/*刷屏*/
printf(" |*************************************************************|\n");
printf(" | 今天是 %d年%d月%d日 ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);week_day();
printf(" |=============================================================|\n");
printf(" | 欢迎使用我们的系统 |\n");
printf(" | |\n");
printf(" | (按 '0' 退出,) |\n");
printf(" |===========================MENU==============================|\n");
printf(" | 输入您的选择(0-2): |\n");
printf(" | 0.退出 |\n");
printf(" | 1.填写进书单 |\n");
printf(" | 2.查看缺书单 |\n");
printf(" | |\n");
printf(" | |\n");
printf(" | |\n");
printf(" |*************************************************************|\n");
printf("\n\t\t\t您的选择是:");
scanf("%s",&n);
return(n);
}
void add_to_store(BOOK*new_adding)/*加到库存*/
{
BOOK *p,*head_store;
p=head_store=load("store");/*先载入库存的链表*/
while(p->next)p=p->next;
p->next=new_adding;/*将新的链表接如库存链表表尾*/
head_store=together(head_store);/*归并相同的名称书籍*/
books_list_save(head_store,"store");
}
void issuer()/*发行人员模块*/
{USER *head_issuer,*head_user;
BOOK *head_book,*head_new,*head_store=NULL;
head_issuer=user_input();/*输入采购员的信息*/
if(head_issuer==NULL)return;
for(;;)
{ /*******************************************************************************************************************/
switch(issuer_menu())/*菜单*/
{case '0':switch(quit()){case'1':about_system();exit(0);break;
case'0':break;
}
case '1':dispose_buy_list();/*返回领书单给用户*/
break;
case '2':head_new=load("new_add");/*查看进书通知*/
if(head_new)print_book_list(head_new);
else {system("cls");printf("\n\n\n\n 尚无进书通知");getch();}
break;/*显示书单(总共10行)*/
case '3':if(load("store")==NULL)
{head_store=input_book_list(head_store);
head_store=together(head_store);
books_list_save(head_store,"store");
print_book_list(head_store);
}
else{system("cls");printf("库存表已经存在,收到进书通知之后系统将自动更新库存");getch();}
break;
case '4':head_store=load("store");/*查看库存*/
print_book_list(head_store);
break;
}
}
}
char issuer_menu()/*发行人员菜单*/
{char n;
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep); /*取得当地时间*/
system("cls");/*刷屏*/
printf(" |*************************************************************|\n");
printf(" | 今天是 %d年%d月%d日 ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);week_day();
printf(" |=============================================================|\n");
printf(" | 欢迎使用我们的系统 |\n");
printf(" | |\n");
printf(" | (按 '0' 退出,) |\n");
printf(" |===========================MENU==============================|\n");
printf(" | 请输入您的选择(1-4): |\n");
printf(" | 0.退出 |\n");
printf(" | 1.处理订购单 |\n");
printf(" | 2.查看进书通知 |\n");
printf(" | 3.输入系统初始的库存书籍 |\n");
printf(" | 4.查看库存 |\n");
printf(" | |\n");
printf(" |*************************************************************|\n");
printf("\n\t\t\t您的选择是:");
scanf("%s",&n);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -