现在的位置: 首页 > 综合 > 正文

学生课程选修–图书管理系统(C++版)第一部分

2013年08月11日 ⁄ 综合 ⁄ 共 7494字 ⁄ 字号 评论关闭

//   学生课程选修(C语言版)---图书管理系统(C++版)
// 学生课程选修--图书管理系统 (main).cpp
 
#include "iostream.h"
#include "iomanip.h" 
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "process.h"
#include "functionstu.h"
#include "functionlib.h"
void main()
{
 int j;
 char flag='a';         //设置标志符,以便输入错误后重新输入
 char enter;
 int i;
 char c;
 SUB *head;
 int ilib;
 char clib,clibnew;
    LRY *headlib;
 
 while(flag!=' '){
  for(j=0;j<80;j++)
   cout<<'*';
  cout<
  cout<<'/t';
  cout<<"进入学生课程选修系统请输入s,进入图书管理系统请输入l(均用小写):"<
        for(j=0;j<80;j++)
   cout<<'*';
  cout<
     enter=cin.get();

 switch(enter)
 {  case 's':

 
 printf("/n/n");
 for(i=0;i<34;i++)
  printf("*");
 printf("课程信息录入");
 for(i=0;i<34;i++)
  printf("*");
 printf("/n/n");
 
 head=create_form();
 savefile(head);
 
 printf("/n/n");
    for(i=0;i<34;i++)
  printf("*");
 printf("课程信息输出");
 for(i=0;i<34;i++)
  printf("*");
 printf("/n/n");
 
 prin(head);
 
 printf("/n/n");
 for(i=0;i<34;i++)
  printf("*");
 printf("课程信息查找");
 for(i=0;i<34;i++)
  printf("*");
 printf("/n/n");
 
 search(head);
 
 printf("/n/n");
 for(i=0;i<34;i++)
  printf("*");
 printf("课程信息插入");
 for(i=0;i<34;i++)
  printf("*");
 printf("/n/n");
 
 head=insert(head);                        //注意此处的必要性,函数insert的的返回值重新赋给head!
 savefileadd(head);
 printf("修改后的信息为:/n");
 prin(head);
 
 printf("/n/n");
 for(i=0;i<34;i++)
  printf("*");
 printf("课程信息删除");
 for(i=0;i<34;i++)
  printf("*");
 printf("/n/n");
 
 head=del(head);                           //注意此处的必要性,函数del的的返回值重新赋给head!
 savefiledel(head);
 printf("修改后的课程信息为:/n");
 prin(head);
 
 printf("/n/n");
 for(i=0;i<34;i++)
  printf("*");
 printf("课程选修");
 for(i=0;i<34;i++)
  printf("*");
 printf("/n/n");
 
 choose(head);
 printf("是否再次显示文件“subjects.txt”的内容(Y/N)?/n");
 getchar();                      //接收choose函数中最后输入的回车字符
 c=getchar();
 if(c=='y'||c=='Y'){
  printf("/n");
  printf("“subjects.txt”文件的信息为:/n");
  readfile();
 }
 else printf("程序结束!/n");
 flag=' ';
break;
   //  分界处
 
 case 'l':
  
 cout<
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<<"图书信息输入";
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<
   
 headlib=createlib();
 savefilelib(headlib);
cout<
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<<"图书信息输出";
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<
    prinlib(headlib);
   
    cout<
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<<"图书信息查找";
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<
    searchlib(headlib);
cout<
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<<"图书信息插入";
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<
    headlib=insertlib(headlib);
 cout<<"修改后的信息为:"<
 prinlib(headlib);
cout<
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<<"图书信息删除";
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<
    headlib=dellib(headlib);
 cout<<"修改后的信息为:"<
 prinlib(headlib);
cout<
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<<"图书信息修改";
    for(ilib=0;ilib<34;ilib++)
    cout<<"*";
    cout<
    headlib=correctlib(headlib);
 cout<<"修改后的信息为:"<
 prinlib(headlib);
 savefilelibnew(headlib);
cout<<"是否再次显示文件“library.txt”的内容(Y/N)?"<
 cin.get();                      //接收回车
 clib=cin.get();
 if(clib=='y'||clib=='Y'){
  cout<
  cout<<"“library.txt”文件的信息为:"<
  readfilelib();
 }
cout<<"是否再次显示文件“librarynew.txt”的内容(Y/N)?"<
 cin.get();                      //接收回车
 clibnew=cin.get();
 if(clibnew=='y'||clibnew=='Y'){
  cout<
  cout<<"“librarynew.txt”文件的信息为:"<
  readfilelibnew();
 }
 else cout<<"程序结束!"<
 flag=' ';
break;
default: cout<<"输入错误!"<
 }                     //switch结束符
 cin.get();
 
  }                     //while结束符
 
}
 
 
//functionlib.h
 
 
 typedef struct library
{
 int num;
 char name[20];
 char author[10];
 char kind[10];
 char pubunit[30];
 char pubtime[20];
 int price;
 struct library *next;
}LRY;

