You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
student_information_01/学生信息管理系统_1.cpp

650 lines
20 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <STDLIB.H>
#include <stdlib.h>
int N=0;
struct stu
{
long int xuehao; /*学号*/
char name[10]; /*姓名*/
char sex[4]; /*性别*/
int age; /*年龄*/
char birth[10]; /*出生年月*/
char address[10]; /*地址*/
char phone[15]; /*电话号码*/
char mail[20]; /*mail*/
}s[40];
void READ()
{
FILE *fp;
fp=fopen("xsxxk.txt","r");
while( fscanf(fp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",&s[N].xuehao,s[N].name,s[N].sex,&s[N].age,s[N].birth,s[N].address,s[N].phone,s[N].mail)!=EOF) N++;
fclose(fp);
}
void WRITE()
{
int i;
FILE *fp;
fp=fopen("newstudk.txt","w");
for(i=0;i<N;i++)
fprintf(fp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",s[i].xuehao,s[i].name,s[i].sex,s[i].age,s[i].birth,s[i].address,s[i].phone,s[i].mail);
fclose(fp);
}
void Display() /*显示模块*/
{
system ("color 9F");
int i=0;
FILE *fp; /*定义文件结构类指针*/
fp=fopen("xsxxk.txt","r");
system("cls"); /*清屏*/
printf(" 学号 | 姓名 | 性别 | 年龄 | 出生年月 | 地址 | 电话号码 | mail\n");
printf(" | | | | | | | \n ");
while(fscanf(fp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",&s[i].xuehao,s[i].name,s[i].sex,&s[i].age,s[i].birth,s[i].address,s[i].phone,s[i].mail)!=EOF)
{
printf("% -10ld% -9s% -5s% -6d% -11s% -11s% -15s% -20s\n",s[i].xuehao,s[i].name,s[i].sex,s[i].age,s[i].birth,s[i].address,s[i].phone,s[i].mail);
i++;
}
fclose(fp);
}
void Add() /*追加模块*/
{
system ("color CF");
int n,i,a=1,j;
FILE *fp;
while(a==1)
{
system("cls"); /*清屏*/
printf(" ****************************\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 请输入添加个数n: *\n");
printf(" * *\n");
printf(" * *\n");
printf(" ****************************\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("学号:");scanf("%ld",&s[N].xuehao);
printf("名字:");scanf("%s",s[N].name);
printf("性别:");scanf("%s",s[N].sex);
printf("年龄:");scanf("%d",&s[N].age);
printf("出生日期:");scanf("%s",s[N].birth);
printf("地址:");scanf("%s",s[N].address);
printf("电话号码:");scanf("%s",s[N].phone);
printf("mail");scanf("%s",s[N].mail);
if(n>1)
{
printf("\n\n 前一组值已输入完毕,请接着输入下一组值!\n");
}
fp=fopen("xsxxk.txt","w");
for(j=0;j<=N;j++)
{
fprintf(fp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",s[j].xuehao,s[j].name,s[j].sex,s[j].age,s[j].birth,s[j].address,s[j].phone,s[j].mail);
}
fclose(fp);
N++;
}
system("cls"); /*清屏*/
printf(" |==========================|\n");
printf(" | |\n");
printf(" | 是否继续增加? |\n");
printf(" | |\n");
printf(" | 1.是 2.否 |\n");
printf(" | |\n");
printf(" |==========================|\n");
printf(" 请选择1-2");
scanf("%d",&a);
if(a==2)
break;
}
}
void xiugai() /*修改模块*/
{
system ("color 5F");
int lgl=1;
int x,i=0,k;
long int xuehao;
char name[10];
struct stu *p;
FILE *tp;
int lgl1=1;
while(lgl1==1)
{
system("cls"); /*清屏*/
printf(" |==========================================|\n");
printf(" | 请选择修改的人 |\n");
printf(" |==========================================|\n");
printf(" | 1.学号 2.姓名 |\n");
printf(" |==========================================|\n");
printf(" | 3.取消 |\n");
printf(" |==========================================|\n");
printf(" 请选择:");
scanf("%d",&x);
switch(x)
{case 1:
printf("请输入要修改的学生学号:");
scanf("%ld",&xuehao);
for(p=s;p<s+N;p++)
{if(p->xuehao==xuehao)
{
i=1;
int j; //菜单选择项//
while(lgl==1)
{
system("cls"); /*清屏*/
printf("\n\n");
printf(" |=======================================|\n");
printf(" | 请选择要修改的项目: |\n");
printf(" |=======================================|\n");
printf(" | 1.性别 2.年龄 |\n");
printf(" |=======================================|\n");
printf(" | 3.出生日期 4.地址 |\n");
printf(" |=======================================|\n");
printf(" | 5.电话号码 6.mail |\n");
printf(" |=======================================|\n");
printf(" | 7.取消 |\n");
printf(" |=======================================|\n");
printf("请选择想要修改的项目1-7");
scanf("%d",&j);
switch(j)
{ case 1: printf("新性别:"); scanf("%s",p->sex); break;
case 2: printf("新年龄:"); scanf("%d",&p->age); break;
case 3: printf("新出生日期:"); scanf("%s",p->birth); break;
case 4: printf("新地址:"); scanf("%s",p->address); break;
case 5: printf("新电话号码:"); scanf("%s",p->phone); break;
case 6: printf("新mail"); scanf("%s",p->mail); break;
case 7: break;
}
printf("修改后数据如下:\n");
printf("% 6ld% 8s% 6s% 6d% 10s% 10s% 15s% 20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
tp=fopen("xsxxk.txt","w");
for(k=0;k<N;k++)
fprintf(tp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",s[k].xuehao,s[k].name,s[k].sex,s[k].age,s[k].birth,s[k].address,s[k].phone,s[k].mail);
fclose(tp);
printf("修改已成功!是否继续修改此项目的其他数据:(Y/N)");
char a; scanf("%s",&a);
if(a=='y'||a=='Y') lgl=1;
if(a=='n'||a=='N') lgl=0;
}
printf("是否返回修改其他数据:(Y/N)");
char b;
scanf("%s",&b);
if(b=='y'||b=='Y') lgl1=1;lgl=1;
if(b=='n'||b=='N') lgl1=0;
}}
if(i==0)
{
printf("\n\n对不起!您查询的数据不存在!\n是否返回菜单继续选择修改:(Y/N)");
char c;
scanf("%s",&c);
if(c=='y'||c=='Y') lgl1=1;
if(c=='n'||c=='N') lgl1=0;}
break;
case 2:
printf("请输入要修改的学生姓名:");
scanf("%s",name);
for(p=s;p<s+N;p++)
{
if(strcmp(p->name,name)==0)
{i=1;
int j; //菜单选择项
while(lgl==1)
{system("cls"); /*清屏*/
printf("\n\n");
printf(" |============================|\n");
printf(" |============================|\n");
printf(" | 请选择要修改的项目: |\n");
printf(" |============================|\n");
printf(" | 1.性别 2.年龄 |\n");
printf(" |============================|\n");
printf(" | 3.出生日期 4.地址 |\n");
printf(" |============================|\n");
printf(" | 5.电话号码 6.mail |\n");
printf(" |============================|\n");
printf(" | 7.取消 |\n");
printf(" |============================\n");
printf(" |===========================|\n");
printf("请选择想要修改的项目1-7");
scanf("%d",&j);
switch(j)
{ case 1: printf("新性别:"); scanf("%s",p->sex); break;
case 2: printf("新年龄:"); scanf("%d",&p->age); break;
case 3: printf("新出生日期:"); scanf("%s",p->birth); break;
case 4: printf("新地址:"); scanf("%s",p->address); break;
case 5: printf("新电话号码:"); scanf("%s",p->phone); break;
case 6: printf("新mail"); scanf("%s",p->mail); break;
case 7: break;
}
printf("修改后如下:\n");
printf("% 6ld% 8s% 6s% 6d% 10s% 10s% 15s% 20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
tp=fopen("xsxxk.txt","w");
for(k=0;k<N;k++)
fprintf(tp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",s[k].xuehao,s[k].name,s[k].sex,s[k].age,s[k].birth,s[k].address,s[k].phone,s[k].mail);
fclose(tp);
printf("修改已成功!是否继续修改此项目的其他数据:(Y/N)");
char d; scanf("%s",&d);
if(d=='y'||d=='Y') lgl=1;
if(d=='n'||d=='N') lgl=0;}
printf("是否返回修改其他数据:(Y/N)");
char e; scanf("%s",&e);
if(e=='y'||e=='Y') lgl1=1; lgl=1;
if(e=='n'||e=='N') lgl1=0;
}}
if(i==0)
{printf("\n\t对不起!您查询的数据不存在!\n是否返回菜单继续选择修改:(Y/N)");
char m; scanf("%s",&m);
if(m=='y'||m=='Y') lgl1=1;
if(m=='n'||m=='N') lgl1=0;}
break;
case 3:
system("cls");
lgl1=0; break;
}}
}
void shanchu() /*删除模块*/
{
system ("color 5F");
int i,j=1,k=0,m=1, scxuehao;
char scxm[8];
struct stu *p;
FILE *tp;
p=s;
system("cls"); /*清屏*/
while(m){
printf(" |===========================|\n");
printf(" | 删除方式 |\n");
printf(" | | |\n");
printf(" | 1:学号 | 2:姓名 |\n");
printf(" | | |\n");
printf(" |===========================|\n");
printf("请选择删除的类型1-2");
scanf("%d",&i);
switch(i)
{case 1:
printf("请输入删除的学生学号:");
scanf("%16d",&scxuehao);
for (k=0;k<N;k++)
{if(scxuehao==p[k].xuehao)
{j=0;
for(;k<N;k++)
p[k]=p[k+1];
N--;
printf("删除成功!");}}
if (j==1)
{printf("没有找到要删除的信息是否继续删除【Y/N】"); char sf; scanf("%s",&sf);if(sf=='Y'||sf=='y') m=1;if(sf=='N'||sf=='n') m=0;}
if (j==0)
{printf("是否继续删除【Y/N】");char sf; scanf("%s",&sf); if(sf=='Y'||sf=='y') m=1;if(sf=='N'||sf=='n') m=0;}
break;
case 2:
printf("请输入删除的姓名:");
scanf("%s",scxm);
for (k=0;k<N;k++)
{if(strcmp(scxm,s[k].name)==0)
{j=0;
for(;k<N;k++)
p[k]=p[k+1];
N--;
printf("删除成功!\n");}}
if (j==1)
{printf("没有找到要删除的信息是否继续删除【Y/N】"); char sf; scanf("%s",&sf); if(sf=='Y'||sf=='y') m=1;if(sf=='N'||sf=='n') m=0;}
if (j==0)
{printf("是否继续删除【Y/N】");char sf; scanf("%s",&sf); if(sf=='Y'||sf=='y') m=1;if(sf=='N'||sf=='n') m=0;}
}}
tp=fopen("xsxxk.txt","w");
for(i=0;i<N;i++)
fprintf(tp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",s[i].xuehao,s[i].name,s[i].sex,s[i].age,s[i].birth,s[i].address,s[i].phone,s[i].mail);
fclose(tp);
}
void Found() /*查询模块*/
{
system("color CF");
int j=0;
long int xuehao; /*学号*/
char name[10]; /*姓名*/
char sex[4]; /*性别*/
int age; /*年龄*/
char birth[10]; /*出生年月*/
char address[10]; /*地址*/
struct stu *p;
int x;
int lgl=1;
while(lgl==1)
{
int xs=0; //控制查询到的信息显示//
system("cls"); /*清屏*/
printf("\n\n\n");
printf(" |=============================|\n");
printf(" |=============================|\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.取消 |\n");
printf(" |=============================|\n");
printf(" |=============================|\n");
printf("请选择想要查询的项目1-7");
scanf("%d",&x);
switch(x)
{
case 1:
printf("请输入查询学号:");
scanf("%ld",&xuehao);
for(p=s;p<s+N;p++)
{if (p->xuehao==xuehao)
{j=1;
if(xs==0)
{printf("查询到的信息如下:\n");
xs++;
printf(" 学号 姓名 性别 年龄 出生年月 地址 电话号码 mail\n");}
printf("% -10ld% -9s% -5s% -6d% -11s% -11s% -15s% -20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
}
}
if(j==0)
{
printf("\n\n查无此人!\n是否继续查询:(Y/N)");
char a;
scanf("%s",&a);
if(a=='y'||a=='Y') lgl=1;
if(a=='n'||a=='N') lgl=0;
}
if(j==1)
{
j=0; printf("是否继续查询:(Y/N)");
char b;
scanf("%s",&b);
if(b=='y'||b=='Y') lgl=1;
if(b=='n'||b=='N') lgl=0;
}
break;
case 2:
printf("请输入学生姓名:");
scanf("%s",&name);
for(p=s;p<s+N;p++)
{
if (strcmp(p->name,name)==0)
{j=1;
if(xs==0)
{printf("查询到的信息如下:\n");
xs++;
printf(" 学号 姓名 性别 年龄 出生年月 地址 电话号码 mail\n");}
printf("% -10ld% -9s% -5s% -6d% -11s% -11s% -15s% -20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
}}
if(j==0)
{
printf("\n\n查无此人!\n是否继续查询:(Y/N)");
char c;
scanf("%s",&c);
if(c=='y'||c=='Y') lgl=1;
if(c=='n'||c=='N') lgl=0;
}
if(j==1)
{
j=0;
printf("是否继续查询:(Y/N)");
char d;
scanf("%s",&d);
if(d=='y'||d=='Y') lgl=1;
if(d=='n'||d=='N') lgl=0;
}
break;
case 3:
printf("请输入学生性别:");
scanf("%s",sex);
for(p=s;p<s+N;p++)
{
if (strcmp(p->sex,sex)==0)
{j=1;
if(xs==0)
{
printf("查询到的信息如下:\n");
xs++;
printf(" 学号 姓名 性别 年龄 出生年月 地址 电话号码 mail\n");}
printf("% -10ld% -9s% -5s% -6d% -11s% -11s% -15s% -20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
}}
if(j==0)
{
printf("\n\n查无此人!\n是否继续查询:(Y/N)");
char e;
scanf("%s",&e);
if(e=='y'||e=='Y') lgl=1;
if(e=='n'||e=='N') lgl=0;
}
if(j==1)
{
j=0;
printf("是否继续查询:(Y/N)");
char l;
scanf("%s",&l);
if(l=='y'||l=='Y') lgl=1;
if(l=='n'||l=='N') lgl=0;
}
break;
case 4:
printf("请输入学生年龄:");
scanf("%d",&age);
for(p=s;p<s+N;p++)
{
if (p->age==age)
{j=1;
if(xs==0)
{
printf("查询到的信息如下:\n");
xs++;
printf(" 学号 姓名 性别 年龄 出生年月 地址 电话号码 mail\n");}
printf("% -10ld% -9s% -5s% -6d% -11s% -11s% -15s% -20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
}}
if(j==0)
{
printf("\n\n查无此人!\n是否继续查询:(Y/N)");
char u;
scanf("%s",&u);
if(u=='y'||u=='Y') lgl=1;
if(u=='n'||u=='N') lgl=0;
}
if(j==1)
{
j=0;
printf("是否继续查询:(Y/N)");
char q;
scanf("%s",&q);
if(q=='y'||q=='Y') lgl=1;
if(q=='n'||q=='N') lgl=0;
}
break;
case 5:
printf("请输入学生出生日期:");
scanf("%s",birth);
for(p=s;p<s+N;p++)
{
if (strcmp(p->birth,birth)==0)
{j=1;
if(xs==0)
{
printf("查询到的信息如下:\n");
xs++;
printf(" 学号 姓名 性别 年龄 出生年月 地址 电话号码 mail\n");}
printf("% -10ld% -9s% -5s% -6d% -11s% -11s% -15s% -20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
}
}
if(j==0)
{
printf("\n\n查无此人!\n是否继续查询:(Y/N)");
char a;
scanf("%s",&a);
if(a=='y'||a=='Y') lgl=1;
if(a=='n'||a=='N') lgl=0;
}
if(j==1)
{
j=0;
printf("是否继续查询:(Y/N)");
char b;
scanf("%s",&b);
if(b=='y'||b=='Y') lgl=1;
if(b=='n'||b=='N') lgl=0;
}
break;
case 6:
printf("请输入学生地址:");
scanf("%s",address);
for(p=s;p<s+N;p++)
{
if (strcmp(p->address,address)==0)
{j=1;
system("cls");
if(xs==0)
{
printf("查询到的信息如下:\n");
xs++;
printf(" 学号 姓名 性别 年龄 出生年月 地址 电话号码 mail\n");}
printf("% -10ld% -9s% -5s% -6d% -11s% -11s% -15s% -20s\n",p->xuehao,p->name,p->sex,p->age,p->birth,p->address,p->phone,p->mail);
}}
if(j==0)
{
printf("\n\n查无此人!\n是否继续查询:(Y/N)");
char a;
scanf("%s",&a);
if(a=='y'||a=='Y') lgl=1;
if(a=='n'||a=='N') lgl=0;
}
if(j==1)
{
j=0;
printf("是否继续查询:(Y/N)");
char b;
scanf("%s",&b);
if(b=='y'||b=='Y') lgl=1;
if(b=='n'||b=='N') lgl=0;
}
break;
case 7: lgl=0;
break;
}}
}
void paixu() /*排序模块*/
{
system("color 30");
int i,j;
FILE *tp;
struct stu temp;
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(s[i].xuehao>s[j].xuehao)
{
temp=s[j];
s[j]=s[i];
s[i]=temp;
}
}
}
tp=fopen("xsxxk.txt","w");
for(i=0;i<N;i++)
fprintf(tp,"%ld\n%s\n%s\n%d\n%s\n%s\n%s\n%s\n",s[i].xuehao,s[i].name,s[i].sex,s[i].age,s[i].birth,s[i].address,s[i].phone,s[i].mail);
fclose(tp);
}
void Exit()
{
system ("color 3F");
system("cls");
printf(" ========================================|\n");
printf(" | |\n");
printf(" | 学生信息管理系统 |\n");
printf(" | |\n");
printf(" | 制作人:周韬 周远航 |\n");
printf(" | |\n");
printf(" | 期待您的再次使用 ! |\n");
printf(" | |\n");
printf(" | 湖南工业大学通信1803 |\n");
printf(" | |\n");
printf(" |=======================================|\n");
}
void help()
{
system("color 57");
system("cls");
printf("| 您好! |\n");
printf("|=========================================================================|\n");
printf("| |\n");
printf("| 欢迎进入学生信息管理系统! |\n");
printf("| |\n");
printf("| 请按照提示输入数字选择你要进行的操作! |\n");
printf("| |\n");
printf("| 改变学生信息会自动保存! |\n");
printf("| |\n");
printf("| 感谢您的使用! |\n");
printf("| |\n");
printf("|=========================================================================|\n");
}
int main()
{
system("color 9F");
int k;
READ();
k=1;
while(k)
{
system("cls"); /*清屏*/
printf("\n\n");
printf(" |==========================================|\n");
printf(" | |\n");
printf(" | 欢迎使用学生信息管理系统 |\n");
printf(" | |\n");
printf(" |==========================================|\n");
printf(" | |\n");
printf(" | 湖南工业大学 |\n");
printf(" | |\n");
printf(" | 请选择你要进行的操作 |\n");
printf(" | |\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(" | 2019.1.05 |\n");
printf(" |==========================================|\n");
printf("\n\n 请输入您的选择: ");
scanf("%d",&k);
switch(k)
{
case 1:help();break;
case 6:Display(); break;
case 2:Add(); Display(); break;
case 3:xiugai(); Display(); break;
case 4:shanchu(); Display(); break;
case 5:Found();break;
case 7:paixu(); Display(); break;
case 8:Exit(); k=0; break;
return 0;
}
printf("\n\n按任意键继续!\n");
getch();
}
WRITE();
}