当前位置:文档之家› 学生档案管理系统

学生档案管理系统

学生档案管理系统《C语言程序设计》课程设计任务书课题:学生成绩管理系统班级:1003专业:教育信息与技术学院成员:谭俊奇胡梦东吴峰指导教师:黄海军时间:2011年6月14—2011年6月28日学生成绩管理系统一.人员分配:谭俊奇负责源程序的编写,写出流程图并评价。

胡梦东查找参考资料,上机核对程序的运行情况。

吴峰负责对源程序的核对及对整个实验的评价。

二.设计要求:1)根据键盘上的数字,定义成绩管理系统的分配任务2)该系统可以增加学生成绩的记录。

3)该系统可以查找学生的成绩4)该系统可以统计(总成绩和平均分)5)该系统可以修改学生信息6)该系统可以查看学生成绩7)该系统可以删除学生成绩8)该系统可以输出不及格人数9)可以保存修改信息10)可以随时退出系统三.参考资料1)参考windows api 函数大全2)参考C 语言程序总汇3)参考C语言上机实验题库4)参考C 语言系统操作手册四.系统结构和部分流程图总结构struct student st[300]xianshi()void add()void chazhao()void tj()void xg() void del() void bjg() void zz() void select() void bca()void fh()return 0五.源代码#include <stdio.h>#include <stdlib.h>#include <string.h>#define true 1struct student{char name[60];char ID[7];int score;};int dq(struct student st[]); void xianshi();void bc(struct student st[]); void add();void select();void zz();void chazhao();void xhcz();void xmcz();void del();void xmsc();void xhsc();void tj();void bjg();void xg();void xhxg();void xmxg();void bca();void fh();struct student st[300];int Number=0;void main(){int choose=0;FILE *fp=NULL;char yesorno;if((fp=fopen("C://student.dat","rb"))==NULL) {printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n");scanf("%c",&yesorno);if(yesorno=='y'||yesorno=='Y'){fp=fopen("C://student.dat","wb");fclose(fp);}elseexit(0);}else{Number=dq(st);}system("cls");while(true){xianshi();printf("\t\t====>请选择:");scanf("%d",&choose);system("cls");switch(choose){case 0: exit(0);fh();break;case 1: add();fh();break;case 2: select();fh();break;case 3: chazhao();fh();break;case 4: del();fh();break;case 5: tj();fh();break;case 6: bjg();fh();break;case 7: xg();fh();break;case 8:zz();fh();break;case 9:bca();break;default:break;}fflush(stdin);getchar();system("cls");}}void bca(){printf("\t=====程序在运行时已自动保存.....\n");}void fh(){printf("\t===>按Enter键返回主菜单\n"); }void xg(){int way=0;printf("请选择修改查找方式\n");printf("1 按姓名查找修改\n");printf("2 按学号查找修改\n");scanf("%d",&way);switch(way){case 1: xmxg();break;case 2: xhxg();break;default: printf("输入有误,结束!\n");break;}}void xmxg(){FILE *fp=NULL;char name[60];int i=0;int changeIndex=0;int index=0;printf("请输入要修改的学生姓名:");scanf("%s",name);{if (strcmp(name,st[i].name)){changeIndex=i;}break;}printf("\t姓名\t学号\t成绩\n");printf("\t%s\t%s\t%d\n\n",st[changeIndex].na me,st[changeIndex].ID,st[changeIndex].score);printf("请重新输入该学生信息");printf("姓名:");scanf("%s",st[changeIndex].name);printf("学号:");scanf("%s",st[changeIndex].ID);printf("成绩:");scanf("%d",&st[changeIndex].score);fp=fopen("C://student.dat","wb");{fwrite(&st[i],sizeof(struct student),1,fp);}fclose(fp);}void xhxg(){FILE *fp=NULL;char id[60];int i=0;int changeIndex=0;int index=0;printf("请输入要修改的学生学号:");scanf("%s",id);for (i=0;i<Number;i++){if (strcmp(id,st[i].ID)){changeIndex=i;}break;}printf("\t姓名\t学号\t成绩\n");printf("\t%s\t%s\t%d\n\n",st[changeIndex].na me,st[changeIndex].ID,st[changeIndex].score);printf("请重新输入该学生信息");printf("姓名:");scanf("%s",st[changeIndex].name);printf("学号:");scanf("%s",st[changeIndex].ID);printf("成绩:");scanf("%d",&st[changeIndex].score);fp=fopen("C://student.dat","wb");for (i=0;i<Number;i++){fwrite(&st[i],sizeof(struct student),1,fp);fclose(fp);printf("\t=======>修改成功\n");}void bjg(){int i=0;printf("以下是不及格:\n");printf("\t姓名\t学号\t成绩\n");for (i=0;i<Number;i++){if (st[i].score<60){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i] .score);}}}void tj(){double sum=0.0;for(i=0;i<Number;i++){sum+=st[i].score;}printf("全班总分为:%f\n",sum);printf("平均分为:%f\n",sum/Number); }void del(){int n=0;printf("1 按姓名删除\n");printf("2 按学号删除\n");scanf("%d",&n);switch(n){case 1: xmsc();break;case 2: xhsc();break;}}void xmsc(){FILE *fp=NULL;char name[60];int i=0;int j=0;printf("请输入要删除的学生姓名:");scanf("%s",name);for(i=0;i<Number;i++){if(strcmp(name,st[i].name)==0){for (j=i;j<Number-1;j++){st[j]=st[j+1];}Number--;}}fp=fopen("C://student.dat","wb");for (i=0;i<Number;i++){fwrite(&st[i],sizeof(struct student),1,fp);}fclose(fp);printf("删除成功;\n");}void xhsc(){FILE *fp=NULL;char id[60];int i=0;int j=0;printf("请输入要删除的学生学号:");scanf("%s",id);for(i=0;i<Number;i++){if (strcmp(id,st[i].ID)==0){for (j=i;j<Number-1;j++){st[j]=st[j+1];}Number--;}}fp=fopen("C://student.dat","wb");for (i=0;i<Number;i++){fwrite(&st[i],sizeof(struct student),1,fp);}fclose(fp);printf("删除成功;\n");}void chazhao(){int n=0;printf("1 按姓名查找\n");printf("2 按学号查找\n");scanf("%d",&n);switch(n){case 1: xmcz();break;case 2: xhcz();break;default: printf("输入有误,结束!\n");break;}}void xhcz(){char id[7];int i=0;printf("请输入要查找学生学号:");scanf("%s",id);system("cls");printf("\t姓名\t学号\t成绩\n");for(i=0;i<Number;i++){if (strcmp(id,st[i].ID)==0){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i] .score);}}}void xmcz(){char name[7];int i=0;printf("请输入要查找学生姓名:");scanf("%s",name);system("cls");printf("\t姓名\t学号\t成绩\n");for (i=0;i<Number;i++){if (strcmp(name,st[i].name)==0){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);}}}void zz(){printf("\t********************************* *************************\n\n");printf("\t^^^^^^^^^ 《学生成绩管理系统》^^^^^^^^^^\n\n");printf("\t^^^^^^^^^ 湖北师范学院^^^^^^^^^^\n\n");printf("\t^^^^^^^^^ 教育信息与技术学院^^^^^^^^^^\n\n");printf("\t^^^^^^^^^ 谭俊奇^^^^^^^^^^\n\n");printf("\t********************************* *************************\n\n");}void select(){int i=0;printf("以下是全部学生成绩\n");printf("\t姓名\t学号\t成绩\n");for(i=0;i<Number;i++){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i] .score);}}void add(){int numberTemp=0;int i=0;struct student temp;printf("请输入要增加学生成绩个数:");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++){printf("输入第%d个同学信息\n",i+1);printf("姓名:");scanf("%s",);printf("学号:");scanf("%s",temp.ID);printf("成绩:");scanf("%d",&temp.score);st[Number++]=temp;bc(&temp);}printf("添加成功\n");}void bc(struct student *st){FILE *fp=NULL;fp=fopen("C://student.dat","ab+");fwrite(st,sizeof(struct student),1,fp);fclose(fp);}int dq(struct student st[]){FILE *fp=NULL;int i=0;fp=fopen("C://student.dat","rb");while(fread(&st[i],sizeof(struct student),1,fp))i++;fclose(fp);return i;}void xianshi(){printf("\t********************************* ********************************\n");printf("\t* *\n");printf("\t* 学生成绩管理系统*\n");printf("\t* *\n");printf("\t* [1] 增加学生成绩[2] 查看学生成绩*\n");printf("\t* [3] 查找学生成绩[4] 删除学生成绩*\n");printf("\t* [5] 统计(总成绩和平均分)[6] 输出不及格人数*\n");printf("\t* [7] 修改学生信息[8] 关于作者*\n");printf("\t* [9] 保存数据[0] 退出系统*\n");printf("\t********************************* ********************************\n");}六.设计心得与体会忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。

相关主题