`
ldb2741
  • 浏览: 31835 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

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

阅读更多

// 学生课程选修(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);
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics