急求《学生信息管理系统》或《学生成绩管理系统》或《图书馆图书管理系统》的纯C++源代码,最好是用到类的,谢谢,必给分

magus_yang 2003-05-23 11:18:15
急求《学生信息管理系统》或《学生成绩管理系统》或《图书馆图书管理系统》的纯C++源代码,最好是用到类的,谢谢,必给分
...全文
822 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcxu5200 2010-06-24
  • 打赏
  • 举报
回复
C++学习中。。。。。。唉,有点困难!
robin97 2003-06-01
  • 打赏
  • 举报
回复
………………………………
liuyuw 2003-06-01
  • 打赏
  • 举报
回复
怎么和近年交大软件工程一年级的CPP上机考题一样啊?我做的就是图书馆图书管理系统,其他两个是我的同学,其实3道题没本质区别:)
「已注销」 2003-06-01
  • 打赏
  • 举报
回复
第二个头文件TLB。H

class TLb
{
public:
int Fhn(){return N;}
int Fhm(){return M;}
struct student *Del( struct student *head,int n,int m); //删除记录
struct student *Creat(); //新建文件
void Save(struct student *head,int n,int m); //存盘
struct student *Insert( struct student *head,int n,int m); //插入记录
struct student *Loadlb(); //读盘
void Print(struct student *head,int n,int m); //输出
private:
int N,M;
};

