C语言课程设计图书馆管理系统源程序_第1页
C语言课程设计图书馆管理系统源程序_第2页
C语言课程设计图书馆管理系统源程序_第3页
C语言课程设计图书馆管理系统源程序_第4页
C语言课程设计图书馆管理系统源程序_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include #include #include #include #define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/#define numsubs 5 /*学科数目*/typedef struct message_student/*结构体定义*/ char number6; char name20; int age; int birthday; char sex4; char address20; float subjectnumsubs; float score; float average; int index; s

2、tudent;int numstus; /*学生数目*/ student *pointer;/*指向结构体数组的指针*/ int lens; int menu_select(); /*函数声明*/int openfile(student stu); int findrecord(student stud); int writetotext(student stud); void welcome(); void display1(); void showtable(); void sort(student stu); void deleterecord(student stu,int i); v

3、oid addrecord(student stud); void display(student stud,int n1,int n2); void amendrecord(student stud); void count(student stud); void sortnum(student stud); void sortnum2(student stud); void sortname(student stud); void sortname2(student stud); void sortcount(student stud); void sortcount2(student s

4、tud); void statistic(student stud); void display1(); void main() int i=1; char str2; lens=100; pointer=(student *)malloc(lens*LEN); numstus=0; welcome(); system (color 1f); while(i0) i=menu_select(); switch(i) case 1:addrecord(pointer);break; /*增加学生信息*/ case 2:findrecord(pointer);break; /*查询学生信息*/ c

