您的位置:首页 > 编程语言 > C语言/C++

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

2009-08-25 15:17 666 查看
//   学生课程选修(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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 出版 fp null library insert