程序设计基础课程设计实验报告书目录1.设计题目学生信息管理系统设计2.正文系统简介学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:1、系统以菜单方式工作2、学生信息录入功能(学生信息用文件保存)--输入3、学生信息浏览功能--输出4、学生信息查询功能--按学号查询、按姓名查询、5、学生信息的删除与修改(可选项)要求:使用文件方式存储数据。
选题背景经典计算机问题,设计学生信息管理系统,可以进行多项系统信息管理功能。
设计内容设计学生信息管理的各个功能。
系统以菜单方式工作。
学生信息录入功能(学生信息用文件保存)--输入。
学生信息浏览功能--输出。
学生信息查询功能--按学号查询、按姓名查询。
学生信息的删除与修改(可选项)设计思路将程序的各个功能分开独立的执行,问题有大而小,细化。
算法(条列式或流程图)主程序模块:按退格键创建文件模块(独立函数):YES删除信息模块(独立函数):不相同相同显示浏览信息模块(独立函数)查找学生信息模块(独立函数):返回主程序程序清单与运行结果#include<>#include<>#include<>#include<>struct birth{int year,month,day;};struct student{int number,age,tel[10];char name[10],sex,address[20],E_mail[20];struct birth birthday;struct student *link;};void show( ){printf(" 请输入数字加回车键进行选择:\n");printf(" 1、学生信息录入功能(学生信息用文件保存)--输入\n");printf(" 2、学生信息浏览功能--输出\n");printf(" 3、学生信息查询功能--按学号查询、按姓名查询\n");printf(" 4、学生信息的删除与修改(可选项)\n");printf(" 按其他任意键加回车退出程序\n");}\* 创建文件夹并存入信息模块: *\void credit(int n){FILE *fp;char fpname[20];struct student *head,*next,*end;int i;printf("请输入用于存放文件的文件路劲及文件名:");scanf("%s",fpname);getchar();fp=fopen(fpname,"w+");head=(struct student *)malloc(sizeof(struct student));printf("请输入学生学号姓名性别出生年月日地址电话e_mail:");scanf("%d %s %c %d %d %d %s %s %s",&head->number ,head->name,&head->sex,&(*head).,&(*head).,&(*head).,head-> address,head->tel,head->E_mail);getchar();fprintf(fp,"%d %s %c %d %d %d %s %s %s",head->nu mber,head->name,head->sex,(*head).,(*head).,(*head).,head-> address,head->tel,head->E_mail);end=head;for(i=1;i<n;i++){next=(struct student *)malloc(sizeof(struct student));printf("请输入学生学号姓名性别出生年月日地址电话 e_mail:");scanf("%d %s %c %d %d %d %s %s %s",&next->number ,next->name,&next->sex,&(*next).,&(*next).,&(*next).,next-> address,next->tel,next->E_mail);getchar();fprintf(fp,"%d %s %c %d %d %d %s %s %s",next->nu mber,next->name,next->sex,(*next).,(*next).,(*next).,next-> address,next->tel,next->E_mail);end->link=next;end=next;end->link=NULL;}fclose(fp);}\* 浏览信息模块: *\void show2(int n){FILE *fp;int i;char fpname[20];struct student *head;head=(struct student *)malloc(sizeof(struct student));printf("请输入存放信息的文件路径以及文件名:");gets(fpname);fp=fopen(fpname,"r+");for(i=0;i<n;i++){fscanf(fp,"%d %s %c %d %d %d %s %s %s",&head->nu mber,head->name,&head->sex,&(*head).,&(*head).,&(*head).,he ad->address,head->tel,head->E_mail);printf("%d %s %d %d %d %d %s %s %s",&head->numbe r,head->name,head->sex,(*head).,(*head).,(*head).,head->add ress,head->tel,head->E_mail);}fclose(fp);}\* 按学号查找学生信息模块: *\int search1(int n){int i,checkname;FILE *fp;char fpname[20];struct student *head;head=(struct student *)malloc(sizeof(struct student));printf("请输入存放信息的文件路径以及文件名:");gets(fpname);fp=fopen(fpname,"r+");printf("请输入要查询信息的学生学号:");scanf("%d",&checkname);getchar();for(i=0;i<n;i++){fscanf(fp,"%d %s %c %d %d %d %s %s %s",&head->nu mber,head->name,&head->sex,&(*head).,&(*head).,&(*head).,he ad->address,head->tel,head->E_mail);if(checkname==head->number){printf("%d %s %c %d %d %d %s %s %s\n",head->numb er,head->name,head->sex,(*head).,(*head).,(*head).,head->ad dress,head->tel,head->E_mail);fclose(fp);return(1);}}printf("未找到");}\* 按姓名查找学生信息模块: *\void search2(int n){int i;FILE *fp;char fpname[20],checkname[10];struct student *head;head=(struct student *)malloc(sizeof(struct student));printf("请输入存放信息的文件路径以及文件名:");gets(fpname);fp=fopen(fpname,"r+");printf("请输入要查询信息的学生姓名:");scanf("%s",checkname);getchar();for(i=0;i<n;i++){fscanf(fp,"%d %s %c %d %d %d %s %s %s",&head->nu mber,head->name,&head->sex,&(*head).,&(*head).,&(*head).,he ad->address,head->tel,head->E_mail);if(strcmp(checkname,head->name)==0){printf("%d %s %c %d %d %d %s %s %s",head->number ,head->name,head->sex,(*head).,(*head).,(*head).,head->addr ess,head->tel,head->E_mail);fclose(fp);return(1);}}printf("未找到\n");}\* 删除或修改文件信息模块: *\int most(n){FILE *fp;char get;char fpname[20];struct student *ans[500];int i;char checkname[10];printf("请输入存放信息的文件路径以及文件名:");gets(fpname);fp=fopen(fpname,"r+");ans[0]=(struct student *)malloc(sizeof(struct student));fscanf(fp,"%d %s %c %d %d %d %s %s %s",&ans[0]-> number,ans[0]->name,&ans[0]->sex,&(*ans[0]).,&(*ans[0]).,&( *ans[0]).,ans[0]->address,ans[0]->tel,ans[0]->E_mail);for(i=1;i<n;i++){ans[i]=(struct student *)malloc(sizeof(struct student));fscanf(fp,"%d %s %c %d %d %d %s %s %s",&ans[i]-> number,ans[i]->name,&ans[i]->sex,&(*ans[i]).,&(*ans[i]).,&( *ans[i]).,ans[i]->address,ans[i]->tel,ans[i]->E_mail);ans[i-1]->link=ans[i];}ans[i]->link=NULL;printf("如果想修改信息请输入1加回车键,想删除信息输入2加回车键:");get=getchar();getchar();if(get=='1'){printf("请输入要修改信息的学生姓名:");scanf("%s",checkname);getchar();for(i=0;i<n;i++){if(strcmp(checkname,ans[i]->name)==0){printf("请输入学生新信息学号姓名性别出生年月日地址电话 e_mail:");scanf("%d %s %c %d %d %d %s %s %s",&ans[i]->numb er,ans[i]->name,&ans[i]->sex,&(*ans[i]).,&(*ans[i]).,&(*ans [i]).,ans[i]->address,ans[i]->tel,ans[i]->E_mail);getchar();}}}if(get=='2'){printf("请输入要删除的学生姓名:");scanf("%s",checkname);getchar();for(i=0;i<n;i++){if(strcmp(checkname,ans[i]->name)==0){ans[i-1]->link=ans[i]->link;n--;break;}}}fp=fopen(fpname,"w+");for(i=0;i<n;i++){fprintf(fp,"%d %s %c %d %d %d %s %s %s",ans[i]->number,ans[i]->name,ans[i]->sex,(*ans[i]).,(*ans[i]).,(*ans [i]).,ans[i]->address,ans[i]->tel,ans[i]->E_mail);}fclose(fp);return(n);}\*主函数模块*\void main(){char get,get2;int n;while(1){show();get=getchar();getchar();switch(get){case '1':printf("请输入学生人数:");scanf("%d",&n);getchar();credit(n);break;case '2':show2(n);break;case '3':printf("按学号查找请输入1加回车键,按姓名查询请输入2加回车键:");get2=getchar();getchar();if(get2=='1'){search1(n);}if(get2=='2'){search2(n);}break;case '4':n=most(n);break;}if(get!='1'&&get!='2'&&get!='3'&&get!='4'){break;}}}总结该程序主要使用结构体与结构化程序的设计,调用文件函数,设计函数时保持头脑思路清晰,有条理,保持各功能独立的函数来实现,需要对程序能熟练使用与掌握,我的函数侧重对单链表的使用,同时侧重文件运用时文件流动时文件信息不会流失。