struct student *TLb::Del( struct student *head,int n,int m)
{

struct student *p0,*p1,*p2;
p2=p1=p0=head;
if(head==0){printf("\n\n已经没有文件了,不能删除!\n");goto end;}
printf("\n请选择删除方式:\n\n");
printf("\n 用学号删除请输入 1\n");
printf(" 用姓名删除请输入 2\n");
printf(" 结束任务请输入 3\n");
int a;
scanf("%d",&a);
if(a==1)
{long b;
printf("\n请输入要删除的学号:\n");
scanf("%ld",&b);
if(b==p1->num&&p1==p0)
{head=p1->next;
n--;printf(" \n %d号同学的资料已删除,此文件还有%d个记录!\n",b,n);goto end;
}
while(p1->num!=b&&p1->next!=0)
{p2=p1;p1=p1->next;
}
if(b==p1->num&&p1!=p0)
{p2->next=p1->next;
n--;printf(" \n %d号同学的资料已删除,此文件还有%d个记录!\n",b,n);goto end;
}
else
{printf("\n\n没有这位同学,请核对后重新输入!\n");
}

}
if(a==2)
{
char c[30];
printf("\n请输入要删除的学生姓名:\n");
scanf("%s",c);
if(strcmp(c,p1->name)==0&&p1==p0)
{head=p1->next;
n--;printf("\n %s同学的资料已删除,此文件还有%d个记录!\n",c,n);goto end;
}
while(strcmp(c,p1->name)!=0&&p1->next!=0)
{
p2=p1;p1=p1->next;
}
if(strcmp(c,p1->name)==0&&p1!=p0)
{p2->next=p1->next;
n--;printf("\n %s同学的资料已删除,此文件还有%d个记录!\n",c,n);goto end;
}
else
{printf("\n\n没有这位同学,请核对后重新输入!\n");
}
} if(a>=3)printf(" 结束任务!\n");
end:{N=n;M=m;
return (head);
}
}
struct student *TLb::Creat()
{
int n,m;
n=0;struct student *head=0;
struct student *p1,*p2;
int j,a=1;
printf("\n请输入科目数:\n");
scanf("%d",&m);
while(a!=0)
{
printf("\n\n添加记录请输入 1\n");
printf("结束任务请输入 0\n");
scanf("%d",&a);
if(a==1)
{
n++;
if(n==1)
{ p1=p2=(struct student *)malloc(sizeof(struct student));
head=p1;
}

p2->next=p1;
p2=p1;

printf("\n请输入学号\n");
scanf("%ld",&p1->num);
printf("请输入%ld号同学姓名\n",p1->num);
scanf("%s",p1->name);
printf("请输入%s同学电话\n",p1->name);
scanf("%s",p1->tel);
printf("请输入%s同学地址\n",p1->name);
scanf("%s",p1->add);
printf("请输入%s同学E_mail\n",p1->name);
scanf("%s",p1->email);
printf("请输入%s同学",p1->name);
for(j=0;j<m;j++)
{ printf("第%d科成绩(共%d科)\n",j+1,m);
scanf("%ld",&p1->score[j]);
}
p1=(struct student *)malloc(sizeof(struct student));

}
if(a==0)
{ p2->next=0;
break;
}
}
printf("\n\n已建立新文件,此文件有%d个记录\n\n",n);
N=n;M=m;

return (head);

}
void TLb::Save(struct student *head,int n,int m)
{

struct student *p;
int i,w=0;
p=head;
FILE *fp;
char f[50];
printf("请输入文件名:\n");
scanf("%s",f);
fp=fopen(f,"wb");
for(i=0;i<n;i++)
{if(fwrite(p,sizeof(struct student),1,fp)!=1)
{printf("文件写入错误!\n");
}w++;
p=p->next;
printf("正在写入文件\n");
}
fwrite(&n,sizeof(int),1,fp);
fwrite(&m,sizeof(int),1,fp);
if(w==n){printf(" \n 文件已存盘!\n\n\n");}
fclose(fp);
}
struct student *TLb::Insert(struct student *head,int n,int m)
{
struct student *p0,*p1,*p2;

int j;
p1=p2=head;
p0=(struct student *)malloc(sizeof(struct student));
printf("\n请输入要插入的学号\n");
scanf("%ld",&p0->num);
printf("请输入%ld号同学姓名\n",p0->num);
scanf("%s",p0->name);
printf("请输入%s同学电话\n",p0->name);
scanf("%s",p0->tel);
printf("请输入%s同学地址\n",p0->name);
scanf("%s",p0->add);
printf("请输入%s同学E_mail\n",p0->name);
scanf("%s",p0->email);
printf("请输入%s同学",p0->name);
for(j=0;j<m;j++)
{ printf("第%d科成绩(共%d科)\n",j+1,m);
scanf("%ld",&p0->score[j]);
}
if(head==0)
{head=p0;
p0->next=0;
}
else
{
if(p0->num<p1->num&&p1==head)
{head=p0;
p0->next=p1;n++;
goto end;
}
while(p0->num>=p1->num&&p1->next!=0)
{p2=p1;p1=p1->next;
}
if(p0->num<p1->num)
{

p2->next=p0;
p0->next=p1;

}
else
{p1->next=p0;
p0->next=0;
}
}

n++;
printf("\n\n已插入新记录,现在此文件有%d个记录\n\n",n);goto end;
end:{N=n;M=m;
return (head);
}
}
struct student *TLb::Loadlb()
{
struct student *head,*p1,*p2;
int n,m;
struct student stud[2001];
int i,j;
FILE *fp;
char f[50];
printf("请输入文件名:\n");
scanf("%s",f);
fp=fopen(f,"rb");
fseek(fp,-8L,2);
fread(&n,sizeof(int),1,fp);
fseek(fp,-4L,2);
fread(&m,sizeof(int),1,fp);
rewind(fp);
for(i=0;i<n;i++)
{

if(fread(&stud[i],sizeof(struct student),1,fp)!=1)printf("读入错误\n");

}

p1=(struct student *)malloc(sizeof(struct student));
head=p2=p1;

for(i=0;i<n;i++)
{


p2->num=stud[i].num;
strcpy(p2->name,stud[i].name);
strcpy(p2->tel,stud[i].tel);
strcpy(p2->add,stud[i].add);
strcpy(p2->email,stud[i].email);
for(j=0;j<m;j++)
{p2->score[j]=stud[i].score[j];
}
if(i<n-1)
{p1=(struct student *)malloc(sizeof(struct student));
p2->next=p1;
p2=p1;
}


} p2->next=0;
N=n;M=m;
return (head);
}
void TLb::Print(struct student *head,int n,int m)
{

struct student *p;
int j;
p=head;
if(head==0){printf("\n 没有文件不能输出!\n");goto end;}
while(p!=NULL)
{printf("学号\t姓名\t\t电话\t\t地址\n");
printf("%ld\t%s\t\t%s\t\t%-20s%\n",p->num,p->name,p->tel,p->add);
printf("E_mail\t\t\t分数\n");
printf("%-20s\t",p->email);
for(j=0;j<m;j++)
{printf("%-4ld",p->score[j]);
}
p=p->next; printf("\n\n");

}
printf("\n\n文件输出完毕,此文件共有%d个记录",n);
end:{printf("\n");}
}
「已注销」 2003-06-01
  • 打赏
  • 举报
