// 学生课程选修(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++源程序 学生选修课程系统设计c++源程序 学生选修课程系统设计c++源程序 学生选修课程系统设计c++源程序
C语言课程设计--学生选修课程管理系统,可用于课程设计,答辩。
C++课程设计-选修课系统C++课程设计-选修课系统C++课程设计-选修课系统C++课程设计-选修课系统C++课程设计-选修课系统
试设计一选修课程系统,使之能提供一下功能: (1)系统以菜单方式工作; (2)课程信息和学生信息的录入功能(课程信息有文件保存)----输入; (3)课程信息浏览功能----输出; (4)查询功能(至少一种查询方式)---算法; (5)按...
管理信息系统课程设计---学生选修课管理系统
C语言课程设计-学生选修课程管理系统.doc
针对教材上的学生-课程-选课数据库,编写一个数据库应用程序,让同学们可以通过该应用查看课程信息并进行选课。功能应包括: 1. 按学号查看某位同学已修和已选修的全部课程; 2. 可以查看选修某门课程的全部同学,并...
c++课程设计之学生选修课程系统设计
试设计一选修课程系统,使之能提供以下功能: 1、系统以菜单方式工作 2、课程信息录入功能(课程信息用文件保存)--输入 3、课程信息浏览功能--输出 4、课程信息查询功能--算法 查询方式 按学分查询 按课程...
c++课程设计-学生选修课选课系统.doc
c++课程设计:学生选修课程管理系统设计报告,内含完整代码。
C语言课程设计报告--学生选修课程管理系统
c++课程设计-学生选修课选课系统参考.pdf
学生选课系统是一个针对高校学生选课而开发的学生选课信息管理系统,本系统可以使学生更方便的选课。 针对学生选课这一环节,本系统从管理员对学生、教师、课程信息管理以及学生自主选课退课两个大方面进行了设计,基本...
大学生选修选课-大学生选修选课系统-大学生选修选课系统源码-大学生选修选课管理系统-大学生选修选课管理系统java代码-大学生选修选课系统设计与实现-基于springboot的大学生选修选课系统-基于Web的大学生选修选课...
1. 学生成绩管理系统中不同使用单位(用户)的学生人数事先无法确定. 2. 该学生成绩管理系统要求有学生成绩录入,查询,修改,删除,保存文件. 3. 系统使用文字菜单,用户通过选择菜单项的编号,实现系统对子模块...
数据库课程设计 选修课管理系统 java c# VB 。。。。。 数据库课程设计---选修课管理系统(好几份啦)
C语言的学生课程选修系统设计,功能不是特别多。(txt文件)