LRY *createlib()
{
 LRY *p,*headlib,*tail;
 int num,price;
 char name[20],kind[10],author[10];
 char pubunit[30],pubtime[20];
 int size=sizeof(LRY);
 
 headlib=tail=NULL;
 cout<<"输入图书信息:(图书登陆号,名称,作者,分类号,出版单位,日期,价格)"<
 cin>>num>>name>>author>>kind>>pubunit>>pubtime>>price;
 while(num)
 {
  p=(LRY *)malloc(size);
  p->num=num;
  strcpy(p->name,name);
  strcpy(p->author,author);
  strcpy(p->kind,kind);
  strcpy(p->pubunit,pubunit);
  strcpy(p->pubtime,pubtime);
  p->price=price;
  if(headlib==NULL)
   headlib=p;
  else
   tail->next=p;
  tail=p;
  cin>>num>>name>>author>>kind>>pubunit>>pubtime>>price;
 }
 tail->next=NULL;
 return headlib;
}

void savefilelib(LRY *headlib)
{
 LRY *p;
 FILE *fp;
 if((fp=fopen("e://library.txt","w"))==NULL){
  cout<<"open fail!"<
  exit(0);
 }
 fprintf(fp,"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格/n");
 for(p=headlib;p;p=p->next)
  fprintf(fp,"%4d%15s%10s%11s%18s%12s%6d/n",p->num,p->name,p->author,p->kind,p->pubunit,p->pubtime,p->price);
 if(fclose(fp)){
  cout<<"close fail!"<
   exit(0);
 }
 cout<<"创建后的信息已放入E盘根目录的“library.txt”文件中"<
}

void savefilelibnew(LRY *headlib)
{
 LRY *p;
 FILE *fp;
 if((fp=fopen("e://librarynew.txt","w"))==NULL){
  cout<<"open fail!"<
  exit(0);
 }
 fprintf(fp,"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格/n");
 for(p=headlib;p;p=p->next)
  fprintf(fp,"%4d%15s%10s%11s%18s%12s%6d/n",p->num,p->name,p->author,p->kind,p->pubunit,p->pubtime,p->price);
 if(fclose(fp)){
  cout<<"close fail!"<
   exit(0);
 }
 cout<<"修改后的信息已放入E盘根目录的“librarynew.txt”文件中"<
}
 
 

void prinlib(LRY *headlib)
{
 LRY *p=headlib;
 if(p==NULL){
  cout<<"无信息"<
  return;
 }
 cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
 for(p=headlib;p;p=p->next){
    cout<<<P->num<<<P->name<<<P->author;
    cout<<<P->kind<<<P->pubunit<<<P->pubtime;
    cout<<<P->price<
    }
}
 

void searchlib(LRY *headlib)
{
    char c='a';
    int a,t=1;
    char name[20],author[10];
    LRY *p=headlib;

    while(c!=' ')
    {
      cout<<"按书名查找请输入1,按作者查找输入2:"<
      cin>>a;
      switch(a)
      {
        case 1: cout<<"输入要查找的书名:"<
        cin>>name;
        cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
        for(p=headlib;p;p=p->next)
            if(strcmp(name,p->name)==0){
                cout<<<P->num<<<P->name<<<P->author;
             cout<<<P->kind<<<P->pubunit<<<P->pubtime;
                cout<<<P->price<
                t=0;
            }
            if(t) cout<<"未找到!"<
            t=1;
            break;
        case 2:cout<<"输入要查找图书的作者名:"<
        cin>>author;
        cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
        for(p=headlib;p;p=p->next)
            if(strcmp(author,p->author)==0){
                cout<<<P->num<<<P->name<<<P->author;
             cout<<<P->kind<<<P->pubunit<<<P->pubtime;
                cout<<<P->price<
                t=0;
            }
            if(t) cout<<"未找到!"<
            t=1;
    }
    cout<<"继续查找请按回车,结束请按空格"<
    cin.get();                                 //接收case中最后输入的回车键
 c=cin.get();
    }
}

