C语言学生信息管理系统.docx
- 文档编号:14289309
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:17
- 大小:17.32KB
C语言学生信息管理系统.docx
《C语言学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统.docx(17页珍藏版)》请在冰点文库上搜索。
C语言学生信息管理系统
学生信息管理系统设计
1、设计目的:
设计一学生信息管理系统管理学生信息。
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
2、需求分析:
系统以菜单方式工作
学生信息录入功能(学生信息用文件保存)---输入
学生信息浏览功能---输出
查询、排序功能---算法
按学号查询
按姓名查询
学生信息的删除与修改
#include
#include
#include
#defineN10
intstaticsum=0;
structstudent
{
longnum;
charname[20];
intage;
charsex[10];
intyear;
intmonth;
intday;
charaddr[30];
charphone[15];
charemail[30];
}stu[N];/*定义结构体变量*/
voidinput()
{
inti=sum,k=0,s=N;
do/*dowhile循环输入*/
{
printf("录入%d名的学生信息\n",s);
printf("------------------------------------------------\n");;
printf("\n第%d个学生",i+1);
printf("\n学号:
");
scanf("%d",&stu[i].num);
if(stu[i].num==0)
break;
printf("\n学生姓名:
");
scanf("%s",stu[i].name);
printf("\n年龄:
");
scanf("%d",&stu[i].age);
printf("\n性别:
");
scanf("%s",stu[i].sex);
printf("\n出生年月(yyyymmdd):
");
scanf("%d%d%d",&stu[i].year,&stu[i].month,&stu[i].day);
printf("\n地址:
");
scanf("%s",stu[i].addr);
printf("\n电话:
");
scanf("%s",stu[i].phone);
printf("\nE_mail:
");
scanf("%s",stu[i].email);
i++;
k++;
}while(i printf("\n---%d个学生信息输入完毕! --\n",i); printf("\n按回车键返回主菜单! \n"); getchar(); sum=k+sum; save(sum);/*统计输入个数带入save函数*/ } intsave(intsum)/*保存函数*/ { inti; FILE*fp; if((fp=fopen("zzh.txt","w"))==NULL) { printf("cannotopenfile\n"); return0; } for(i=0;i { fprintf(fp,"%3d%8s%6d%4s%8d%2d%2d%12s%12s%16s\n", stu[i].num,stu[i].name,stu[i].age,stu[i].sex, stu[i].year,stu[i].month,stu[i].day,stu[i].addr, stu[i].phone,stu[i].email); } fclose(fp); } voidread() {inti=0; sum=0; FILE*fp; if((fp=fopen("zzh.txt","r"))==NULL) { printf("cannotopenfile\n"); exit(0); } printf("学号--姓名---年龄--性别----出生年月------地址------电话-------E-mail---\n"); for(i=0;;i++) { sum++; fscanf(fp,"%d%s%d%s%d%d%d%s%s%s",&stu[i].num, stu[i].name,&stu[i].age,stu[i].sex, &stu[i].year,&stu[i].month,&stu[i].day,stu[i].addr, stu[i].phone,stu[i].email); if(stu[i].age==0)break; }/*将文件中的数据写入缓冲区*/ for(i=0;i { printf("%3d%8s%6d%4s%8d-%2d-%2d%12s%12s%16s\n", stu[i].num,stu[i].name,stu[i].age,stu[i].sex, stu[i].year,stu[i].month,stu[i].day,stu[i].addr, stu[i].phone,stu[i].email);/*输出到屏幕*/ } fclose(fp); printf("\n按回车键返回主菜单! \n"); getchar(); } voidsort() { inti=0,j,k,sum=0; FILE*fp; structstudentt;/*定义结构体类型的中间变量用于交换*/ if((fp=fopen("zzh.txt","r"))==NULL) { printf("cannotopenfile\n"); exit(0); } printf("学号--姓名-----年龄--性别----出生年月------地址------电话-------E-mail---\n"); for(i=0;;i++) { sum++; fscanf(fp,"%d%s%d%s%d%d%d%s%s%s",&stu[i].num, stu[i].name,&stu[i].age,stu[i].sex, &stu[i].year,&stu[i].month,&stu[i].day,stu[i].addr, stu[i].phone,stu[i].email); if(stu[i].age==0)break; } for(i=0;i {k=i; for(j=i+1;j { if(stu[k].num>stu[j].num) k=j; if(k! =i){ t=stu[k]; stu[k]=stu[i]; stu[i]=t; } } } for(i=0;i { printf("%3d%8s%6d%4s%8d-%2d-%2d%12s%12s%16s\n", stu[i].num,stu[i].name,stu[i].age,stu[i].sex, stu[i].year,stu[i].month,stu[i].day,stu[i].addr, stu[i].phone,stu[i].email); } fclose(fp); printf("\n按回车键返回主菜单! \n"); getchar(); } voidfind() { structstudentFind; intflag;//标志位 inti,j,k,b,a,p; FILE*fp; //------------------------------读数据到缓冲区----------------------------- if((fp=fopen("zzh.txt","r"))==NULL) {/*以文本只读方式重新打开文件*/ printf("cannotopenfile"); exit(0); } printf("输入打开学生成绩数: \n"); scanf("%d",&a); i=a; while(i--) {//读成绩到缓冲区 fscanf(fp,"%d%s%d%s%d%d%d%s%s%s",&stu[i].num, stu[i].name,&stu[i].age,stu[i].sex, &stu[i].year,&stu[i].month,&stu[i].day,stu[i].addr, stu[i].phone,stu[i].email);/*从文件读入*/ } fclose(fp);/*关闭文件*/ //------------------------------读数据到缓冲区----------------------------- if((fp=fopen("zzh.txt","w"))==NULL) {/*以文本只读方式重新打开文件*/ printf("cannotopenfile"); exit(0); } //------------------------------------------------------------ printf("请输入查找方式(输入序号): \n1.姓名\n2.学号\n"); scanf("%d",&k); printf("请用所选择的方式输入(姓名/学号): \n"); switch(k) { case1: scanf("%s",Find.name); for(i=0;;i++) if(strcmp(stu[i].name,Find.name)==0) { Find=stu[i]; break; } printf("%3d%8s%6d%4s%8d-%2d-%2d%12s%12s%16s\n", stu[i].num,stu[i].name,stu[i].age,stu[i].sex, stu[i].year,stu[i].month,stu[i].day,stu[i].addr, stu[i].phone,stu[i].email);/*显示到屏幕*/ break; case2: scanf("%d",&Find.num); for(i=0;;i++) if(stu[i].num==Find.num) { Find=stu[i]; break; } printf("%3d%8s%6d%4s%8d-%2d-%2d%12s%12s%16s\n", stu[i].num,stu[i].name,stu[i].age,stu[i].sex, stu[i].year,stu[i].month,stu[i].day,stu[i].addr, stu[i].phone,stu[i].email);/*显示到屏幕*/ break; } printf("\n\n\n"); //-----------------------------写到指定文件中--------------------------------- for(i=0;i { if(i==flag)continue; fprintf(fp,"%3d%8s%6d%4s%8d%2d%2d%12s%12s%16s\n", stu[i].num,stu[i].name,stu[i].age,stu[i].sex, stu[i].year,stu[i].month,stu[i].day,stu[i].addr, stu[i].phone,stu[i].email); //按指定的格式将数据写入到fp指定的文件中 printf("ok! \n"); printf("%3d%8s%6d%4s%8d-%2d-%2d%12s%12s%16s\n", stu[i].num,stu[i].name,stu[i].age,stu[i].sex, stu[i].year,stu[i].month,stu[i].day,stu[i].addr, stu[i].phone,stu[i].email);/*显示到屏幕*/ } fclose(fp);/*关闭文件*/ printf("\n按回车键返回主菜单! \n"); getchar(); //----------------------------------关闭文件------------------------------- } voidrenew()/*更新功能的菜单函数*/ { inta; printf("\t\t一、删除信息\n"); printf("\t\t二、修改信息\n"); printf("\t\t按0返回主菜单\n"); scanf("%d",&a); switch(a) { case1: del();break; case2: change();break; case0: break; } } intdel() { structstudenttemp; intflag;//标志位 inti,j,k,b,a,p; FILE*fp; //------------------------------读数据到缓冲区----------------------------- if((fp=fopen("zzh.txt","r"))==NULL) {/*以文本只读方式重新打开文件*/ printf("cannotopenfile"); exit(0); } printf("输入打开学生成绩数: \n"); scanf("%d",&a); i=a; while(i--) {//读成绩到缓冲区 fscanf(fp,"%d%s%d%s%d%d%d%s%s%s",&stu[i].num, stu[i].name,&stu[i].age,stu[i].sex, &stu[i].year,&stu[i].month,&stu[i].day,stu[i].addr, stu[i].phone,stu[i].email);/*从文件读入*/ } fclose(fp);/*关闭文件*/ //----------------------------------关闭文件------------------------------- //------------------------------读数据到缓冲区----------------------------- if((fp=fopen("zzh.txt","w"))==NULL) {/*以文本只读方式重新打开文件*/ printf("cannotopenfile"); exit(0); } //------------------------------------------------------------ printf("请输入要删除学生的学号: \n"); printf(""); scanf("%d",&b); flag=-1; for(i=0;;i++) { flag++; if(stu[i].num==b) break; } //stu[flag]为要删除的学生 //-----------------------------写到指定文件中---------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统