#include"stdio.h" |
#include"stdlib.h" |
#include"conio.h" |
//定义结构体类型 |
typedef struct student |
{ |
int num; //学号 |
char name[20]; |
char sex[3]; |
int age; |
char sdept[20]; |
int score; |
char phone[20]; |
}student; |
student s; |
FILE *fp; |
//欢迎界面 |
void welcome() |
{ |
int t=0; |
for ( int i=0;i<=100;i++) |
{ |
printf ( "\n\n\n\n\t\t***************学生管理系统**********" ); |
|
for ( int j=0;j<=t;j++) |
{ |
printf ( "|||" ); |
} |
t++; |
if (t==7)t=0; |
printf ( "\n\n%d%%\n" ,i); |
for ( int m=0;m<=9000000;m++); |
system ( "cls" ); //清屏函数 |
} |
} |
//注册函数 |
void regist() |
{ |
system ( "cls" ); |
//打开文件 |
fp= fopen ( "学生管理系统.txt" , "ab+" ); |
if (fp==NULL) |
{ |
printf ( "打开失败\n" ); |
return ; |
} //写内存 |
printf ( "请输入学员的学号:" ); |
scanf ( "%d" ,&s.num); |
printf ( "请输入学员的姓名:" ); |
fflush (stdin); |
gets (s.name); |
printf ( "请输入学员的性别:" ); |
fflush (stdin); |
gets (s.sex); |
printf ( "请输入学员的年龄:" ); |
scanf ( "%d" ,&s.age); |
printf ( "请输入学员的专业:" ); |
fflush (stdin); |
gets (s.sdept); |
printf ( "请输入学员的成绩:" ); |
scanf ( "%d" ,&s.score); |
printf ( "请输入学员的联系方式:" ); |
fflush (stdin); |
gets (s.phone); |
//写文件 |
fwrite (&s, sizeof (s),1,fp); |
//关闭文件 |
fclose (fp); |
printf ( "注册成功,学号为:%d\n" ,s.num); |
getch(); |
} |
//全部显示函数 |
void display() |
{ |
system ( "cls" ); |
//打开文件 |
fp= fopen ( "学生管理系统.txt" , "rb+" ); |
if (fp==NULL) |
{ |
printf ( "打开失败\n" ); |
return ; |
} |
printf ( "学号\t姓名\t性别\t年龄\t专业\t成绩\t联系\n" ); |
//读到内存并显示 |
while ( fread (&s, sizeof (s),1,fp)) |
{ |
printf ( "%d\t%s\t%s\t%d\t%s\t%d\t%s\n" ,s.num,s.name,s.sex,s.age,s.sdept,s.score,s.phone); |
} |
//关闭文件 |
//关闭文件 |
fclose (fp); |
getch(); |
} |
//查找函数 |
void select() |
{ |
system ( "cls" ); |
//打开文件 |
fp= fopen ( "学生管理系统.txt" , "rb+" ); |
if (fp==NULL) |
{ |
printf ( "打开失败\n" ); |
return ; |
} |
int number,f=0; |
printf ( "请输入要查找的学号:" ); |
scanf ( "%d" ,&number); |
//读到内存比较 |
while ( fread (&s, sizeof (s),1,fp)) |
{ |
if (s.num==number) |
{ |
f=1; |
break ; |
} |
} |
if (f==1) |
{ |
printf ( "学号\t姓名\t性别\t年龄\t专业\t成绩\t联系\n" ); |
printf ( "%d\t%s\t%s\t%d\t%s\t%d\t%s\n" ,s.num,s.name,s.sex,s.age,s.sdept,s.score,s.phone); |
} |
else |
{ |
printf ( "查无此人\n" ); |
} |
|
//关闭文件 |
fclose (fp); |
getch(); |
} |
//修改函数 |
void update() |
{ |
system ( "cls" ); |
//打开文件 |
fp= fopen ( "学生管理系统.txt" , "rb+" ); |
if (fp==NULL) |
{ |
printf ( "打开失败\n" ); |
return ; |
} |
int number,f=0; |
printf ( "请输入要查找的学号:" ); |
scanf ( "%d" ,&number); |
//读到内存比较 |
while ( fread (&s, sizeof (s),1,fp)) |
{ |
if (s.num==number) |
{ |
f=1; |
break ; |
} |
} |
if (f==1) |
{ |
printf ( "请输入要修改的成绩:" ); |
scanf ( "%d" ,&s.score); |
fseek (fp,- sizeof (s),1); |
fwrite (&s, sizeof (s),1,fp); |
} |
else |
{ |
printf ( "查无此人\n" ); |
} |
|
//关闭文件 |
fclose (fp); |
getch(); |
} |
//删除函数 |
void dele() |
{ |
system ( "cls" ); |
//打开文件 |
fp= fopen ( "学生管理系统.txt" , "rb+" ); |
if (fp==NULL) |
{ |
printf ( "打开失败\n" ); |
return ; |
} |
FILE *fq; |
|
//打开文件 |
fq= fopen ( "stu.txt" , "ab+" ); |
if (fq==NULL) |
{ |
printf ( "打开失败\n" ); |
return ; |
} |
int number; |
printf ( "请输入要删除的学号:" ); |
scanf ( "%d" ,&number); |
while ( fread (&s, sizeof (s),1,fp)) |
{ |
if (s.num!=number) |
{ |
fwrite (&s, sizeof (s),1,fq); |
} |
} |
fclose (fp); |
fclose (fq); |
remove ( "学生管理系统.txt" ); |
rename ( "stu.txt" , "学生管理系统.txt" ); |
getch(); |
} |
//主函数 |
int main() |
{ |
welcome(); |
char xz; |
while (1) |
{ |
printf ( "\n\n\n\t\ta.学员注册\n" ); |
printf ( "\n\t\tb.显示所有学员信息\n" ); |
printf ( "\n\t\tc.查找学员信息\n" ); |
printf ( "\n\t\td.修改学员信息\n" ); |
printf ( "\n\t\te.删除学员信息\n" ); |
printf ( "\n\t\tf.系统退出\n" ); |
printf ( "\n\t\t请选择服务:" ); |
fflush (stdin); //清除输入缓冲区的回车符函数 |
scanf ( "%c" ,&xz); |
if (xz== 'a' ||xz== 'A' ) |
{ |
regist(); |
} |
else if (xz== 'b' ||xz== 'B' ) |
{ |
display(); |
} |
else if (xz== 'c' ||xz== 'C' ) |
{ |
select(); |
} |
else if (xz== 'd' ||xz== 'D' ) |
{ |
update(); |
} else if (xz== 'e' ||xz== 'E' ) |
{ |
dele(); |
} |
else if (xz== 'F' ||xz== 'f' ) |
{ |
exit (0); //系统正常退出函数 |
} |
} |
return 0; |
} |