程序设计基础课程设计实验报告书目录1.设计题目学生信息管理系统设计2.正文2.1 系统简介学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:1、系统以菜单方式工作2、学生信息录入功能(学生信息用文件保存)--输入3、学生信息浏览功能--输出4、学生信息查询功能--按学号查询、按姓名查询、5、学生信息的删除与修改(可选项)要求:使用文件方式存储数据。
2.2选题背景经典计算机问题,设计学生信息管理系统,可以进行多项系统信息管理功能。
2.3设计内容设计学生信息管理的各个功能。
系统以菜单方式工作。
学生信息录入功能(学生信息用文件保存)--输入。
学生信息浏览功能--输出。
学生信息查询功能--按学号查询、按姓名查询。
学生信息的删除与修改(可选项)2.4设计思路将程序的各个功能分开独立的执行,问题有大而小,细化。
2.5算法(条列式或流程图)主程序模块:2.6#include<stdio.h> #include<stdlib.h>#include<string.h>#include<io.h>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,hea d->name,&head->sex,&(*head).birthday.year,&(*head).birthday.mon th,&(*head).birthday.day,head->address,head->tel,head->E_mail);getchar();fprintf(fp,"%d %s %c %d %d %d %s %s %s",head->number ,head->name,head->sex,(*head).birthday.year,(*head).birthday.month,(*head).birthday.day,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,nex t->name,&next->sex,&(*next).birthday.year,&(*next).birthday.mon th,&(*next).birthday.day,next->address,next->tel,next->E_mail);getchar();fprintf(fp,"%d %s %c %d %d %d %s %s %s",next->number ,next->name,next->sex,(*next).birthday.year,(*next).birthday.mo nth,(*next).birthday.day,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->number ,head->name,&head->sex,&(*head).birthday.year,&(*head).birthday .month,&(*head).birthday.day,head->address,head->tel,head->E_ma il);printf("%d %s %d %d %d %d %s %s %s",&head->number,he ad->name,head->sex,(*head).birthday.year,(*head).birthday.month ,(*head).birthday.day,head->address,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->number ,head->name,&head->sex,&(*head).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head->tel,head->E_ma il);if(checkname==head->number){printf("%d %s %c %d %d %d %s %s %s\n",head->number,h ead->name,head->sex,(*head).birthday.year,(*head).birthday.mont h,(*head).birthday.day,head->address,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->number ,head->name,&head->sex,&(*head).birthday.year,&(*head).birthday .month,&(*head).birthday.day,head->address,head->tel,head->E_ma il);if(strcmp(checkname,head->name)==0){printf("%d %s %c %d %d %d %s %s %s",head->number,hea d->name,head->sex,(*head).birthday.year,(*head).birthday.month, (*head).birthday.day,head->address,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]->numb er,ans[0]->name,&ans[0]->sex,&(*ans[0]).birthday.year,&(*ans[0] ).birthday.month,&(*ans[0]).birthday.day,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]->numb er,ans[i]->name,&ans[i]->sex,&(*ans[i]).birthday.year,&(*ans[i] ).birthday.month,&(*ans[i]).birthday.day,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]->number,a ns[i]->name,&ans[i]->sex,&(*ans[i]).birthday.year,&(*ans[i]).bi rthday.month,&(*ans[i]).birthday.day,ans[i]->address,ans[i]->te l,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]->numb er,ans[i]->name,ans[i]->sex,(*ans[i]).birthday.year,(*ans[i]).b irthday.month,(*ans[i]).birthday.day,ans[i]->address,ans[i]->te l,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;}}}2.7总结该程序主要使用结构体与结构化程序的设计,调用文件函数,设计函数时保持头脑思路清晰,有条理,保持各功能独立的函数来实现,需要对程序能熟练使用与掌握,我的函数侧重对单链表的使用,同时侧重文件运用时文件流动时文件信息不会流失。