LRY *insertlib(LRY *headlib)
{
 LRY *ptr,*ptr2,*lib;
 int size=sizeof(LRY);
 char ch='a';
 while(ch!=' '){
      lib=(LRY *)malloc(size);
      ptr=lib;
      cout<<"输入要插入的课程信息:"<
      cin>>lib->num>>lib->name>>lib->author>>lib->kind>>lib->pubunit>>lib->pubtime>>lib->price;
       if(headlib==NULL){
         headlib=ptr;
         headlib->next=NULL;
    }
       else{
          for(ptr2=headlib;ptr2;ptr2=ptr2->next)
             if(ptr2->next==NULL){
             ptr2->next=lib;
             lib->next=NULL;
             break;
       }
    }
    cout<<"继续插入请按回车,结束请按空格:"<
    cin.get();                       //接收上面最后输入的回车
    ch=cin.get();
    }
 return headlib;
}
 
LRY *dellib(LRY *headlib)
{
 LRY *p1,*p2;
 char ch='a';
 int num;
 while(ch!=' '){
  cout<<"输入想要删除的图书登陆号:"<
     cin>>num;;
     if(headlib->num==num){
      p2=headlib;
      headlib=headlib->next;
      free(p2);
  }
     if(headlib==NULL)
      return NULL;
     p1=headlib;
     p2=headlib->next;
     while(p2){
    if(p2->num==num){
       p1->next=p2->next;
       free(p2);
    }
     else p1=p2;
     p2=p1->next;
  }
  printf("继续删除请按回车,结束请按空格:/n");
  cin.get();                              // 接收回车
  ch=cin.get();
 }
 return headlib;
}
LRY *correctlib(LRY *headlib)
{
 LRY *p;
 int num,t=1;
 char c='a';
 while(c!=' ')
 {
  cout<<"输入想要修改的图书登陆号:"<
  cin>>num;
  for(p=headlib;p;p=p->next)
   if(p->num==num){
    cout<<"您要修改的图书的信息为:"<
    cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
    cout<<<P->num<<<P->name<<<P->author;
             cout<<<P->kind<<<P->pubunit<<<P->pubtime;
                cout<<<P->price<
    cout<<"请输入新信息:"<
    cin>>p->num>>p->name>>p->author>>p->kind>>p->pubunit>>p->pubtime>>p->price;
    t=0;
    break;
   }
   if(t) cout<<"不存在该图书!"<
   cout<<"继续修改请按回车,结束请按空格"<
   cin.get();
   c=cin.get();
 }
 return headlib;
}

void readfilelib()                    //将文件重新读出
{
 char c;
    int num,price;
    char name[20];
 char author[10];
 char kind[10];
 char pubunit[30];
 char pubtime[20];
    FILE *fp=fopen("e://library.txt","r");
    while(!feof(fp))
    {
        if((c=fgetc(fp))=='/n')
        break;
    }
    cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
    while(!feof(fp))
    {
        fscanf(fp,"%d%s%s%s%s%s%d/n",&num,name,author,kind,pubunit,pubtime,&price);
        cout<<<NUM<<SETW(15)<<NAME<<SETW(10)<<AUTHOR;
     cout<<<KIND<<SETW(18)<<PUBUNIT<<SETW(12)<<PUBTIME;
     cout<<<PRICE<<ENDL;
    }
    fclose(fp);
}

void readfilelibnew()                    //将文件重新读出
{
 char c;
    int num,price;
    char name[20];
 char author[10];
 char kind[10];
 char pubunit[30];
 char pubtime[20];
    FILE *fp=fopen("e://librarynew.txt","r");
    while(!feof(fp))
    {
        if((c=fgetc(fp))=='/n')
        break;
    }
    cout<<"登陆号     图书名     图书作者    图书分类号     出版单位     出版日期   价格"<
    while(!feof(fp))
    {
        fscanf(fp,"%d%s%s%s%s%s%d/n",&num,name,author,kind,pubunit,pubtime,&price);
        cout<<<NUM<<SETW(15)<<NAME<<SETW(10)<<AUTHOR;
     cout<<<KIND<<SETW(18)<<PUBUNIT<<SETW(12)<<PUBTIME;
     cout<<<PRICE<<ENDL;
    }
    fclose(fp);
}

抱歉!评论已关闭.