C语言学生学籍管理系统做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456
代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct student {
char xuehao[100];
//输入学号 char name[100];
//输入姓名 char sex[100];
//输入性别 int age;
//输入年龄 char jiguan[100];
//输入籍贯 char dianhua[100];
//输入电话 char yuanxi[100];
//输入院系 char banji[100];
//输入班级 }
stu[1000];
void shouye()//首页 {
int i;
printf("^-^-----------------------------------------------------^-^n");
printf("n");
printf(" $ 欢迎使用学生学籍管理系统! $n");
printf(" $ 制作人: $n");
printf(" $ 李威鹏 $n");
printf(" $ 时间:2017.12 $n");
printf("n");
printf("^-^-----------------------------------------------------^-^n");
printf("Enter键继续!");
getchar();
system("cls");
}
void zhuxiao()//注销用户 {
system("shutdown -f ");
}
void denglu()//登陆 {
void menu();
int i,j;
char mima[16];
for(j=1;
j<=4;
) {
if(j==4) break;
else if(j<4) {
printf("请输入6位密码:n");
printf("剩余输入次数%dn",4-j);
for(i=0;
i<6;
i++) {
mima[i]=getch();
printf("*");
}
}
mima[i]=' ';
if(strcmp(mima,"123456")==0) {
system("cls");
printf("密码正确n");
printf("登陆成功!n");
printf("按Enter键继续!");
getchar();
menu();
return;
}
else {
system("cls");
printf("密码错误n");
j++;
}
}
printf("注销用户!!!n");
zhuxiao();
getch();
}
void menu()//菜单 {
system("cls");
printf("*-----------------------------学生管理系统--------------------------------*n");
printf("n");
printf("1.添加学生信息 2.删除某个学生信息 3.浏览学生信息n");
printf("4.修改学生信息 5.查找某个学生信息 6.显示信息数量n");
printf("0.退出系统n");
printf("n");
printf("*-------------------------------------------------------------------------*n");
}
void save(int m) {
int i;
FILE*fp;
if ((fp=fopen("系统","wb"))==NULL) {
printf ("文件打开失败n");
exit(0);
}
for (i=0;
i<m;
i++) if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("文件打开失败n");
fclose(fp);
}
int load()//打开文件,读取里面的数据 {
FILEFILE *fp;
int i=0;
if((fp=fopen("系统","rb"))==NULL) {
printf ("文件打开失败n");
exit(0);
}
else {
do {
fread(&stu[i],sizeof(struct student),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
int menuchoose()//选择菜单 {
int n;
menu();
printf("请选择菜单0~6:");
while(1 != scanf("%d", &n) || n < 0 || n> 6) {
menu();
printf("选择菜单错误,请重新选择(0 ~ 6):");
fflush(stdin);
//清空输入缓冲区 }
return n;
}
void add()//添加学生信息 {
int i,m,q,s=1;
system("cls");
printf("---------------输入学生信息---------------n");
printf("请输入需要添加学生的总人数:n");
scanf("%d",&m);
for (i=0;
i<m;
i++) {
printf("n输入第 %d 个学生学籍信息.n",i+1);
printf("请输入学号:");
scanf("%s",stu[i].xuehao);
for(q=0;
q<m;
q++) {
if(strcmp(stu[q].xuehao,stu[i].xuehao)==0&&q!=i) {
printf("该学号已经存在,请重新输入:n");
printf("请输入学号:n");
s=1;
scanf("%s",stu[q].xuehao);
}
}
printf("请输入姓名:");
scanf("%s",stu[i].name);
printf("请输入性别:");
scanf("%s",stu[i].sex);
printf("请输入年龄:");
scanf("%d",&stu[i].age);
getchar();
printf("请输入籍贯:");
scanf("%s",stu[i].jiguan);
printf("请输入电话:");
scanf("%s",stu[i].dianhua);
printf("请输入院系:");
scanf("%s",stu[i].yuanxi);
printf("请输入班级:");
scanf("%s",stu[i].banji);
}
save(m);
}
void show() {
system("cls");
int i;
int m=load();
if(m==0) {
printf("n暂无学生信息!n");
printf("是否添加学生信息?n 是:1 否:2n");
int a2;
scanf("%d",&a2);
if(a2==1) add();
else menu();
}
else {
printf("----------------------浏览学生信息--------------------------n");
printf("n");
printf("tttttttn");
for(i=0;
i<m;
i++) {
printf("第%d位同学的信息为:n",i+1);
printf("学号:%sn",stu[i].xuehao);
printf("姓名:%sn",stu[i].name);
printf("性别:%sn",stu[i].sex);
printf("年龄:%dn",stu[i].age);
printf("籍贯:%sn",stu[i].jiguan);
printf("电话:%sn",stu[i].dianhua);
printf("院系:%sn",stu[i].yuanxi);
printf("班级:%sn",stu[i].banji);
}
system("pause");
}
}
void del() {
int m=load();
int i,j,n,t,flag;
char xuehao[20];
printf("n 原有的学生信息为:n");
show();
printf("n");
printf("请输入要删除的学生的学号:n");
scanf("%s",xuehao);
for(flag=1,i=0;
flag&&i<m;
i++) {
if(strcmp(stu[i].xuehao,xuehao)==0) {
printf("学号:%sn",stu[i].xuehao);
printf("姓名:%sn",stu[i].name);
printf("性别:%sn",stu[i].sex);
printf("年龄:%dn",stu[i].age);
printf("籍贯:%sn",stu[i].jiguan);
printf("电话:%sn",stu[i].dianhua);
printf("院系:%sn",stu[i].yuanxi);
printf("班级:%sn",stu[i].banji);
printf("是否要删除此人信息?n是请按1,否请按0:n");
scanf("%d",&n);
if(n==1) {
for(j=i;
j<m-1;
j++) {
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].xuehao,stu[j+1].xuehao);
strcpy(stu[j].sex,stu[j+1].sex);
stu[j].age=stu[j+1].age;
strcpy(stu[j].yuanxi,stu[j+1].yuanxi);
strcpy(stu[j].banji,stu[j+1].banji);
strcpy(stu[j].jiguan,stu[j+1].jiguan);
strcpy(stu[j].dianhua,stu[j+1].dianhua);
}
flag=0;
}
}
}
if(!flag) m=m-1;
else printf("n无此人信息!n");
save(m);
printf("n是否继续删除信息n 继续请按1n退出请按0n");
scanf("%d",&t);
switch(t) {
case 1: del();
break;
case 0: menu();
break;
default : break;
}
}
void xiugai()//修改学生信息 {
system("cls");
FILEFILE *fp;
int n,i,j,c,x,y;
char m[10];
n=load();
show();
printf("请输入要修改学生的学号或姓名:");
scanf("%s",&m);
do {
printf("n请选择要修改的选项:nn1.学号 2.姓名 3.性别 4.年龄 5.籍贯 6.电话 7.院系 8.班级 9.取消并返回n");
printf("请选择?:n ");
scanf("%d",&c);
if(c>9||c<1) {
menu();
puts("n选择错误!请重新选择!");
fflush(stdin);
//清空输入缓冲区 }
}
while(c>9||c<1);
for (i=0;
i<n;
i++) if (!strcmp(stu[i].xuehao,m)||!strcmp(stu[i].name,m)) {
switch (c) {
case 1: printf("学号:");
scanf("%s",stu[i].xuehao);
break;
case 2: printf("姓名:");
scanf("%s",stu[i].name);
break;
case 3: printf("性别:");
scanf("%s",stu[i].sex);
break;
case 4: printf("年龄:");
scanf("%d",&stu[i].age);
break;
case 5: printf("籍贯:");
scanf("%s",stu[i].jiguan);
break;
case 6: printf("电话:");
scanf("%s",stu[i].dianhua);
break;
case 7: printf("院系:");
scanf("%s",stu[i].yuanxi);
break;
case 8: printf("班级:");
scanf("%s",stu[i].banji);
break;
case 9: menu();
/*返回主菜单*/ }
printf("是否保存?n");
printf("是:1n否:2n");
scanf("%d",&x);
}
if(x==1) {
save(n);
printf("保存成功!n");
printf("是否继续修改?继续:1 否:2n");
int p;
scanf("%d",&p);
if(p==1) {
xiugai();
}
else {
menu();
}
}
else {
printf("退出请按0,继续修改请按1n");
scanf("%d",&y);
switch(y) {
case 0: break;
case 1: xiugai();
break;
}
}
}
void showone(int c) /*输出一个学生的信息*/ {
printf("学号:%sn",stu[c].xuehao);
printf("姓名:%sn",stu[c].name);
printf("性别:%sn",stu[c].sex);
printf("年龄:%dn",stu[c].age);
printf("籍贯:%sn",stu[c].jiguan);
printf("电话:%sn",stu[c].dianhua);
printf("院系:%sn",stu[c].yuanxi);
printf("班级:%sn",stu[c].banji);
}
void chazhao()//查找某个学生的信息 {
system("cls");
FILE*fp;
int a1,b1,c1,d1,e1,n,i;
char t[10];
n=load();
printf("请输入要查找的学生的学号或姓名:");
scanf("%s",t);
for(i=0;
i<n;
i++) if (!strcmp(stu[i].xuehao,t)||!strcmp(stu[i].name,t)) {
printf("学号:%sn",stu[i].xuehao);
printf("姓名:%sn",stu[i].name);
printf("性别:%sn",stu[i].sex);
printf("年龄:%dn",stu[i].age);
printf("籍贯:%sn",stu[i].jiguan);
printf("电话:%sn",stu[i].dianhua);
printf("院系:%sn",stu[i].yuanxi);
printf("班级:%sn",stu[i].banji);
printf("是否继续查找?继续:1 返回主菜单:2n");
scanf("%d",&c1);
switch(c1) {
case 1: chazhao();
return ;
case 2: system("cls");
menu();
return;
}
}
if (strcmp(stu[i].xuehao,t)||strcmp(stu[i].name,t)) {
printf("无该学生信息!n");
printf("是否继续查找? 继续:1 返回主菜单:2n");
scanf("%d",&b1);
switch(b1) {
case 1: chazhao();
return;
case 2: menu();
return ;
}
}
}
void shuliang() {
system("cls");
int n,h;
n=load();
printf("共有 %d 个学生的记录.n",n);
if(n==0) {
printf("暂无学生信息!n");
system("pause");
menu();
}
else {
printf("是否显示学生信息?n是:1 否:2n");
scanf("%d",&h);
if(h==1) {
show();
}
else {
menu();
}
}
menu();
/*返回主函数*/ }
int main() {
shouye();
denglu();
int test=1;
while(test) {
switch(menuchoose()) {
case 0: test=0;
printf("n ^-^谢谢使用!^-^ n");
printf(" 代码有点长,错误也有点多,望见谅^-^n");
break;
case 1://增加学生学籍信息 add();
break;
case 2://删除某个学生信息 del();
break;
case 3://显示学生信息 show();
break;
case 4://修改学生信息 xiugai();
break;
case 5://查找某个学生信息 chazhao();
break;
case 6: shuliang();
//显示学生学籍数量 break;
}
}
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- C语言银行系统课程设计
- C语言职工信息管理系统源码
- C语言实现歌曲信息管理系统
- C语言实现图书管理系统
- C语言实现学生学籍管理系统
- C语言实现简单学生学籍管理系统
- 学生信息管理系统C语言版
- C语言单链表版学生信息管理系统
- C语言实现学生信息管理系统(单链表)
- C语言银行储蓄系统源码