5、ase 3:amendrecord(pointer);break;/*修改学生信息*/ case 4:sort(pointer);break; /*学生信息排序*/ case 5:statistic(pointer);break;/*统计信息*/ case 6:openfile(pointer);break;/*打开文件*/ case 7:writetotext(pointer);break;/*保存文件*/ case 8:display(pointer,0,numstus-1);break;/*显示记录*/ case 0: if(numstus!=0) printf(是否保存当前记录?(y/

6、n); gets(str); if(str0=y|str0=Y) writetotext(pointer); i=-1;break;/*退出系统*/ default:printf(请输入数字08:n);i=1; /*输入错误*/ printf(tt谢谢使用!欢迎再次使用本系统。nn); display1(); void welcome() printf(t*n); printf(tt*南京工程学院学生信息管理系统*ntttt n); printf(); printf(t*n); void display1() printf(tt制作人-丁文豪nn); printf(tt nn); printf

7、(ttn); printf(nn); getchar(); /*菜单*/int menu_select() char c; printf(nn); printf( | 增加学生记录 |n); printf( | 查询学生记录 |n); printf( | 修改学生记录 |n); printf( | 学生纪录排序 |n); printf( | 统计信息 |n); printf( | 打开文件 |n); printf( | 保存文件 |n); printf( | 显示记录 |n); printf( | 0 退出系统 |n); printf(nn); printf(请选择(0-8):); c=get

8、char(); getchar(); return (c-0); /*输入模块*/ void addrecord(student stud) int i=0,j,num; char str5; if(numstus!=0) printf(已有记录存在是否覆盖?(y/n)n); gets(str); if(str0=Y|str0=y) i=0; else i=numstus; printf(请输入增加的学生信息条目数:); scanf(%d,&num); if(i=0) numstus=num; else numstus+=num; if(numstuslens) lens+=50; point

9、er=(student *)realloc(pointer,lens*LEN); printf(请输入学生信息:n); for(;inumstus;i+) getchar(); printf(请输入学号:); gets(pointeri.number); printf(请输入姓名:); gets(); printf(请输入学生年龄:); scanf(%d,&studi.age); printf(请输入学生出生年月:); scanf(%d,&studi.birthday); getchar(); printf(请输入性别(男/女 1/0):); gets(pointer

10、i.sex); if(pointeri.sex0=0) strcpy(pointeri.sex,女); else strcpy(pointeri.sex,男); printf(请输入学生地址:); gets(pointeri.address); printf(请输入各科成绩:按高数,线性代数,英语,C语言,电路原理的顺序); studi.score=0; for(j=0;jnumsubs;j+) scanf(%f,&studi.subjectj); studi.score+=studi.subjectj; studi.average=studi.score/numsubs; count(stu

11、d); display(stud,0,numstus-1); getchar(); int numstus; int lens; student *pointer;/*显示模块*/void showtable() printf(-n); printf(学号|姓名|年龄|出生年月|性别|高数|线性代数|英语|C语言|电路原理|总分|平均分|名次); printf(-n); void display(student stud,int n1,int n2) int i; showtable(); for(i=n1;i=n2;i+)/*显示表头*/ printf(%s %s %d %d %s %.2f

12、 %.2f %.2f %.2f %.2f %.2f %.2f %dtn,studi.number,,studi.age,studi.birthday,studi.sex,studi.subject0,studi.subject1,studi.subject2,studi.subject3,studi.subject4,studi.score,studi.average,studi.index); getchar();/*保存*/int writetotext(student stud) int i=0,j; FILE *fp; char filename20; printf

13、(输入文件名称:); gets(filename); fp=fopen(filename,w); fprintf(fp,%dn,numstus); while(inumstus) fprintf(fp,%s %s %s ,studi.number,,studi.sex); for(j=0;jnumsubs;j+) fprintf(fp,%f ,studi.subjectj); fprintf(fp,%f %f %d ,studi.score,studi.average,studi.index); i+; fclose(fp); printf(已成功存储!n); displa

14、y(stud,0,numstus-1); numstus=0; return 0; /*查找模块*/ int findrecord(student stud) char str2; int i,num; if(numstus=0) printf(没有可被查找的记录n); return -1; else printf(以何种方式查找?n1.学号t2.姓名t3.名次n); gets(str); if(str0=1) printf(请输入学号:); gets(str); for(i=0;i=numstus;i+) if(strcmp(str,studi.number)=0) display(stud

15、,i,i); break; else continue; else if(str0=2) printf(请输入姓名:); gets(str); for(i=0;i=numstus;i+) if(strcmp(str,)=0) display(stud,i,i); break; else continue; else if(str0=3) printf(请输入名次:); scanf(%d,&num); getchar(); for(i=0;inumstus) printf(没有查找所要的信息。n); return -1; return i; int openfile(stud

16、ent stu) /*将所有记录写入文件*/ int i=0,j; FILE *fp; char filename20,str2; if(numstus!=0) printf(已经有记录存在,是否保存?(y/n); gets(str); if(str0=y|str0=Y) writetotext(stu); printf(请输入文件名:); gets(filename); numstus=0; if(fp=fopen(filename,rb+)=NULL) printf(无法打开该文件n); return(-1); fscanf(fp,%d,&numstus); fgetc(fp); whil

17、e(inumstus) fscanf(fp,%s,stui.number); fscanf(fp,%s,); fscanf(fp,%s,stui.sex); for(j=0;jnumsubs;j+) fscanf(fp,%f,&stui.subjectj); fscanf(fp,%f,&stui.score); fscanf(fp,%f,&stui.average); fscanf(fp,%d,&stui.index); i+; fclose(fp); printf(文件读取成功n); printf(是否显示纪录?(y/n); gets(str); if(str0=y|str

18、0=Y) display(stu,0,numstus-1); return(0); /*排序模块*/ void sort(student stud) int i,j=0; char str5; student *p; p=stud; if(numstus=0) printf(没有可供查询的记录!); while(1) for(i=0;i+) printf( 请输入查询方式:); printf((直接输入回车则结束查询操作)n); printf(1.按照学号t); printf(2.按照姓名t); printf(3.按照名次n); gets(str); if(strlen(str)=0) bre

19、ak; if(str0=1) printf(请输入排序次序:n); printf(1.升序排列t); printf(2.降序排列n); gets(str); if(str0=1) sortnum2(p); else sortnum(p); display(stud,0,numstus-1); else if(str0=2) printf(请输入排序次序:n); printf(1.升序排列t); printf(2.降序排列n); gets(str); if(str0=1) sortname2(p); else sortname(p); display(stud,0,numstus-1); els

20、e if(str0=3) printf(请输入排序次序:n); printf(1.升序排列t); printf(2.降序排列n); gets(str); if(str0=1) sortcount2(p); else sortcount(p); display(stud,0,numstus-1); else printf(请输入13); printf(是否退出排序?(y/n); gets(str); if(str0=y|str0=Y) break; return; void sortnum(student stud) /采用冒泡排序法 int i,j; student temp; student

21、 *p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortnum2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortname(student stud) int i,j; student temp; student *

22、p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortname2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortcount(student stud) int i,j; student temp; student *

23、p; p=stud; for(i=0;inumstus;i+) for(j=0;jstudj.index) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortcount2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;jstudj+1.index) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; /*处理模块*/ void statistic(student stud)

24、int i,j=0,k=0; char c1,str2; float averagenumsubs,sum=0; if(numstus=0) printf(没有可被查找的记录n); else while(1) printf(下面将统计考试成绩n); printf(“请选择你要统计哪科的成绩 1.At2.Bt3.Ct4.Dt5.En); c1=getchar(); printf(t一共有个%d记录n,numstus);/*总共记录数*/ switch(c1) case 1: for(i=0;istudi.subject0) k=i; if(studj.subject0studi.subject0

25、) j=i; average0=sum/numstus; printf(t科目A的最高分:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studj.number,,studj.subject0); printf(t科目A的最低分是:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studk.number,,studk.subject0); printf(t科目A的平均分是 %5.2fn,average0); break; case 2: for(i=0;istudi.subject1) k=i; if(studj

26、.subject1studi.subject1) j=i; average1=sum/numstus; printf(t科目B的最高分:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studj.number,,studj.subject1); printf(t科目B的最低分是:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studk.number,,studk.subject1); printf(t科目B的平均分是 %5.2fn,average1); break; case 3: for(i=0;istudi.

27、subject2) k=i; if(studj.subject2studi.subject2) j=i; average2=sum/numstus; printf(t科目C的最高分:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studj.number,,studj.subject2); printf(t科目C的最低分是:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studk.number,,studk.subject2); printf(t科目C的平均分是 %5.2fn,average2); break;

28、case 4: for(i=0;istudi.subject3) k=i; if(studj.subject3studi.subject3) j=i; average3=sum/numstus; printf(t科目D的最高分:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studj.number,,studj.subject3); printf(t科目D的最低分是:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studk.number,,studk.subject3); printf(t科目D的平均分是 %5.2fn,average3); break; case 5: for(i=0;istudi.subject4) k=i; if(studj.subject4studi.subject4) j=i; average4=sum/numstus; printf(t科目E的最高分:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,studj.number,,st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论