文档库 最新最全的文档下载
当前位置:文档库 › 学生成绩信息管理系统(C语言)

学生成绩信息管理系统(C语言)

学生成绩信息管理系统(C语言)
学生成绩信息管理系统(C语言)

1.题目

《学生成绩管理系统》的设计与实现

2.功能

(1)每一条记录包括一个学生的学号、姓名、3门成绩、平均成绩。

(2)输入功能:可以一次完成无数条记录的输入。

(3)显示功能:完成全部学生记录的显示。

(4)查找功能:完成按姓名查找学生记录,并显示。

(5)排序功能:按学生平均成绩进行排序。

(6)插入功能:按平均成绩高低插入一条学生记录。

(7)保存功能:将学生记录保存在任何自定义的文件中,如保存在:c:\score。

(8)读取功能:将保存在文件中的学生记录读取出来。

(9)有一个清晰美观界面来调用各个功能

3.要求

(1)整个系统均用C语言实现;

(2)利用指针、链表来实现学生成绩的数据结构设计;

(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;

(4)系统的各个功能模块都用函数的形式来实现;

(5)可以将学生成绩信息保存在文件中。

(6)可以将学生信息从文件中读取出来。

4.源程序

#include

#include

#include

#define LEN sizeof(struct scorenode)

#define DEBUG

#include

struct scorenode

{int number;/*学号*/

char name[10];/*姓名*/

float yuwen;/*语文成绩*/

float yingyu;/*英语成绩*/

float shuxue;/*数学成绩*/

struct scorenode *next;

};

typedef struct scorenode score;

int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/

/*==================================================================== ==========================*/

score *creat2311(void)

/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/

{

score*head;

score *p1,*p2,*p3,*max;

int i,j;

float fen;

char t[10];

n=0;

p1=p2=p3=(score *)malloc(LEN);head=p3; /*开辟一个新单元*/

printf("请输入学生资料,输0退出!\n");

repeat1: printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/ scanf("%d",&p1->number);

while(p1->number<0)

{getchar();

printf("输入错误,请重新输入学生学号:");

scanf("%d",&p1->number);}

/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/

if(p1->number==0)

goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/

else

{

p3=head;

if(n>0)

{for(i=0;i

{if(p1->number!=p3->number)

p3=p3->next;

else

{printf("学号重复,请重输!\n");

goto repeat1;

/*当输入的学号已经存在,程序报错,返回前面重新输入*/

}

}

}

}

printf("请输入学生姓名:");

scanf("%s",&p1->name);/*输入学生姓名*/

printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/

scanf("%f",&p1->yuwen);

while(p1->yuwen<0||p1->yuwen>100)

{getchar();

printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/ scanf("%f",&p1->yuwen);}

printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/

scanf("%f",&p1->yingyu);

while(p1->yingyu<0||p1->yingyu>100)

{getchar();

printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/ scanf("%f",&p1->yingyu);}

printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/

scanf("%f",&p1->shuxue);

while(p1->shuxue<0||p1->shuxue>100)

{getchar();

printf("输入错误,请重新输入数学成绩");

scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/ head=NULL;

while(p1->number!=0)

{

n=n+1;

if(n==1)

head=p1;

else

p2->next=p1;

p2=p1;

p1=(score *)malloc(LEN);

printf("请输入学生资料,输0退出!\n");

repeat2:printf("请输入学生学号(学号应大于0):");

scanf("%d",&p1->number);/*输入学号,学号应大于0*/

while(p1->number<0)

{getchar();

printf("输入错误,请重新输入学生学号:");

scanf("%d",&p1->number);}

/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/

if(p1->number==0)

goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/

else

{

p3=head;

if(n>0)

{for(i=0;i

{if(p1->number!=p3->number)

p3=p3->next;

else

{printf("学号重复,请重输!\n");

goto repeat2;

/*当输入的学号已经存在,程序报错,返回前面重新输入*/

}

}

}

}

printf("请输入学生姓名:");

scanf("%s",&p1->name);/*输入学生姓名*/

printf("请输入语文成绩(0~100):");

scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/

while(p1->yuwen<0||p1->yuwen>100)

{getchar();

printf("输入错误,请重新输入语文成绩");

scanf("%f",&p1->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100):");

scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/

while(p1->yingyu<0||p1->yingyu>100)

{getchar();

printf("输入错误,请重新输入英语成绩");

scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/ printf("请输入数学成绩(0~100):");

scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/

while(p1->shuxue<0||p1->shuxue>100)

{getchar();

printf("输入错误,请重新输入数学成绩");

scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/ }

end: p1=head;

p3=p1;

for(i=1;i

{

for(j=i+1;j<=n;j++)

{

max=p1;

p1=p1->next;

if(max->number>p1->number)

{

k=max->number;

max->number=p1->number;

p1->number=k;

/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/

strcpy(t,max->name);

strcpy(max->name,p1->name);

strcpy(p1->name,t);

/*交换前后结点中的姓名,使之与学号相匹配*/

fen=max->yuwen;

max->yuwen=p1->yuwen;

p1->yuwen=fen;

/*交换前后结点中的语文成绩,使之与学号相匹配*/

fen=max->yingyu;

max->yingyu=p1->yingyu;

p1->yingyu=fen;

/*交换前后结点中的英语成绩,使之与学号相匹配*/

fen=max->shuxue;

max->shuxue=p1->shuxue;

p1->shuxue=fen;

/*交换前后结点中的数学成绩,使之与学号相匹配*/

}

}

max=head;p1=head;/*重新使max,p指向链表头*/

}

p2->next=NULL;/*链表结尾*/

printf("输入的学生数为:%d个!\n",n);

return(head);

}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

score *load2311(score *head)

/*函数load2311,功能:从文件读入学生记录*/

{ score *p1,*p2;

int m=0;

char filepn[10];

FILE *fp;

printf("请输入文件路径及文件名:");

scanf("%s",filepn);/*输入文件路径及名称*/

if((fp=fopen(filepn,"r+"))==NULL)

{

printf("不能打开文件!\n");

return 0;

}

m=m+1;

if(m==1)

{

p1=(score *)malloc(LEN); /*开辟一个新单元*/

fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);

printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shu xue);

/*文件读入与显示*/

head=NULL;

do

{

n=n+1;

if(n==1) head=p1;

else p2->next=p1;

p2=p1;

p1=(score *)malloc(LEN); /*开辟一个新单元*/

fscanf(fp,"%d%s%f%f%f\n",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);

printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shu xue);

/*文件读入与显示*/

}while(!feof(fp));

p2->next=p1;

p1->next=NULL;

n=n+1;

}printf("-----------------------------------------\n");/*表格下线*/

fclose(fp);/*结束读入,关闭文件*/

return (head);

}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

score *add2311(score *head,score *stu)

/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/

{

score *p0,*p1,*p2,*p3,*max;

int i,j;

float fen;

char t[10];

p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/

printf("\n输入要增加的学生的资料!");

repeat4: printf("请输入学生学号(学号应大于0):");

scanf("%d",&stu->number);

/*输入学号,学号应大于0*/

while(stu->number<0)

{getchar();

printf("输入错误,请重新输入学生学号:");

scanf("%d",&stu->number);}/*输入错误,重新输入学号*/

/******************************************************/

if(stu->number==0)

goto end2;/*当输入的学号为0时,转到末尾,结束追加*/

else

{

p3=head;

if(n>0)

{for(i=0;i

{if(stu->number!=p3->number)

p3=p3->next;

else

{printf("学号重复,请重输!\n");

goto repeat4;

/*当输入的学号已经存在,程序报错,返回前面重新输入*/

}

}

}

}

/******************************************************/

printf("输入学生姓名:");

scanf("%s",stu->name); /*输入学生姓名*/

printf("请输入语文成绩(0~100):");

scanf("%f",&stu->yuwen); /*输入语文成绩,成绩应在0-100*/ while(stu->yuwen<0||stu->yuwen>100)

{getchar();

printf("输入错误,请重新输入语文成绩");

scanf("%f",&stu->yuwen);} /*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100):");

scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/

while(stu->yingyu<0||stu->yingyu>100)

{getchar();

printf("输入错误,请重新输入英语成绩");

scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/ printf("请输入数学成绩(0~100):");

scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/

while(stu->shuxue<0||stu->shuxue>100)

{getchar();

printf("输入错误,请重新输入数学成绩");

scanf("%f",&stu->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/ p1=head;

p0=stu;

if(head==NULL)

{head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/

else/*原来链表不为空*/

{

if(p1->next==NULL)/*找到原来链表的末尾*/

{

p1->next=p0;

p0->next=NULL;/*将它与新开单元相连接*/

}

else

{

while(p1->next!=NULL)/*还没找到末尾,继续找*/

{

p2=p1;p1=p1->next;

}

p1->next=p0;

p0->next=NULL;

}

}

n=n+1;

p1=head;

p0=stu;

for(i=1;i

{

for(j=i+1;j<=n;j++)

{

max=p1;

p1=p1->next;

if(max->number>p1->number)

{

k=max->number;

max->number=p1->number;

p1->number=k;

/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/

strcpy(t,max->name);

strcpy(max->name,p1->name);

strcpy(p1->name,t);

/*交换前后结点中的姓名,使之与学号相匹配*/

fen=max->yuwen;

max->yuwen=p1->yuwen;

p1->yuwen=fen;

/*交换前后结点中的语文成绩,使之与学号相匹配*/

fen=max->yingyu;

max->yingyu=p1->yingyu;

p1->yingyu=fen;

/*交换前后结点中的英语成绩,使之与学号相匹配*/

fen=max->shuxue;

max->shuxue=p1->shuxue;

p1->shuxue=fen;

/*交换前后结点中的数学成绩,使之与学号相匹配*/

}

}

max=head;p1=head;/*重新使max,p指向链表头*/

} end2:

printf("现在的学生数为:%d个!\n",n);

return(head);

}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

score *search2311(score *head)

/*函数search2311,功能:查询学生成绩*/

{int number;

score *p1,*p2;

printf("输入要查询的学生的学号,");

scanf("%d",&number);

while(number!=0)

{

if(head==NULL)

{printf("\n没有任何学生资料!\n");return(head);}

printf("-----------------------------------------\n");

printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");

printf("-----------------------------------------\n");/*打印表格域*/

p1=head;

while(number!=p1->number&&p1->next!=NULL)

{p2=p1;p1=p1->next;}

if(number==p1->number)

{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->sh uxue);

printf("-----------------------------------------\n");}/*打印表格域*/

else

printf("%d不存在此学生!\n",number);

printf("输入要查询的学生的学号,");

scanf("%d",&number);

}

printf("已经退出了!\n");

return(head);}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

score *del2311(score *head)/*函数del2311,功能:删除学生资料*/

{

score *p1,*p2;

int number;

printf("输入要删除的学生的学号(输入0时退出):");

scanf("%d",&number);

getchar();

while(number!=0)/*输入学号为0时退出*/

{

if(head==NULL)

{

printf("\n没有任何学生资料!\n");

return(head);

}

p1=head;

while(number!=p1->number&&p1->next!=NULL)

/*p1指向的不是所要找的首结点,并且后面还有结点*/

{

p2=p1;p1=p1->next;

} /*p1后移一个结点*/

if(number==p1->number)

/*找到了*/

{

if(p1==head)

head=p1->next;

/*若p1指向的是首结点,把地二个结点地址赋予head*/

else

p2->next=p1->next;

/*否则将下一个结点地址赋给前一结点地址*/

printf("删除:%d\n",number);n=n-1;

}

else

printf("%d不存在此学生!\n",number);

/*找不到该结点*/

printf("输入要删除的学生的学号:");

scanf("%d",&number);

getchar();

}

#ifdef DEBUG

printf("已经退出了!\n");

#endif

printf("现在的学生数为:%d个!\n",n);

return(head);

}

/*==================================================================== ==========================*/

/*====================================================================

==========================*/

void print2311(score *head)

/*函数print2311,功能:显示学生成绩*/

{

score *p;

if(head==NULL)

{printf("\n没有任何学生资料!\n");}

else

{printf("%d\n",n);

printf("-----------------------------------------\n");

printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");

printf("-----------------------------------------\n");/*打印表格域*/

p=head;

do

{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue);

printf("-----------------------------------------\n");/*打印表格域*/

p=p->next;}while (p!=NULL);/*打印完成了*/

}

}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

score *statistics2311(score *head)

/*函数statistics2311,功能:统计学生成绩*/

{

float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;

score *p;

int x,y=0,i=0;

p=head;

printf("1个人总分和平均分\t2单科平均分\t3总分最高分\t4总分最低分\n");

scanf("%d",&x);

getchar();

switch(x)

/*用switch语句实现功能选择*/

{

case 1: if(head==NULL)

{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/

else

{

printf("---------------------------------------------------------\n");

printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|总分\t|平均分\t|\n");

printf("---------------------------------------------------------\n");/*打印表格域*/ while(p!=NULL)

{

sum1=p->yuwen+p->yingyu+p->shuxue; /*计算个人总分*/

ave1=sum1/3;/*计算个人平均分*/

printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu, p->shuxue,sum1,ave1);

/*打印结果*/

printf("---------------------------------------------------------\n");/*打印表格域*/ p=p->next;}

}

return(head); break;

case 2: if(head==NULL)

{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/

while(p!=NULL)

{

sum1=sum1+p->yuwen;

sum2=sum2+p->yingyu;

sum3=sum3+p->shuxue;/*计算总分*/

y=y+1;

ave1=sum1/y;

ave2=sum2/y;

ave3=sum3/y;/*计算平均分*/

p=p->next;/*使p指向下一个结点*/

}

printf("语文平均分是%.1f\n",ave1);

printf("英语平均分是%.1f\n",ave2);

printf("数学平均分是%.1f\n",ave3);/*打印结果*/

return(head); break;

case 3:

if(head==NULL)

{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/

max=p->yuwen+p->yingyu+p->shuxue;

while(i

{

i=i+1;

sum1=p->yuwen+p->yingyu+p->shuxue; /*计算个人总分*/

if(max

max=sum1;

p=p->next;

printf("总分最高分:%.1f",max);

printf("\n");

return(head); break;

case 4: if(head==NULL)

{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/

while(p!=NULL)

{

min=p->yuwen+p->yingyu+p->shuxue;

while(p!=NULL)

{sum2=p->yuwen+p->yingyu+p->shuxue;

if(min>sum2)

min=sum2;

p=p->next;

}

}

printf("总分最低分:%.1f",min);

printf("\n");

return(head); break;

default :printf("输入错误,请重试!\n");

}

return(head);

}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

save2311(score *p1)

/*函数save2311,功能:保存学生的资料*/

{

FILE *fp;

char filepn[20];/*用来存放文件保存路径以及文件名*/

printf("请输入文件路径及文件名:");

scanf("%s",filepn);

if((fp=fopen(filepn,"w+"))==NULL)

{

printf("不能打开文件!\n");

return 0;

}

while(p1!=NULL)

{

fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shu xue);

p1=p1->next;/*下移一个结点*/

}

fclose(fp);

printf("文件已经保存!\n");

return 0;

}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

score *taxis2311(score *head)

/*定义排序函数。此函数带回一个指向链表头的指针*/

{ score *p,*max;

int i,j,x;

float fen;

char t[10];

if(head==NULL)

{printf("\n没有任何学生资料,请先建立链表!\n");return(head);}/*链表为空*/

max=p=head;

for(i=0;i<80;i++)

printf("*");

printf("1按学生学号排序\t2按学生姓名排序\t3按语文成绩排序\n");

printf("4按英语成绩排序\t5按数学成绩排序\t\n");

for(i=0;i<80;i++)

printf("*");

printf("请选择操作:");

scanf("%d",&x);/*选择操作*/

getchar();

switch(x) /*用switch语句实现功能选择*/

{case 1 :

for(i=1;i

{

for(j=i+1;j<=n;j++)

{

max=p;

p=p->next;

if(max->number>p->number)

{

k=max->number;

max->number=p->number;

p->number=k;

/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

/*交换前后结点中的姓名,使之与学号相匹配*/

fen=max->yuwen;

max->yuwen=p->yuwen;

p->yuwen=fen;

/*交换前后结点中的语文成绩,使之与学号相匹配*/

fen=max->yingyu;

max->yingyu=p->yingyu;

p->yingyu=fen;

/*交换前后结点中的英语成绩,使之与学号相匹配*/

fen=max->shuxue;

max->shuxue=p->shuxue;

p->shuxue=fen;

/*交换前后结点中的数学成绩,使之与学号相匹配*/ }

}

max=head;p=head;/*重新使max,p指向链表头*/

}

print2311(head);break;/*打印值排序后的链表内容*/ case 2 : for(i=1;i

{

for(j=i+1;j<=n;j++)

{

max=p;

p=p->next;

if(strcmp(max->name,p->name)>0)/*strcmp=>字符串比较函数*/

{

strcpy(t,max->name);/*strcpy=>字符串复制函数*/

strcpy(max->name,p->name);

strcpy(p->name,t);

/*交换前后结点中的姓名,使得姓名字符串的值大者移到后面的结点中*/ k=max->number;

max->number=p->number;

p->number=k;

/*交换前后结点中的学号值,使之与姓名相匹配*/ fen=max->yuwen;

max->yuwen=p->yuwen;

p->yuwen=fen;

/*交换前后结点中的语文成绩,使之与姓名相匹配*/

fen=max->yingyu;

max->yingyu=p->yingyu;

p->yingyu=fen;

/*交换前后结点中的英语成绩,使之与姓名相匹配*/

fen=max->shuxue;

max->shuxue=p->shuxue;

p->shuxue=fen;

/*交换前后结点中的数学成绩,使之与姓名相匹配*/

}

}

p=head;

max=head;

}

print2311(head);

break;

case 3 : for(i=1;i

{for(j=i+1;j<=n;j++)

{max=p;

p=p->next;

if(max->yuwen>p->yuwen)

{

fen=max->yuwen;

max->yuwen=p->yuwen;

p->yuwen=fen;

/*交换前后结点中的语文成绩,使得语文成绩高者移到后面的结点中*/

k=max->number;

max->number=p->number;

p->number=k;

/*交换前后结点中的学号,使之与语文成绩相匹配*/

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

/*交换前后结点中的姓名,使之与语文成绩相匹配*/

fen=max->yingyu;

max->yingyu=p->yingyu;

p->yingyu=fen;

/*交换前后结点中的英语成绩,使之与语文成绩相匹配*/

fen=max->shuxue;

max->shuxue=p->shuxue;

p->shuxue=fen;

/*交换前后结点中的数学成绩,使之与语文成绩相匹配*/

}

}

p=head;

max=head;

}

print2311(head);

break;

case 4 : for(i=1;i

{for(j=i+1;j<=n;j++)

{max=p;

p=p->next;

if(max->yingyu>p->yingyu)

{

fen=max->yingyu;

max->yingyu=p->yingyu;

p->yingyu=fen;

/*交换前后结点中的英语成绩,使得英语成绩高者移到后面的结点中*/

k=max->number;

max->number=p->number;

p->number=k;

/*交换前后结点中的学号,使之与英语成绩相匹配*/

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

/*交换前后结点中的姓名,使之与英语成绩相匹配*/

fen=max->yuwen;

max->yuwen=p->yuwen;

p->yuwen=fen;

/*交换前后结点中的语文成绩,使之与英语成绩相匹配*/

fen=max->shuxue;

max->shuxue=p->shuxue;

p->shuxue=fen;

/*交换前后结点中的数学成绩,使之与英语成绩相匹配*/

}

}

p=head;

max=head;

}

print2311(head);

break;

case 5 : for(i=1;i

{for(j=i+1;j<=n;j++)

{max=p;

p=p->next;

if(max->shuxue>p->shuxue)

{

fen=max->shuxue;

max->shuxue=p->shuxue;

p->shuxue=fen;

/*交换前后结点中的数学成绩,使得数学成绩高者移到后面的结点中*/

k=max->number;

max->number=p->number;

p->number=k;

/*交换前后结点中的学号,使之与数学成绩相匹配*/

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

/*交换前后结点中的姓名,使之与数学成绩相匹配*/

fen=max->yuwen;

max->yuwen=p->yuwen;

p->yuwen=fen;

/*交换前后结点中的语文成绩,使之与数学成绩相匹配*/

fen=max->yingyu;

max->yingyu=p->yingyu;

p->yingyu=fen;

/*交换前后结点中的英语成绩,使之与数学成绩相匹配*/

}

}

p=head;

max=head;

}

print2311(head);

break;

default :printf("输入错误,请重试! \n");

}

return (0);}

/*==================================================================== ==========================*/

/*==================================================================== ==========================*/

int menu2311(k)/*函数menu2311,功能:菜单选择界面*/

{

int i;

for(i=0;i<80;i++)

printf("*");

printf("1输入学生的资料\t\t\t2从文件调入资料\t\t\t3查询学生的成绩\n");

printf("4删除学生的资料\t\t\t5追加学生的资料\t\t\t6显示学生的成绩\n");

printf("7统计学生的成绩\t\t\t8保存输入的资料\t\t\t9对成绩进行排序\n");

/*菜单选择界面*/

for(i=0;i<80;i++)

printf("*");

printf("欢迎进入成绩管理系统,请选择您所要的操作(选择(0)退出):");

scanf("%d",&k);/*选择操作*/

C语言图书管理系统课程设计报告[1]

第三章图书管理系统的设计与实现 3.1系统的需求分析 图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。根据系统界面的提示信息对图书馆信息进行查询、初始化等操作 系统功能需求分析描述如下: (1)系统主菜单:进入系统和退出系统 (2)功能菜单:显示可以进行的操作 (3)查询主菜单:根据图书编号、书名、作者进行查询,并可显示所有图书信息 (4)借还书主菜单:可以进行借书和还书等操作 3.2系统的设计 3.2.1 系统的总统设计 下面从系统的整体流程的功能模块、系统界面及数据结构进行总体设计。 (1)总体思想 本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、借书、还书等主要功能。系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。 (2)系统模块结构图 根据需求分析结果,图书管理系统可以分为三大模块:查询

图书模块、借书功能模块、还书功能模块。 系统模块结构如图: 3.2.2 系统的概要设计 ㈠系统主菜单。 显示系统的主菜单,里面有相应的功能代码,根据选择各功能代码进入不同的界面。功能主要包括:退出系统、查询图书、借书、还书。 ㈡查询图书信息 进入此菜单功能模块,输入您要查询的图书的编号、名字、作者等。 图书查询模块流程如图:

3.3 测试结果系统主界面

功能菜单 查询系统菜单

借还系统菜单 3.4 源代码 # include # include # include typedef struct link { char number[100]; char bookname[100]; char author[100]; char publish[100]; char time[100]; float price; char status[100]; struct link *next;

图书管理系统的设计(C语言)

图书管理系统设计 图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等 功能描述: 1.新进熟土基本信息的输入 2.图书基本信息的查询 3.对撤消图书信息的删除 4.为借书人办理注册 5.办理借书手续 6.办理换书手续 要求:以文件方式存储数据,系统以菜单方式工作。 这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中竟然在QQ网络硬盘中找到了当初的teta版,发布于此,以作纪念。

C源代码如下: #include #include #include struct book{ char book_name[30]; int bianhao; double price; char author[20];

char state[20]; char name[20]; char sex[10]; int xuehao; struct book *book_next; }; struct club{ char name[20]; char sex[10]; int xuehao; char borrow[30]; struct club *club_next; }; void Print_Book(struct book *head_book);/*浏览所有图书信息*/ void Print_Club(struct club *head_club);/*浏览所有会员信息*/ struct book *Create_New_Book();/*创建新的图书库,图书编号输入为0时结束*/ struct book *Search_Book_bianhao(int bianhao,struct book *head_book); struct book *Search_Book_name(char *b_name,struct book *head_book); struct book *Search_Book_price(double price_h,double price_l,struct book *head_book); struct book *Insert_Book(struct book *head_book,struct book *stud_book);/*增加图书,逐个添加*/

图书管理系统 (c语言)

程序设计方法课程设计

问题提出: 设计一个图书馆的图书管理,具体要求如下: 1.录入新采购的图书信息,做成文件book.in,要求有良好的输入界面; 2.查询各种图书的基本信息,设计出良好的查询界面; 3.按图书编号进行排序,将排好序的图书信息输出到文件book.out中。 4.统计各类图书册数、图书馆的图书总册数。 5.统计图书的借阅情况。 1.需求分析 对于图书馆的管理系统,应该满足以下的用户需求: ○1用户能够增加和删除一些图书。 ○2用户根据一些基本信息查询相应的图书,系统可以准确输出所有符合条件的图书信息。 ○3用户可以借阅和归还图书馆中的图书。 ○4系统可以对图书做出统计,包括图书总数,各类图书数目,图书的借阅情况。 2.设计分析 定义图书结构体,其成员包括书名、作者、类型、出版社、价格、是否借阅(整型,1为借出,0为未借)、编号。 输入新书时,利用结构体储存书的信息,同时将新书信息以二进制写入book.in文件中,录入结束后,将新书按输入顺序写入book.out中,并且以原来存书的最大编号为基准对新书进行编号,这样可以保证book.out文件存储的图书都是按编号进行排序的。 查找图书时,获得所查书目基本信息后,以二进制依次读取文件中的每一本图书信息,并与输入信息相比较,输出符合信息的图书。 删除图书时,通过输入的图书编号(编号可通过查找图书获得)查找相应图书,删除相应数据并保存。 借阅或归还图书时,通过图书编号(编号可通过查找图书获得)查找相应图书,修改图书的属性(是否借阅)并保存。 实现统计功能时,以二进制依次读取文件中的每一本图书信息,设置变量统计图书类型、借阅情况和图书总数,到文件结尾时,输出各个变量的值。

c语言程序设计报告 图书管理系统

中国地质大学本科生课程论文封面 课程名称c语言课程设计 教师姓名樊媛媛 本科生姓名 本科生学 本科生专业 所在院系 类别: 日期: 课程设计评语

注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。 目录

课程设计评语 (1) 目录 (2) 1.课程论文题目 (3) 2.程序设计思路 (3) 3.功能模块图 (4) 4.数据结构设计 (4) 5.算法设计 (4) 6.程序代码 (5) 7.程序运行结果 (11) 8.编程中遇到的困难及解决方法 (14) 9.总结心得及良好建议 (15) 10.致谢 (15) 1.课程论文题目 图书管理系统 2.程序设计思路

根据要求,图书管理系统以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保持记录以进行删除,查询,借书,还书,退出,添加等等操作;另外还有键盘式旋转菜单以实现功能选择模块。 3.功能模块图 系统功能模块图 4.数据结构设计 先写主函数main (),然后设计个功能选项,用switch选择,然后进入不同模块,进行不同选择,实现不同功能。每个图书信息设置一个结构体,将输入信息存入文件,提供查询功能,还有删除功能以及借书还书功能。每运行一功能后都返回主界面,方便再次选择,还有设置退出模块,方便退出。 5.算法设计

先定义结构体数组struct books,然后设置主界面,主界面出现6个功能选项,分 别是输入sr() 、借书js()、还书hs()、删除sc()、退出tc()、查询cx().各模块设计如下: 输入模块sr(),先调用文件eup,对其进行读取,然后增加,再对其进行保存和调用。其中结构体只输入tsmc图书名称,tsbh图书编号,dj单价,zz作者, 然后自动生成,czzt存在状态,姓名xm,学号xh,性别xb. 查询模块cx(),有选项图书编号和图书名称,然后选择,用if选择,然后用for循环查找,当输入名称与文件中的名称相同时,便显示此信息。 删除模块就是在查找功能的图书后,选择删除,将strcpy将s[i+1]的值赋给s[i]。借出模块也是在查询的基础上,若s[i]的存在状态为已借出,则显示已借出,无法再借,若未借出,则将s[i]的存在状态czzt变为已借出,然后输入姓名,学号,性别,最后显示出已借出。 还书模块就是在查询的基础上,若s[i]的存在状态为未借出,则无法归还,若借出,则将存在状态变为未借出,然后自动将姓名,学号,性别变为初始值。 退出模块使flag=1,而在main就有bool flag 且main中已令main=0.这样就实现了退出功能。 其中若输入超过选项值后,都会显示输入错误,请重新输入。若字符错误,程序就直接出现错误了。 6.程序代码 #include #include #include #include #define M 100 struct books { char tsmc[12]; int tsbh; float dj; char zz[12]; char czzt[12]; char xm[12];

c语言最全的图书管理系统程序

题目名称:图书管理系统 算法分析: 1用结构体标出信息系统的成员:图书书号,书名,作者姓名,出版社,价格 2 利用c语言的文件知识将系统的信息存放在c盘下的“project choose.txt”的文件夹下 3 定义各个子函数(1)定义输入信息函数,将图书信息按一定格式用scanf函数输入(统计M本的信息); (2)定义输出函数,每3个表一页直到最后一个; (3)定义信息查询函数。a,定义按书号查询函数,如果输入的数字等于图书编号则输出要查询的信息;b,定义按姓名查询函数,如果输入的姓名字符串等于其中一个作者姓名字符串则输出信息;c,定义按出版社名称查找函数,如果输入的字符串等于其中出版社名称,则输出该信息; e,定义查找总函数,输入一个数选择查找方式,1-4分别对应调用abc四个函数。 (4)定义删除信息函数。输入的数字作为要删除的图书编号,输出要删除的图书信息后选择是否删除,删除后将第g+1个的信息赋给第g个,输出删除后的信息表。 (5)定义信息修改函数。输入的数字等于要修改的图书编号,输出要修改的图书信息后选择是否修改,用switch,case语句选择要修改的项目,输入n,y决定是否继续直到不继续修改,输出图书信息。 (6)定义信息统计函数。输入一个字符串作为出版社,比较M 本书的出版社字符串是否等于输入的字符串,统计相等的个数n输出。 (7)定义图书编号排序函数。用冒泡排序法将M本的书的图书编号按从大到小的顺序排列后输出。 4 定义主函数。调用读取文件函数,输入数字1-5分别对应调用

修改图书信息函数,删除图书信息函数,查找图书信息函数,统计图书信息函数,图书排行信息函数,0表示退出系统。最后调用保存文件函数。结束程序。 流程设计:

基于C语言数据结构图书管理系统

计算机科学与技术专业课程设计任务书 1 需求分析 1本演示程序中,用户从键盘输入图书信息,图书编号,名称,类别,作者,出版社,价格,购买日期。 2演示程序以用户和计算机的对话方式执行,即在运行窗口出现提示信息,有用户从键盘录入,显示结果会在显示之后。 3程序执行的命令包括:查询图书信息,删除图书信息,对所有图书进行排序,

统计各种类的图书数目。显示所有图书信息 4 测试数据:2001 离散数学 X 左孝凌上海科学出版社 18.00 2009/6/8 2002 数据结构 B 严蔚敏清华大学出版社 30.00 2010/4/1 2 程序总体设计 (1)数据结构 依据输入的数据信息和数据格式,连表结点用结构体实现。采用链表方式存储,typedef:typedef struct //定义表示日期数据的结构体数据类型 { int month; int day; int year; } DATE; typedef struct Booktype //定义表示图书信息的结构体数据类型 { char id[10]; /* 图书编号*/ char name[40]; /* 图书名称*/ char type; /* 图书类型*/ char writer[10]; /* 图书作者*/ char publisher[20]; /* 图书出版社*/ float price; /* 图书价格*/ DA TE buydate; /* 图书购买日期*/ } Btype; typedef struct Booklist /* 定义表示所有图书信息的链表数据类型*/ { Btype *bk; struct Booklist *next; } Blist; (2)模块划分

C语言编写图书管理系统

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 分类号: 单位代码: 本科毕业设计说明书 C语言编写图书管理系统 姓名李彬 学号0114 年级2008级本科3班 专业机械设计制造及其自动化 系(院)机械工程学院 指导教师李培珍 年月日

目录 第一部分.................................................. 错误!未定义书签。职业生涯规划——十年创业路................................ 错误!未定义书签。1前言................................................... 错误!未定义书签。2自我剖析................................................ 错误!未定义书签。3环境分析................................................ 错误!未定义书签。 3.1国家环境............................................. 错误!未定义书签。 3.2社会环境............................................. 错误!未定义书签。 3.3职业环境............................................. 错误!未定义书签。 3.4分析小结............................................. 错误!未定义书签。4未来人生职业规划........................................ 错误!未定义书签。5总结................................................... 错误!未定义书签。第二部分.................................................. 错误!未定义书签。C语言编写图书管理系统.................................... 错误!未定义书签。摘要.................................................... 错误!未定义书签。Abstract.................................................. 错误!未定义书签。1需求分析................................................ 错误!未定义书签。 1.1 系统需求............................................ 错误!未定义书签。 1.2 功能分析............................................ 错误!未定义书签。2系统功能模块结构图...................................... 错误!未定义书签。 2.1 系统调用的函数...................................... 错误!未定义书签。 2.2 图书管理系统模块.................................... 错误!未定义书签。 3 图书管理系统的结构...................................... 错误!未定义书签。 3.1 主函数流程图........................................ 错误!未定义书签。 错误!未定义书签。 错误!未定义书签。 错误!未定义书签。 错误!未定义书签。 错误!未定义书签。 3.2 实体数据结构........................................ 错误!未定义书签。 错误!未定义书签。 错误!未定义书签。 错误!未定义书签。

C语言课程设计图书管理系统课程设计报告

C语言课程设计 图书管理系统 Books Management System 学生姓名张朝柱 学院名称徐州工程学院学号140 班级13计转本 专业名称计算机科学与技术 指导教师李子龙 2016年5月10日

一、需求分析 为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、数量、在库状态等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。 二、算法设计: 1.设计思想: 整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。 2,设计表示: (1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。 (2)、void Book_Entering(struct SqList &SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。它引用了一个顺序表SL。其他函数调用时只需传入顺序表头即可。 (3)、int main(void);这五个函数时整个图书管理系统的全部菜单函数,Book_Entering();为系统主界面,进入时可选择进入程序和退出程序。menu1();为进入程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。Book_Inquire();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。操作完成后按提示信息进行文件的保存操作。 (4)、void Book_Inquire(struct SqList &SL);这个函数为顺序表的输出函数,把顺序表的头传给函数后,可输出整个顺序表的所有信息。、

图书管理系统(含源代码)c语言_数据结构课程设计报告

数据结构大作业 图书管理系统 工程管理121279044 伍 目录 一、题目要求 (2) 二、总体设计 (2) 三、编码实现 (3) 1) 定义图书结构体 (3) 2) 登记操作 (3) 3) 查看操作 (6) 4) 删除操作 (7) 5) Main函数 (13) 四、调试与测试 (16) 五、五心得体会 (18) 六、用户手册 (18)

一、题目要求 1)目的要求 本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。 2)题目要求 实现图书管理信息系统的设计。要现图书添加、显示全部图书、查询、借阅和归还。主要考查利用文件的操作! 二、总体设计

三、编码实现 1)定义图书结构体 struct book{ char bookname[20]; //书名 int NO; //书编号 char type[20]; //类型 int date; //到书日期 }; struct person{ char name[10]; // char classes[20]; //班级 int number; //学号 char telephone[12]; //联系 int NO; //书编号 char bookname[20]; //书名 int borrowdate; //借书日期 int returndate; //还书日期 2)登记操作 void new_book() //登记新书{ FILE *fp; struct book b; int i,j; if((fp=fopen("shuku.txt","a"))==NULL){ printf("File open error!\n"); exit(0); }

C语言图书管理系统代码

#include #include #include struct book{ int num; char bname[50]; char wname[20]; char press[50]; char sort[50]; int time; float price; struct book *next; }; struct book *creatbook(); //创建链表 struct book *addbook(struct book *head); //添加图书 int yanzheng(struct book *head,int m); //验证新添加的图书编码是否已存在void deletebook(struct book *head); //删除图书 void fprint(struct book *head); //将链表写入文件 struct book *load(); //从文件中读取信息并建成链表 void print_book(struct book *head); //将链表信息输出 void chaxun(struct book *head); //查询图书信息 void num_chaxun(struct book *head); //按图书编号查询图书 void wname_chaxun(struct book *head); //按作者名查询图书 void sort_chaxun(struct book *head); //按类别查询图书 void time_chaxun(struct book *head); //按出版时间查询图书 void bname_chaxun(struct book *head); //按图书名查询图书 void xiugai(struct book *head); //修改图书信息 void paixu(struct book *head); //对图书进行排序 void num_paixu(struct book *head); //按图书编号排序 void time_paixu(struct book *head); //按图书出版时间排序 void price_paixu(struct book *head); //按图书价格排序 void bname_paixu(struct book *head); //按图书名排序 void wname_paixu(struct book *head); //按作者名排序 int main() { int choice,n,x,y=1,c,c1=1234; char a,d,b[10],b1[10]="yjk"; struct book *head=NULL; while(y){ system("cls"); printf("\n\n\n\n\n\n\n"); printf(" ********** 欢迎光临**********\n\n"); printf(" ********************** 图书信息管理系统

C语言程序设计 图书馆管理系统

题目:图书馆管理系统 院系:信息科技学院 专业: 姓名: 学号: 指导教师: 日期: 2015年7月15日 桂林电子科技大学信息科技学院实训报告

目录 1 问题定义 =================================1 2 系统设计 ---------------------------------5 2.1 总体设计 ---------------------------------5 2.2 详细设计 ---------------------------------6 2.2.1 数据结构设计 ---------------------------------6 2.2.2 主控流程 ---------------------------------8 2.2. 3 增加信息模块 ---------------------------------7 2.2. 4 查找信息模块 ---------------------------------7 2.2.7 删除信息模块 ---------------------------------7 2.2.8 修改信息模块 ---------------------------------7 2.2.8 数据功能描述 ---------------------------------7 3 系统实现 ================================ 2 3.1 编码 -------------------------------- 8 3.1.1 程序预处理 -------------------------------- 9 3.1.2 主函数main() --------------------------------- 9 3.1.3 主菜单界面 -------------------------------- 11 3.1.7 增加图书信息 -------------------------------- 14 3.1.8 查询图书信息 -------------------------------- 14 3.1.9 删除图书信息 -------------------------------- 15 3.2.0 修改图书信息 -------------------------------- 15 3.2 测试与调试 -------------------------------- 13 3.2.1 概述 -------------------------------- 14 3.2.2 程序测试 -------------------------------- 14 5 归纳总结 ============================================== 3 5.1 开发经验 -------------------------------- 16 5.2 实训中遇到的问题及解决方法------------------------- 16 5.3 设计中的不足之处 --------------------------------- 16 5.4 感想和心得体会 --------------------------------- 16 6 参考资料 ================================= 16

C语言-图书管理系统教程文件

图书借阅管理系统 1.课程设计的目的 我这次做的系统是图书借阅管理系统,主要目的是利用本系统来管理图书的借阅问题,以实现图书借阅的快捷化、规范化、自动化来提高工作效率。系统以实用性,通用、开放和安全的原则。使用数据库开发软件开发制作,实现了图书借阅信息的管理,借阅图书的信息自动化添加,借阅者的个人基本信息,借阅的基本信息,对各种图书的分类管理以及各种新书的添加等一些繁琐事项。更好的管理好图书的借阅问题。大大的减少了人工的工作量,比以往很大程度上提高了工作人员的工作效率。使之成为图书馆的一个平台,成为真正的现代化科技。 为了充分利用学院现有的计算机硬件资源,做好图书借阅管理工作,提高办事效率,实现全面的、相对集中的办公自动化,开发本系统就成了当务之急,其目的主要为了彻底改变这种繁杂的管理模式,实现全面的、相对集中的、智能化的信息综合管理,为图书馆的管理工作带来方便。我想借本次课程设计之际,开发一个适用于通用大规模图书馆的管理系统,采用现学习的C++6.0开发工具开发出来的基于Windows系列的图书借阅管理系统。该系统面向所有的在校学生,实现对学生个人的借书、学生的基本信息情况等的计算机管理。系统支持工作人员对学生图书借阅信息、图书馆新书的添加、旧书的信息修改、删除等操作,确保了数据库的安全性快捷性和一致性。 2.设计方案论证 2.1主界面设计思路 本次设计这个系统利用于图书馆的图书借阅管理,该系统相比以往人工的记录方式减少了很多不比要得麻烦,大大的提高了图书馆工作人员的工作效率。这次系统的开发制作主要包括以下几个方面。 书籍统计可以查询图书的名称、作者、序号等信息,以及是否借出去了。书籍管理可以把新书添加到系统当中,修改书籍的详细资料等。注册会员功能,借阅书籍的学生必须注册会员才可以借书,通过注册会员来添加该学生的基本信息。通过系统来办理借书手续以记录该学生的借书信息。学生借书模块能够查询借阅学生的信息和该学生的借书的信息。还书模块功能,学生把书籍归还后系统会清楚该学生的借书记录。员工管理系统,把员工的信息录入系统可以快速的查阅员工的信息,是管理更方便快捷。 图书借阅管理系统功能概况,如图1所示

C语言图书管理系统

一引言 随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息系统的作用也越来越大。图书馆在正常运营中总是面对大量的读者信息,书籍信息以及由两者相互作用产生的借书信息,还书信息。随着图书的大量增加,其管理难度也越来越大,如何优化图书馆的日常管理也就成为一个大众化的课题。数据处理手工操作,工作量大,出错率高,出错后不易更改。当前图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。 因此图书管理信息化是发展的必然趋势。用结构化系统分析与设计的方法,建立一套有效的图书信息管理系统,可以减轻工作,将工作科学化、规范化,提高了图书馆信息管理的工作质量因此根据图书馆目前实际的管理情况开发一套图书管理系统是十分必要的。 建立一个图书管理系统可以使图书管理工作规范化、系统化、程序化、避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书信息。 图书管理系统是一个对图书进行录入、删除、修改和查询的管理应用软件,管理员可以对文件中存储的图书进行查询和管理,了解图书的基本信息。该系统充分利用计算机的功能实现对书籍管理的自动化控制,将会使图书馆管理工作大大减轻,方便友好的图形用户界面,简便的操作,完善的数据库管理,将会使图书馆信息管理系统极大限度地应用于现代化图书管理,成为图书管理人员的得力助手。 应用程序说明:本次设计主要通过应用结构体、链表、循环等C语言结构的设计实现对书籍信息的录入、删除、全显、修改等功能。使用结构体[1]可使不同类型的数据存储在相邻存储单元中,便于对相关信息的处理。链表[2]的使用可有效地将数据按一定顺序有规律的存储,解决了查找、删除时的无序性。 本课题中主要用到的主要函数有以下几个:main( )主函数、menu( )主菜单、inserte_link1()插入函数、create_link()创建函数、delete_link()删除函数、print_link( )输出函数、modify_link()修改函数。 图书管理员进入操作界面后单击开始后进入操作系统,在主菜单中选择相应的功能实现对书籍信息的录入、删除、全显和修改等功能。当所选操作结束后,系统会自动跳回菜单界面,继续进行其他操作。

图书管理系统(含源代码)c语言-数据结构课程设

数据结构大作业图书管理系统 目录 一、题目要求 (2) 二、总体设计 (2) 三、编码实现 (3) 1) 定义图书结构体 (3) 2) 登记操作 (3) 3) 查看操作 (8) 4) 删除操作 (11) 5) Main函数 (20) 四、调试与测试 (26) 五、五心得体会 (28) 六、用户手册 (28)

一、题目要求 1)目的要求 本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。 2)题目要求 实现图书管理信息系统的设计。要求实现图书添加、显示全部图书、查询、借阅和归还。主要考查利用文件的操作! 二、总体设计

三、编码实现 1)定义图书结构体 struct book{ char bookname[20]; //书名 int NO; //书编号 char type[20]; //类型 int date; //到书日期 }; struct person{ char name[10]; //姓名 char classes[20]; //班级 int number; //学号 char telephone[12]; //联系电话 int NO; //书编号 char bookname[20]; //书名 int borrowdate; //借书日期 int returndate; //还书日期2)登记操作 void new_book() //登记新书{

FILE *fp; struct book b; int i,j; if((fp=fopen("shuku.txt","a"))==NULL){ printf("File open error!\n"); exit(0); } printf("请朱老师输入此次收到的书本总数:"); scanf("%d",&i); for(j=0;j

c语言课程设计——图书管理系统

选题三:图书管理系统(难度等级A) 一、系统功能 图书管理系统要求实现图书管理的基本功能,包括图书的录入、删除、查找和导入/导出等。图书的属性包括书号、书名、第一作者、版次、出版年等信息。 功能要求: 1.创建:创建所有图书; 2.显示:分屏显示系统中所有图书信息; 3.插入:插入一条图书记录到图书系统中; 4.删除:删除一条已经存在的图书记录; 5.查找:根据用户输入的属性值查找符合条件的图书; 6.输入/输出:可以从文件中批量导入导出已有的图书信息,也可以将系统中的图书 信息输出到文件中; 程序执行过程:循环显示主菜单,用户在Give your choice:输入选项,即按照功能列表输入数字0~8中的任意数字,按回车后,执行相应的功能。请参照前面的“菜单设计练习”的要求建立下页图所示程序运行主界面。 二、菜单功能 1.Input Records(输入若干条记录) 从键盘一次输入一本书的信息,存放到结构体数组中,然后显示。提示信息确认是否输入下一条记录。 2.Display All Records(显示所有记录) 按顺序显示所有记录,每屏显示10条记录。每显示10条记录,按键继续显 3. 输入待删除书的书名,显示该书名的所有书目,提示输入待删除书目的书号,提示是否确认删除,确认后,删除该书。 4.Sort(排序) 以书名为升序排列数组 5.Insert a Record 以书名为序排列的数组中插入一条记录,插入后,数组仍然有序。输出插入成功后的信息。 6.Query(查找并显示一个记录) 输入书名,查找并显示包含该书名的所有信息。 7.Add Record from a Text File(从文件中读入图书信息到结构体数组中)

(完整版)C语言毕业课程设计(图书管理系统)

课程报告 课程名称:程序设计实践 专业班级:计算机科学与技术1205班 学生姓名:安龙龙 学号: 任课教师:陈卫东 学期:学年第二学期

课程报告任务书

成绩评定教师:

1 需求分析 经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。 本次课程设计要求我们达到能独立完成一个图书管理系统,完成后要求实现的功能有对图书信息的录入、删除、修改,浏览(即输出),按某种方式查询(要求至少一种查询方式),按某种方式排序(要求至少一种排序方式)。当然,我们可以根据自己的能力对系统进行完善性的拓展,例如自己加入简单的权限处理,统计功能,模糊查询等,甚至可以拓展为图书借阅系统。 通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C语言开发的全过程,提高综合应用C语言的能力、编程和调试能力,为学习计算机和通信专业的后续课程打好专业基础。 2 概要设计 (1)图书信息及数据格式 图书信息: 图书信息包括图书编号、图书类别、图书书名、作者、出版社、出版时间、图书价格。 数据格式: 本系统采用单向链表来对图书信息进行各项操作。其中图书的编号为整型数据,价格为双精度浮点型,其余的类别、书名、 作者、出版社与出版时间均为字符串类型 struct tushu_node{ int num;

char leibie[20]; char name[30]; char author[20]; char press[20]; char time[20]; double price; struct tushu_node*next; }; 一个结点的示意图如下图所示: (2)程序的整体框架 (3)模块划分 1、int quanxian(); 核查权限的函数 2、int inputchioce(); 显示主菜单的函数 3、void save(); 保存链表为文件的函数 覆盖以前的信息 4、void save1(); 保存链表为文件的函数不覆盖以前的信 息只在创建时调用 5、struct tushu_node* wjtolb();从文件中读取数据并建立图书信息的链表的函数 6、int luruxinxi(); 录入学生信息的函数 7、struct tushu_node * luruxinxi_chuangjian(); 创 建图书信息的函数 8、struct tushu_node * luruxinxi_charu(); 插

C语言图书管理系统实验报告完整版

C语言图书管理系统实 验报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

课程报告课程名称:程序设计实践 专业班级:信息类1110 学生姓名: 学号: 任课教师: 学期:20101-2012学年第二学期 课程报告任务书

成绩评定教师:

1 需求分析 这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。通过这些信息使之提供以下功能: (1)图书信息创建功能。其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。(图书信息用文件保存)。 (2)图书信息查看功能。用来查看各项图书信息。 (3)图书信息查找功能。通过已知信息来查找想要的图书。 (4)图书信息的删除。可以删除特定图书。 (5)图书信息的修改。可以修改图书的各项信息。 (6)图书信息的排序功能。按图书信息对录入的图书进行排序。 (7)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能 2 概要设计 ⑴数据结构 图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。

菜单 函数的原型:void menu() 函数的功能:调用菜单,使用各项功能 程序: void menu(){ printf("\n\n*******************************<图书信息管理系 统>*******************************\n");

C语言图书管理系统源代码

C语言图书管理系统源代码标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

/*需要在源代码相同目录下创建四个txt文件:,,,*/ #include<> #include<> #include<> struct tushu{ /*图书结构体*/ char num[11]; /*编号*/ char name[31]; /*书名*/ char writer[21]; /*作者*/ char press[21]; /*出版社*/ char kind[21]; /*类别*/ double time; /*时间*/ double price; /*价格*/ struct tushu *next; }; struct stu /*学生结构体*/ { int snum; /*学号*/ char mima[11]; /*密码*/ struct stu *next; }; struct jieshu{ /*借书信息结构体*/ int xuehao; /*学生学号*/ char num[11]; /*编号*/ char name[31]; /*书名*/ char writer[21]; /*作者*/ char press[21]; /*出版社*/ char kind[21]; /*类别*/ double time; /*时间*/ double price; /*价格*/ struct jieshu *next; }; int denglu=-1; /*已登录学生学号*/ FILE *fp; /*图书文件*/ FILE *fp1; /*管理员信息文件*/ FILE *fp2; /*学生信息文件*/ FILE *fp3; /*借书信息文件*/ int main(); /*主函数声明*/ struct tushu * create(); /*从文件创建图书链表(从文件中读出图书信息,建立单链表)*/ struct stu * xcreate(); /*从文件创建学生信息(从文件读出学生信息,建立学生链表)*/ struct jieshu * jcreate(); /2.否):"); scanf("%d",&x);

相关文档