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.

244 lines
6.5 KiB

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
void look(); /*声明查看函数*/
void save(); /*声明保存函数*/
void search_name(); /*声明按姓名查看函数*/
void search_number(); /*声明按学号查看函数*/
void order(); /*声明排序函数*/
void del(); /*声明删除函数*/
int openl(); /*声明打开函数*/
void type(); /*声明输入函数*/
void see(); /*声明打开并查看文件函数*/
struct student /*定义学生信息的结构体类型*/
{
char num[15]; /*学号*/
char name[20]; /*姓名*/
char sex[4]; /*性别*/
char age[3]; /*年龄*/
char ad[20]; /*地址*/
char tel[20]; /*电话*/
char E[20]; /*邮箱*/
char year[20];/*年份*/
char month[12];/*月份*/
char day[30];/*日期*/
}stu[100];
int n; /*声明一个全局变量*/
void main() /*主函数即用户的操作界面*/
{
int b,flag=0; /*声明局部变量*/
while(1) /*循环输出以下信息*/
{
printf("\n\t\t\t欢迎来到学生信息管理系统!\n");
printf("\n\t\t\t\t 刘紫婷制作\n");
printf("\t\t\t-------------------------------\n");
printf("\t\t\t1.录入学生的信息\n\n"); /*录入学生的信息*/
printf("\t\t\t2.查看录入的学生信息\n\n"); /*查看录入的学生信息*/
printf("\t\t\t3.按姓名查看学生的信息\n\n"); /*按姓名查看学生的信息*/
printf("\t\t\t4.按学号查看学生的信息\n\n"); /*按学号查看学生的信息*/
printf("\t\t\t5.按学号对学生信息排序\n\n"); /*排序*/
printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/
printf("\t\t\t7.保存学生信息\n\n"); /*保存*/
printf("\t\t\t8.打开文件\n\n"); /*打开文件*/
printf("\t\t\t0.退出\n\n"); /*退出*/
printf("\t\t\t请输入你的选择:");
scanf("%d",&b);
switch(b)
{
case 1:type();break; /*调用录入学生信息函数*/
case 2:look();break; /*调用查看函数*/
case 3:search_name();break; /*调用姓名查看学生信息函数*/
case 4:search_number();break; /*调用学号查看学生信息函数*/
case 5:order();break; /*调用学号排序学生信息函数*/
case 6:del();break;/*调用删除函数*/
case 7:save();break;/*调用保存函数*/
case 8:see();break;/*调用打开文件函数*/
case 0:flag=1;break;/*退出SWITCH语句*/
default :printf("错误!");
}
if(flag)
break; /*如果选择0就退出循环*/
}
}
void type() /*定义录入学生信息函数*/
{
int i; /*定义局部变量*/
n=openl(); /*调用openl函数*/
printf("\t\t输出你想输入的学生信息个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\n\t\t\t----------------\n");
printf("\t\t\t学号:");
scanf("%s",&stu[i].num); /*输入学号*/
printf("\t\t\t姓名:");
scanf("%s",&stu[i].name); /*输入姓名*/
printf("\t\t\t性别:");
scanf("%s",&stu[i].sex); /*输入性别*/
printf("\t\t\t年龄:");
scanf("%s",&stu[i].age); /*输入年龄*/
printf("\t\t\t地址:");
scanf("%s",&stu[i].ad); /*输入地址*/
printf("\t\t\t电话:");
scanf("%d",&stu[i].tel); /*输入电话*/
printf("\t\t\tE-mail:");
scanf("%s",&stu[i].E);/*输入E-mail*/
printf("\t\t\t年份:");
scanf("%s",&stu[i].year);/*输入年份*/
}
printf("\n\n\t\t\t按任意键返回菜单!!");
getchar();
save();
}
void save() /*建立保存文件函数*/
{
FILE *fp; /*定义文件型指针*/
int i;
if((fp=fopen("student.txt","wb"))==NULL) /*打开输出文件*/
{
printf("不能打开文件!\n");
return; /*终止程序*/
}
for(i=0;!feof(fp);i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("文件写入错误\n");
fclose(fp); /*关闭文件*/
printf("\n\n\n\n\t\t\t学生信息保存成功!\n");
printf("\n\n\n\n\t\t\t按任意键返回菜单!!");
getch();
}
void look() /*定义查看函数*/
{
int i;
n=openl(); /*调用openl函数*/
printf("\t学号\t姓名\t性别\t年龄\t地址\t电话\tE-mail\t\t\t\n");
for(i=0;i<n;i++)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].age,stu[i].ad,stu[i].tel,stu[i].E,stu[i].year,stu[i].month,stu[i].day);
}
printf("\n\n\n\t\t\t按任意键返回菜单");
getchar();
}
void search_name() /*按姓名查看函数*/
{
int i;
char name[20]; /*声明字符数组*/
n=openl();
printf("\t\t\t请输入学生姓名:\n");
scanf("%s",name);
printf("\t学号\t姓名\t性别\t年龄\t地址\t电话\tE-mail\t\t\t\n");
for(i=0;i<n;i++)
if(strcmp(stu[i].name,name)==0) /*将输入的姓名与结构体中的姓名进行比较*/
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].age,stu[i].ad,stu[i].tel,stu[i].E,stu[i].year,stu[i].month,stu[i].day);
printf("\n\n\n\t\t\t按任意键返回菜单");
}
getchar();
}
void search_number() /*定义按学号查看函数*/
{
int i;
char number[15]; /*声明字符数组*/
n=openl();
printf("\t\t\t请输入学号:\n");
scanf("%s",number);
printf("\t学号\t姓名\t性别\t年龄\t地址\t电话\tE-mail\t\t\t\n");
for(i=0;i<n;i++)
if(strcmp(stu[i].num,number)==0) /*将输入的学号与结构体中的学号进行比较*/
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].age,stu[i].ad,stu[i].tel,stu[i].E,stu[i].year,stu[i].month,stu[i].day);
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
void order() /*定义排序函数*/
{
int i,j;
char a;
struct student temp; /*声明结构体变量*/
n=openl();
printf("\t学号\t姓名\t性别\t年龄\t地址\t电话\tE-mail\t\t\t\n");
for(i=0;i<n;i++)
{
for(j=i+1;j<n-1;j++)
if(stu[i].num>stu[j].num)
{
temp=stu[i];
stu[i]= stu[j];
stu[j]=temp;
}
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].age,stu[i].ad,stu[i].tel,stu[i].E,stu[i].year,stu[i].month,stu[i].day);
}
getch();
printf("是否保存?(y or n)");
scanf("%c",&a);
if(a=='y') /*是否保存排序后的文件*/
save();
else
printf("退出");
getchar();
}
void del() /*定义删除学生信息函数*/
{
int i;
char a;
char name[20];
n=openl();
printf("\t\t\t输入学生名字:\n");
scanf("%s",name);
printf("\t学号\t姓名\t性别\t年龄\t地址\t电话\tE-mail\t\t\t\n");
for(i=0;i<n;i++)
if(strcmp(stu[i].name,name)==0)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].age,stu[i].ad,stu[i].tel,stu[i].E,stu[i].year,stu[i].month,stu[i].day);
getch();
printf("真的删除?(y or n)");
getchar();
scanf("%c",&a);
if(a=='y') /*是否删除该信息*/
{
for(i=0;i<n;i++)
stu[i]=stu[i+1];
n=n-1;
printf("你已经删除信息");
}
else
printf("退出");
getchar();
}
save();
}
int openl() /*定义打开文件函数*/
{
int i;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
("Cannot open file.\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void see() /*打开并查看文件*/
{
int i;
n=openl();
printf("文件打开成功!\n");
printf("按任意键查看!\n");
getch();
printf("\t学号\t姓名\t性别\t年龄\t地址\t电话\tE-mail\t\t\t\n");
for(i=0;i<n;i++)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].age,stu[i].ad,stu[i].tel,stu[i].E,stu[i].year,stu[i].month,stu[i].day);
}
printf("\n\n\n\t\t\t按任意键返回菜单");
getchar();
}