// 学生课程选修(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语言课程设计--学生选修课程管理系统,可用于课程设计,答辩。
试设计一选修课程系统,使之能提供一下功能: (1)系统以菜单方式工作; (2)课程信息和学生信息的录入功能(课程信息有文件保存)----输入; (3)课程信息浏览功能----输出; (4)查询功能(至少一种查询方式)---算法; (5)按...
本课程设计旨在设计一个学生选修课程管理系统,旨在提高学生的C语言编程能力和软件设计能力。该系统要求学生根据自己的需求选择课程,并能够提供课程信息录入、查询和选修功能。 知识点1:C语言基础知识 * 变量...
本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以及相应的课程信息管理。该系统由两个类组成,一个包含学生的学号、姓名、选课...
在本项目中,我们设计并实现了一个基于C++的学生选修课程系统。该系统主要面向高校学生群体,旨在帮助他们根据自身需求进行课程选择。系统涵盖了对课程的基本管理功能,包括添加课程、查询课程信息、显示所有课程、...
本文档是关于C++课程设计的一份报告,旨在设计一个学生选修课选课系统。该系统的目的是为了方便学生选择选修课程,提高教学效率和学生自主学习能力。 一、前言 在现代教育系统中,学生选修课选课系统是一个非常重要...
学生选修课程系统设计是计算机科学与技术领域中常见的课程设计项目,主要目的是让学生通过实践掌握C++编程语言以及面向对象编程的概念。本系统旨在提供一个便捷的平台,供学生选择和管理自己的课程,同时也方便教师...
针对教材上的学生-课程-选课数据库,编写一个数据库应用程序,让同学们可以通过该应用查看课程信息并进行选课。功能应包括: 1. 按学号查看某位同学已修和已选修的全部课程; 2. 可以查看选修某门课程的全部同学,并...
【管理信息系统课程设计---学生选修课管理系统】 本设计旨在为信息工程学院的学生提供一个高效、便捷的学生选修课管理平台。系统涵盖了课程选择、信息管理、数据分析等多个方面,旨在优化教学资源分配,提高教学...
本次课程设计的任务是设计并开发一个中学生成绩管理信息系统,使用C++编程语言,重点在于实现信息管理系统的功能,并锻炼学生的C++编程能力和数据结构应用能力。该系统的主要目标是为用户提供对学生成绩的录入、查询...
试设计一选修课程系统,使之能提供以下功能: 1、系统以菜单方式工作 2、课程信息录入功能(课程信息用文件保存)--输入 3、课程信息浏览功能--输出 4、课程信息查询功能--算法 查询方式 按学分查询 按课程...
本项目是一个基于C++语言实现的学生选修课管理系统。系统主要功能包括管理学生信息、添加学生选修课程及成绩、计算平均分等。该系统通过面向对象的设计方法实现了数据结构与算法的有效结合,不仅体现了C++语言的强大...
C语言课程设计报告--学生选修课程管理系统
学生选课系统是一个针对高校学生选课而开发的学生选课信息管理系统,本系统可以使学生更方便的选课。 针对学生选课这一环节,本系统从管理员对学生、教师、课程信息管理以及学生自主选课退课两个大方面进行了设计,基本...
大学生选修选课-大学生选修选课系统-大学生选修选课系统源码-大学生选修选课管理系统-大学生选修选课管理系统java代码-大学生选修选课系统设计与实现-基于springboot的大学生选修选课系统-基于Web的大学生选修选课...
学生选修课程系统设计是一个基于C++编程语言的软件应用,旨在帮助学生按照特定规则(如总学分要求)选择课程。系统具有多种功能,包括菜单驱动的操作界面、课程信息的录入、浏览、查询以及选修课程的删除与修改。 1...
C语言的学生课程选修系统设计,功能不是特别多。(txt文件)
在本课程设计中,我们关注的是“学生选课信息管理系统”的开发,这是一项利用数据库技术提升教育领域信息管理效率的任务。系统主要基于SQL SERVER数据库作为后台存储,前端采用VB(Visual Basic)进行应用软件的开发...