回复
第一个头文件:TJGT。H
struct cj //定义新结构体类型
{
long nu;
char na[30];
long sc[20];
long tatol;
long pj;
};
struct student
{
long num;
char name[30];
char tel[50];
char add[70];
char email[70];
long score[20];
struct student *next;
};
class TJgt
{
public:
int Fhn(){return N;}
int Fhm(){return M;}
void Czzl(struct student *p,int n,int m); /*定义czzl函数查找某学生资料*/
void Czxs(struct student *p,int n,int m); /*定义czxs函数查找某学生有否挂科*/
void Cz(struct student *p,int n,int m); /*定义cz函数查找所有学生成绩及有否挂科*/
void Wjpb(struct student *p,int n,int m); /*定义wjPb函数从文件排榜*/
struct cj *Loadcj(); //从磁盘读入成绩文件
struct student *Load(); //从磁盘读入资料文件(非链表)
private:
int N,M;
};
void TJgt::Czzl(struct student *p,int n,int m) /*定义czzl函数查找某学生资料*/
{
char c[30];
long b;
int a,i,h;
printf("\n请选择查找方式: \n\n");
printf("用学号查找请输入 \"1\"\n");
printf("用姓名查找请输入 \"2\"\n");
printf("结束任务请输入 \"0\"\n");
scanf("%d",&a);
if(a==1)
{printf("请输入学号:\n");
scanf("%ld",&b);
h=0; printf("\n");
for(i=0;i<n;i++,p++)
{
if(b!=p->num)
{h++;
}
if(b==p->num)
{printf("学号\t姓名\t\t电话\t\t地址\n");
printf("%ld\t%s\t\t%s\t\t%-20s%\n",p->num,p->name,p->tel,p->add);
printf("E_mail\n");
printf("%-20s\t",p->email);
}
if(h==n)
{printf("\n\n没有这位同学,请查证!\n");
}
}
}
if(a==2)
{printf("请输入姓名:\n");
scanf("%s",c);
h=0;printf("\n");
for(i=0;i<n;i++,p++)
{
if(strcmp(c,p->name)!=0)
{h++;
}
if(strcmp(c,p->name)==0)
{printf("学号\t姓名\t\t电话\t\t地址\n");
printf("%ld\t%s\t\t%s\t\t%-20s%\n",p->num,p->name,p->tel,p->add);
printf("\nE_mail\n");
printf("%-20s\t",p->email);
}
}
if(h==n)
{ printf("\n\n没有这位同学,请查证!\n");
}
}

}
void TJgt::Czxs(struct student *p,int n,int m) /*定义czxs函数查找某学生有否挂科*/
{
char c[30];
long b;
int a,i,j,k,l,h;
printf("\n请选择查找方式: \n\n");
printf("用学号查找请输入 \"1\"\n");
printf("用姓名查找请输入 \"2\"\n");
printf("结束任务请输入 \"0\"\n");
scanf("%d",&a);
if(a==1)
{
printf("请输入学号:\n");
scanf("%ld",&b);
h=0; printf("\n");
for(i=0;i<n;i++,p++)
{if(b!=p->num)
{h++;
}
if(b==p->num)
{ printf("%ld号学生的成绩是:\n",p->num);
for(l=0;l<m;l++)
{printf("%ld\t",p->score[l]);
}
printf("\n");
for(j=0,k=0;j<m;j++)
{
if(p->score[j]<60)
{k++;
}
}
if(k!=0)
{printf("\n\n%ld号%s同学成绩不理想,挂了%d科,需要继续努力!\n",p->num,p->name,k);
}
if(k==0)
{printf("\n\n%ld号%s同学成绩很好,没有挂科.\n",p->num,p->name);
}

}if(h==n)
{printf("\n\n没有这位同学,请查证!\n");
}
}
}

if(a==2)
{
printf("请输入姓名:\n");
scanf("%s",c);
h=0;printf("\n");
for(i=0;i<n;i++,p++)
{
if(strcmp(c,p->name)!=0)
{h++;
}

if(strcmp(c,p->name)==0)
{ printf("%s同学的成绩是:\n",c);
for(l=0;l<m;l++)
{printf("%ld\t",p->score[l]);
} printf("\n");
for(j=0,k=0;j<m;j++)
{
if(p->score[j]<60)
{k++;
}
}
if(k!=0)
{printf("\n%s同学成绩不理想,挂了%d科,需要继续努力!\n",p->name,k);
}
if(k==0)
{printf("\n%s同学成绩很好,没有挂科.\n",p->name);
}

}if(h==n)
{printf("\n\n没有这位同学,请查证!\n");
}
}

}
}
void TJgt::Cz(struct student *p,int n,int m) /*定义cz函数查找所有学生成绩及有否挂科*/
{
int i,j,k,l,q=0;
for(i=0;i<n;i++,p++)
{for(j=0,k=0;j<m;j++)
{
if(p->score[j]<60)
{k++;
}
}
if(k!=0)
{printf("\n%s同学成绩是:\n",p->name);
for(l=0;l<m;l++)
{printf("%-4ld",p->score[l]);
}
printf("\n%s同学成绩不理想,挂了%d科,需要继续努力!\n\n",p->name,k);
q++; }
}if(q==0)printf("没有挂科的同学\n");
}
void TJgt::Wjpb(struct student *p,int n,int m) /*定义wjPb函数从文件排榜*/
{
int i,j,o,w;
long a[70],b[70],sum,a1,b1;
struct student *p1[70];
struct student *q;
for(i=0;i<n;i++,p++)
{
for(j=0,sum=0;j<m;j++)
{sum+=p->score[j];
}
a[i]=sum;
b[i]=sum/m;
p1[i]=p;
}
for(i=0;i<n-1;i++) //总成绩按大小排序
{
for(o=0;o<n-1-i;o++)
{
if(a[o]<a[o+1])
{a1=a[o];a[o]=a[o+1];a[o+1]=a1;
q=p1[o];p1[o]=p1[o+1];p1[o+1]=q;
b1=b[o];b[o]=b[o+1];b[o+1]=b1;
}
}
}
printf("排榜成绩如下:\n");

for(j=0;j<n;j++)
{printf("第%d名%ld号%-s同学",j+1,p1[j]->num,p1[j]->name);
printf(" 分数");
for(i=0;i<m;i++)
{printf("%-4ld",p1[j]->score[i]);}
printf("总分%-4ld\t平均分%-4ld\n",a[j],b[j]);}
printf("\n\n祝贺%s同学获得第一名\n",p1[0]->name);

printf("\n\n\n 是否存盘?\n\n");
printf("\n存盘请输入 1\n");
printf("结束任务请输入0\n");
scanf("%d",&w);
if(w==1)
{ struct cj xs[70];
for(i=0;i<n;i++)
{
xs[i].nu=p1[i]->num;
strcpy(xs[i].na,p1[i]->name);
for(j=0;j<m;j++)
{xs[i].sc[j]=p1[i]->score[j];}
xs[i].tatol=a[i];
xs[i].pj=b[i];
}

FILE *fp; //把成绩存盘
int q=0;
char filename[20];
printf("\n 请输入文件名: \n");
scanf("%s",filename);
if((fp=fopen(filename,"wb"))==NULL) //存为二进制文件
{
printf("不能打开文件!\n");
}
for(i=0;i<n;i++)
{if(fwrite(&xs[i],sizeof(struct cj),1,fp)!=1)
{printf("\n\n文件写入错误!\n\n");}
q++;
}
if(q==n)
{printf("\n 资料成功写入!\n");
}
if(fwrite(&n,sizeof(int),1,fp)!=1)
{printf("整数写入错误!\n");
}
fwrite(&m,sizeof(int),1,fp);
fclose(fp);
}
if(w==0)
{printf("\n\n 结束任务!\n");
}

}
struct cj *TJgt:: Loadcj() //从磁盘读入成绩文件
{
int n,m;
struct cj xs[70];
struct cj *p; //定义新结构体类型
p=xs;
FILE *fp;
char f[30];
int i,j;
printf("请输入文件名 \n");
scanf("%s",f);
if((fp=fopen(f,"rb"))==0)
{printf("没有此文件!\n");
}

fseek(fp,-8L,2);
if(fread(&n,sizeof(int),1,fp)!=1)
{
printf("\n\n\n 警告!\n");
printf("\n\n 文件读入错误!请确定该文件是由本程序写入磁盘的!\n");
}
#ifdef LOVE
printf("后面的整数是%d\n",n);
#endif
fseek(fp,-4L,2);
if(fread(&m,sizeof(int),1,fp)!=1)
{printf("\n\n\n 警告!\n");
printf("\n\n 文件读入错误!请确定该文件是由本程序写入磁盘的!\n");
}
#ifdef LOVE
printf("后面的整数是%d\n",m);
#endif
rewind(fp);
for(i=0;i<n;i++)
if(fread(&xs[i],sizeof(struct cj),1,fp)!=1)
{if(feof(fp)) printf("文件读入错误!\n");
}
printf("排榜成绩如下:\n");

for(i=0;i<n;i++)
{printf("第%d名%d号%s同学",i+1,xs[i].nu,xs[i].na);
printf(" 分数");
for(j=0;j<m;j++)
{printf("%-4ld",xs[i].sc[j]);}
printf("总分%-4ld平均分%-4ld\n",xs[i].tatol,xs[i].pj);}
printf("\n\n祝贺%s同学获得第一名\n",xs[0].na);

N=n;M=m;
return (p);
}
struct student *TJgt::Load() //从磁盘读入资料文件
{
int m,n;
struct student *p;
static struct student stu[70];
p=stu;
FILE *fp;
char f[30];
int i;
printf("请输入学生资料的文件名 \n");
scanf("%s",f);
if((fp=fopen(f,"rb"))==0)
{printf("没有此文件!\n");
}

fseek(fp,-8L,2);
if(fread(&n,sizeof(int),1,fp)!=1)
{
printf("\n\n\n 警告!\n");
printf("\n\n 文件读入错误!请确定该文件是由本程序写入磁盘的!\n");
}
#ifdef LOVE
printf("后面的整数是%d\n",n);
#endif
fseek(fp,-4L,2);
if(fread(&m,sizeof(int),1,fp)!=1)
「已注销」 2003-06-01
  • 打赏
  • 举报
回复
第一个文件:
#include <iostream.h>
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#include "tjgt.h"
#include "tlb.h"
void main()
{static char a[]="qinwei";//密码
char b[7];
printf("\n\n\n 请输入密码:\n\n\n");
scanf("%s",b);
if(strcmp(b,a)==0)
{
TJgt w;
TLb q;
struct student *head;
struct cj *p;
int a,b,c;
int n,m;
fuck:cout<<"\n\n 建立 新学生文件请输入 1"<<endl;
cout<<" 从磁盘 读入《学生文件》 请输入 2"<<endl;
cout<<" 向磁盘学生文件 插入记录请输入 3"<<endl;
cout<<" 删除 磁盘学生文件的某一记录请输入 4\n"<<endl;

cout<<" 把学生文件中成绩 排榜 请输入 5"<<endl;
cout<<" 从磁盘 读入《排榜成绩文件》 请输入 6\n"<<endl;
cout<<" 查 所有挂科学生 请输入 7"<<endl;
cout<<" 查 某学生成绩 及有否挂科请输入 8"<<endl;
cout<<" 查 某学生资料 请输入 9\n"<<endl;
scanf("%d",&a);
switch(a)
{
case 1: head=q.Creat();
cout<<"\n 是否存盘? 1/0\n"<<endl;
cin>>c;
if(c==1){n=q.Fhn();m=q.Fhm();q.Save(head,n,m);}
else cout<<" 结束任务!"<<endl;
break;
case 2: head=q.Loadlb();n=q.Fhn();m=q.Fhm();q.Print(head,n,m);break;
case 3: head=q.Loadlb();n=q.Fhn();m=q.Fhm();head=q.Insert(head,n,m); cout<<"\n 是否存盘? 1/0\n"<<endl;
cin>>c;
if(c==1){n=q.Fhn();m=q.Fhm();q.Save(head,n,m);}
else cout<<" 结束任务!"<<endl;break;
case 4: head=q.Loadlb();n=q.Fhn();m=q.Fhm();head=q.Del(head,n,m); cout<<"\n 是否存盘? 1/0\n"<<endl;
cin>>c;
if(c==1){n=q.Fhn();m=q.Fhm();q.Save(head,n,m);}
else cout<<" 结束任务!"<<endl;break;

case 5:{printf("\n");head=w.Load();n=w.Fhn();m=w.Fhm();w.Wjpb(head,n,m); break;} /*调用pb函数*/
case 6:{printf("\n");p=w.Loadcj();; break;} /*调用ZL函数*/
case 7:{printf("\n");head=w.Load();n=w.Fhn();m=w.Fhm();w.Cz(head,n,m); break;} /*调用cz函数*/
case 8:{printf("\n");head=w.Load();n=w.Fhn();m=w.Fhm();w.Czxs(head,n,m); break;} /*调用czxs函数*/
case 9:{printf("\n");head=w.Load();n=w.Fhn();m=w.Fhm();w.Czzl(head,n,m); break;} /*调用czzl函数*/
default:break;
}

printf("\n\n 是否继续?1/0\n");
scanf("%d",&b);
if(b==1){goto fuck;}if(b==0){printf(" \n\n 结束任务!\n");return;}
}
else printf("\n\n\n 密码不正确,您无权使用本程序!\n\n");;

}
RouteSim 2003-06-01
  • 打赏
  • 举报
回复
不要代码 写程序的结构
不要代码 要文档

要的是一种设计的思想 组织的结构
其实单纯的代码写起来很简单的 不是吗?
并且上面写出代码的老兄,c和c++混用 几乎没有注释 不如给出组织结构我自己写节省时间!
benbenhuhu 2003-06-01
  • 打赏
  • 举报
回复
upupup
shortppsy 2003-06-01
  • 打赏
  • 举报
回复
haha
applecjn 2003-06-01
  • 打赏
  • 举报
回复
up
onlinewuhao 2003-06-01
  • 打赏
  • 举报
回复
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆

支持UP支持UP支持UP支持UP支持UP支持UP支持UP支持UP支持UP支持UP支持UP支持UP

★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
unrealimage 2003-05-31
  • 打赏
  • 举报
回复
up


tool_99@163.com


我来要一份
cloudtarget 2003-05-31
  • 打赏
  • 举报
回复
up
onlinewuhao 2003-05-31
  • 打赏
  • 举报
回复
关注ING
feismoke@tom.com
theng1980 2003-05-27
  • 打赏
  • 举报
回复
magus_yang(⊙杨⊙)
兄台,你老人家要到代码之后给我发一份好吗?
ftieheng@yahoo.com.cn
给你鞠躬了
magus_yang 2003-05-23
  • 打赏
  • 举报
回复
呵呵,我自己在大学写的那些程序也找不到了,硬盘,自刻的光盘都翻遍了。
唉,只能到这里来分享一下大家的资源了。
magus_yang 2003-05-23
  • 打赏
  • 举报
回复
呵呵,mfs兄说的好,不过cpp程序也是可以写成面向过程的。
谢谢,我先收一下。
不过,我真的急用。
如果有完整的,也请发给我,万分感谢。
mfs 2003-05-23
  • 打赏
  • 举报
回复
对不起,找不到了!:(
mfs 2003-05-23
  • 打赏
  • 举报
回复
C++ 不用到类用什么呀?呵呵,你真搞笑哦
我发给你一份功能不全,但会给你启发。
magus_yang 2003-05-23
  • 打赏
  • 举报
回复
我的mail:macroby@263.net

DOS界面的,WINDOWS界面的不要,谢谢
不用访问数据库,能存文件就可以,谢谢

15,446

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