学生信息管理系统设计.docx
- 文档编号:29389869
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:15
- 大小:18.32KB
学生信息管理系统设计.docx
《学生信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统设计.docx(15页珍藏版)》请在冰豆网上搜索。
学生信息管理系统设计
学生信息管理系统
--C语言版
主要功能介绍:
1实现菜单式选项功能,0—9均有特殊功能
2主要菜单介绍:
数字0:
返回功能,主界面
数字1:
学生信息的输入,不定数量的输入,判断是否继续输入
数字2:
学生信息的显示,可以显示此时学生信息的资料
数字3:
查找学生信息,查找是否存在要查询的学习信息
数字4:
删除学生信息,删除输入的学生信息
数字5:
插入学生信息
数字6:
修改学生信息有子菜单修改学生的任何资料可以反复修改
数字7:
对学生信息进行排列
数字8:
保存学生信息以文本的形式
数字9:
读取学生信息从文本中读取不需要重新输入数据,可读取以前的数据
说明:
此系统是根据其他网友的程序改编的,加入了几项!
此系统还有可以增加的空间,如可以添加登陆界面,输入密码等!
只是鉴于此系统没有用到指针,对于大多数人来说比较容易上手!
心得:
了解别人的程序基础上,进行了升级,遇到了一系列的问题。
如,修改学生信息函数中,保存原来的值,替换原来的值,还有就是scanf()中的&,用反了,该用的没有用,要用的却没有用。
最重要的问题是,完成以上后,把程序关闭后,却不可以从文件中读取。
起初想是文件函数用错了,查看课本,按照课本中的例题来了一遍,可以的,然后对照自己写的文件,是对的!
经过看,才知道是定义的inti惹的祸。
因为变量没有被调用时,还是0,为了验证我的假象,改了i的值,可以了!
所以问题就再于如何解决i的问题!
起初想将其与结构体保存在一个文件中,错了好多次,失败了!
所以保持到了两个文件中!
几位本例题!
有时文件忘记关闭了,造成错误!
此程序具有实际操作意义
复制程序:
看着结果分析程序!
学生信息管理系统源文件如下:
#include
#include
#include
#include
structstudent
{intid;//学号
charname[20];
intage;
charsex[10];
charbirthady[20];
inttel;
charnativeplace[50];
intE_mail;
}st[50];
inti=0;//学生数初始化,通过输入确定人数
voidshuru()
{
FILE*fp;
chara;
do{
printf("\n请输入学号:
");
scanf("%d",&st[i].id);
fflush(stdin);//清空回车字符头文件在stdio.h
printf("\n请输入姓名:
");
gets(st[i].name);//此处没有用到fflush只有在scanf用了
printf("\n");
printf("请输入年龄:
");
scanf("%d",&st[i].age);
fflush(stdin);
printf("\n请输入姓别:
");
gets(st[i].sex);
fflush(stdin);
printf("\n请输入生日:
");
gets(st[i].birthady);
printf("\n请输入电话:
");
scanf("%d",&st[i].tel);
fflush(stdin);
printf("\n请输入籍贯:
");
gets(st[i].nativeplace);
fflush(stdin);
printf("\n请输入E_mail:
");
scanf("%d",&st[i].E_mail);
fflush(stdin);
printf("\n是否继续输入另外一个学生信息?
(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y'&&i<=50);
if((fp=(fopen("c:
\\stu_list1.txt","wb")))==NULL)
{
printf("cannotopenfile:
stu_list1!
\n");
exit(0);
}
fflush(stdin);
putw(i,fp);
fclose(fp);
}
voidsave()
{
inta;
FILE*fp;
if((fp=(fopen("c:
\\stu_list.txt","wb")))==NULL)
{
printf("cannotopenfile:
stu_list!
\n");
exit(0);
}
for(a=0;a
{
if((fwrite(&st[a],sizeof(structstudent),1,fp))!
=1)
{
printf("writeerror!
\n");
fclose(fp);
exit(0);
}
}
printf("\t\t恭喜你,要保存的学生信息已经为您保存完毕!
");
fclose(fp);
}
voidread()
{
FILE*fp,*fp1;
inta,k;
fp1=fopen("c:
\\stu_list1.txt","rb");
k=getw(fp1);
fclose(fp1);
fp=fopen("c:
\\stu_list.txt","rb");
printf("\n");
printf("学号\t姓名\t年龄\t性别\t生日\t电话\t籍贯\t\tE_mail\n");
for(a=0;a { fread(&st[a],sizeof(structstudent),1,fp); printf("%d\t%s\t%d\t%s\t%s\t%d\t%s\t%d\n",st[a].id,st[a].name,st[a].age,st[a].sex,st[a].birthady,st[a].tel,st[a].nativeplace,st[a].E_mail); } fclose(fp); printf("\t\t\t读取全部文件的学生信息完毕! "); } voidxianshi() { intj,k; FILE*fp,*fp1; fp1=fopen("c: \\stu_list1.txt","rb"); k=getw(fp1); fclose(fp1); fp=fopen("c: \\stu_list.txt","rb"); printf("\n"); printf("学号\t姓名\t年龄\t性别\t生日\t电话\t籍贯\tE_mail\n"); for(j=0;j printf("%d\t%s\t%d\t%s\t%s\t%d\t%s\t%d\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].tel,st[j].nativeplace,st[j].E_mail); } voidpaixu()//按年龄从大到小排序函数 { intj,k,b; inttemp; FILE*fp,*fp1; fp1=fopen("c: \\stu_list1.txt","rb"); b=getw(fp1); fclose(fp1); fp=fopen("c: \\stu_list.txt","rb"); for(j=0;j { for(k=0;k { if(st[k].age { temp=st[k].age; st[k].age=st[k+1].age; st[k+1].age=temp; } } } xianshi();//排序后输出 } voidchazhao() {intm,k; charname[20],b; FILE*fp,*fp1; fp1=fopen("c: \\stu_list1.txt","rb"); k=getw(fp1); fclose(fp1); fp=fopen("c: \\stu_list.txt","rb"); printf("\n"); do {printf("\n请输入想查找的学生姓名: "); fflush(stdin); gets(name); for(m=0;m { if(strcmp(name,st[m].name)==0) { printf("\n\t您查找的学生在第%d个位置找到了! ! ! \n",m+1); break; } } if(m>=20) printf("\n\t没有找到这个学生! ! ! \n"); else { printf("学号\t姓名\t年龄\t性别\t生日\t电话\t籍贯\tE_mail\n"); printf("%d\t%s\t%d\t%s\t%s\t%d\t%s\t%d\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace,st[m].E_mail); } printf("\n是否查找另一个学生的信息? (y/n)"); fflush(stdin); b=getchar(); }while(b=='y'); } voidshanchu() { charname[20],c; inta,b,k; FILE*fp,*fp1; fp1=fopen("c: \\stu_list1.txt","rb"); k=getw(fp1); fclose(fp1); fp=fopen("c: \\stu_list.txt","rb"); printf("\n"); do {printf("\n请输入要删除的学生姓名: \n"); fflush(stdin); gets(name); for(a=0;a { if(strcmp(name,st[a].name)==0)break; } for(b=a;b st[b]=st[b+1]; if(a>i) printf("\t没有找到这个学生! ! ! \n"); else {i--; xianshi(); } printf("\n是否继续删除另一个学生信息? (y/n)"); fflush(stdin); c=getchar(); } while(c=='y'); } voidcharu() { shuru(); paixu(); } voidxiugai() { intb,a,m,k,q; intnian0,nian1; intte0,te1; intemail0,email1; charname[20],ch0[20],ch1[20]; charsex0[10],sex1[10]; charbir0[20],bir1[20]; charnative0[50],native1[50]; charen_d; FILE*fp,*fp1; fp1=fopen("c: \\stu_list1.txt","rb"); q=getw(fp1); fclose(fp1); fp=fopen("c: \\stu_list.txt","rb"); printf("\n"); do { printf("按照姓名进行信息查询修改,请输入要修改学生的姓名: "); fflush(stdin); gets(name); fflush(stdin); for(a=0;a { if(strcmp(name,st[a].name)==0) printf("\n\t\t已经找到你要修改的人员! ! \n"); else { if(a==i-1) {printf("\n\t\t对不起,没有找到你要查询的姓名! 请查证后再次查询! ! \n"); gotoloop1;} elsecontinue; } break; } printf("***你想修改学生的信息有如下选择***\n"); printf("**1---学号2---姓名3---年龄**\n"); printf("**4---性别5---生日6---电话**\n"); printf("**7---籍贯8---E_mail**\n"); printf("*********************\n"); printf("\n");printf("\n"); printf("请输入要修改的选项: "); scanf("%d",&b); fflush(stdin); switch(b) { case1: printf("你选择了修改学生的学号,请输入修改后的学生学号: ");scanf("%d",&m);printf("\n");k=st[a].id;st[a].id=m; printf("YES,修改后学生学号是: %d,替代了原来为%d的学号",m,k);break; case2: printf("你选择了修改学生的姓名,请输入修改后的学生姓名: ");scanf("%s",ch1);strcpy(ch0,st[a].name);strcpy(st[a].name,ch1);printf("\n"); printf("YES,修改后学生姓名是: %s,替代了原来为%s的姓名",ch1,ch0);break; case3: printf("你选择了修改学生的年龄,请输入修改后的学生年龄: ");scanf("%d",&nian1);printf("\n");nian0=st[a].age;st[a].age=nian1; printf("YES,修改后学生年龄是: %d,替代了原来为%d的年龄",nian1,nian0);break; case4: printf("你选择了修改学生的性别,请输入修改后的学生性别: ");scanf("%s",sex1);strcpy(sex0,st[a].sex);strcpy(st[a].sex,sex1);printf("\n"); printf("YES,修改后学生生日是: %s,替代了原来为%s的生日",sex1,sex0);break; case5: printf("你选择了修改学生的生日,请输入修改后的学生生日: ");scanf("%s",bir1);strcpy(bir0,st[a].birthady);strcpy(st[a].birthady,bir1);printf("\n"); printf("YES,修改后学生生日是: %s,替代了原来为%s的生日",bir1,bir0);break; case6: printf("你选择了修改学生的电话,请输入修改后的学生电话: ");scanf("%d",te1);te0=st[a].tel;st[a].tel=te1;printf("\n"); printf("YES,修改后学生电话是: %d,替代了原来为%d的电话",te1,te0);break; case7: printf("你选择了修改学生的籍贯,请输入修改后的学生籍贯: ");scanf("%s",native1);strcpy(native0,st[a].nativeplace);strcpy(st[a].nativeplace,native1);printf("\n"); printf("YES,修改后学生籍贯是: %s,替代了原来为%s的籍贯",native1,native0);break; case8: printf("你选择了修改学生的电话,请输入修改后的学生电话: ");scanf("%d",email1);email0=st[a].E_mail;st[a].E_mail=email1;printf("\n"); printf("YES,修改后学生电话是: %d,替代了原来为%d的电话",email1,email0);break; default: printf("查询错误选项,确认后再查询");printf("\n"); } fflush(stdin); loop1: printf("\n是否继续修改学生信息,如果继续,请按y,否则请按n: "); en_d=getchar(); fflush(stdin); }while(en_d=='y'); } voidmain()//主函数 {intchange; do{ system("cls");//清屏 printf("\n"); printf("\n");//软键盘有或者拼xing第五个 printf("******欢迎使用学生信息管理*******\n\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※※\n"); printf("※1.输入学生信息2.显示学生信息※\n"); printf("※※\n"); printf("※3.查找学生信息4.删除学生信息※\n"); printf("※※\n"); printf("※5.插入学生信息6.修改学生信息※\n"); printf("※※\n"); printf("※7.排序学生信息8.保存学生信息※\n"); printf("※※\n"); printf("※9.读取文件学生信息※\n"); printf("※※\n"); printf("※0.退出学生管理系统※\n"); printf("※※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("\n");printf("\n"); fflush(stdin); printf("请输入功能选项: "); scanf("%d",&change); switch(change) {case1: shuru();break; case2: xianshi();break; case3: chazhao();break; case4: shanchu();break; case5: charu();break; case6: xiugai();break; case7: paixu();break; case8: save();break; case9: read();break; case0: break; } getch(); }while(change! =0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 设计