这个代码是用最简单的C语言编写
特别适合最初接触C语言的人阅读
第一次发博客
很多都不懂,希望大家多多指教
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
int n;
/* 学生数据结构 */
struct Info
{
long num;
char name[20];
char sex[3];
char phone[20];
};Info info[200];
/* 函数声明 */
void openInfo();
int Menu();
void addInfo();
int seekInfo(long number);
void editInfo();
void delInfo();
void showInfo();
void saveInfo();
/* 主函数 */
void main()
{
int choice;
char c;
printf("是否打开已保存文件(Y or N)?");
scanf("%c",&c);
if(c=='Y')
openInfo();
printf("请按任意键进入主菜单!");
getch();
while(1)
{
system("cls");
choice=Menu();
switch(choice)
{
/* 添加信息 */
case 1:
addInfo();
break;
/* 修改信息 */
case 2:
editInfo();
break;
/* 删除信息 */
case 3:
delInfo();
break;
/* 显示信息 */
case 4:
showInfo();
break;
/* 保存信息 */
case 5:
saveInfo();
break;
/* 结束 */
default:exit(1);
}
getch();
}
}
/* 主菜单 */
int Menu()
{
int choice;
printf(" 学生信息管理系统 \n");
printf("---------------------\n");
printf(" 1- 增加学生信息 \n");
printf(" 2- 修改学生信息 \n");
printf(" 3- 删除学生信息 \n");
printf(" 4- 显示学生信息 \n");
printf(" 5- 保存学生信息 \n");
printf(" 0- 退出 \n");
printf("---------------------\n");
printf("请选择(0 ~ 5):");
scanf("%d",&choice);
return choice;
}
void openInfo()
{
FILE *fp;
if((fp=fopen("a.txt","r"))==NULL)
{
printf("文件a.txt读取失败!\n");
exit(1);
}
else
{
printf("文件a.txt读取成功!\n");
fscanf(fp,"%d",&n);
printf("%d\n",n);
for(int i=0;i<n;i++)
{
fscanf(fp,"%ld",&info[i].num);
printf("%ld ",info[i].num);
fscanf(fp,"%s",info[i].name);
printf("%s ",info[i].name);
fscanf(fp,"%s",info[i].sex);
printf("%s ",info[i].sex);
fscanf(fp,"%s",info[i].phone);
printf("%s\n",info[i].phone);
}
printf("学生信息读取完毕!请按任意键返回主菜单");
}
fclose(fp);
}
/* 添加学生信息 */
void addInfo()
{
system("cls");
int a;
int b=1;
int sex;
int c;
long number;
printf("有多少个学生的信息需要增加:");
scanf("%d",&a);
printf("------------------------------\n");
for(b=1;b<=a;b++)
{
/* 判断学号是否已存在 */
do
{
printf("请输入学号:");
scanf("%ld",&number);
c=seekInfo(number);
if(c!=0)
printf("该学号已存在!请重新输入!\n");
else
info[n].num=number;
}while(c!=0);
printf("请输入姓名:");
scanf("%s",info[n].name);
/* 判断输入的性别选项是否正确 */
do
{
printf("请输入性别(1-男 2-女):");
scanf("%d",&sex);
if(sex==1)
strcpy(info[n].sex,"男");
else
{
if(sex==2)
strcpy(info[n].sex,"女");
else
printf("输入的性别有误!请重新输入!\n");
}
}while(sex!=1&&sex!=2);
printf("请输入号码:");
scanf("%s",info[n].phone);
printf("第 %d 个学生输入完毕!\n",b);
printf("------------------------------\n");
n++;
}
printf("\n学生信息添加完毕,请按任意键返回主菜单");
}
/* 根据学号判断是否该学生信息存在 */
int seekInfo(long number)
{
for(int i=0;i<n;i++)
{
if(info[i].num==number)
return i+1;
}
return 0;
}
/* 修改学生信息 */
void editInfo()
{
system("cls");
int c;
int d;
int choice;
long number;
long newnumber;
/* 判断学号是否已存在 */
do
{
printf("请输入待修改学生的学号:");
scanf("%ld",&number);
c=seekInfo(number);
if(c==0)
printf("该学号不存在!请重新输入!\n");
/* 修改信息 */
else
{
printf("\n%-14ld|%-14s|%-14s|%-14s\n",info[c-1].num,info[c-1].name,info[c-1].sex,info[c-1].phone);
printf("\n1.学号 2.姓名 3.性别 4.电话 "); /* 五个空格 */
/* 判断输入的修改选项是否正确 */
do
{
printf("\n请选择要修改的选项(1~4):");
scanf("%d",&choice);
if(choice<1||choice>4)
printf("修改选项错误!请重新输入选项!");
/* 根据选项修改相应信息 */
else
{
switch(choice)
{
/* 修改学号 */
case 1:
do
{
printf("请输入新的学号:");
scanf("%ld",&newnumber);
d=seekInfo(newnumber);
if(d!=0)
printf("该学号已存在!请重新输入!\n");
else
info[c-1].num=newnumber;
}while(d!=0);
break;
/* 修改姓名 */
case 2:
printf("请输入新的姓名!");
scanf("%s",info[c-1].name);
break;
/* 修改性别 */
case 3:
printf("请输入新的性别(男or女)!");
scanf("%s",info[c-1].sex);
break;
/* 修改电话 */
case 4:printf("请输入新的电话!");
scanf("%s",info[c-1].phone);
break;
}
printf("信息修改成功!\n");
printf("\n%-14ld|%-14s|%-14s|%-14s\n",info[c-1].num,info[c-1].name,info[c-1].sex,info[c-1].phone);
}
}while(choice<1||choice>4);
}
}while(c==0);
printf("\n学生信息修改完毕,请按任意键返回主菜单");
}
/* 删除学生信息 */
void delInfo()
{
int c;
long number;
char choice;
system("cls");
/* 判断学号是否已存在 */
do
{
printf("请输入待删除学生的学号:");
scanf("%ld",&number);
c=seekInfo(number);
if(c==0)
printf("该学号不存在!请重新输入!\n");
/* 删除学生信息 */
else
{
printf("\n%-14ld|%-14s|%-14s|%-14s\n",info[c-1].num,info[c-1].name,info[c-1].sex,info[c-1].phone);
printf("确定删除该学生信息(Y or N)?");
getchar();
scanf("%c",&choice);
if(choice=='Y')
{
n=n-1;
for(int j=c-1;j<n;j++)
{
info[j].num=info[j+1].num;
strcpy(info[j].name,info[j+1].name);
strcpy(info[j].sex,info[j+1].sex);
strcpy(info[j].phone,info[j+1].phone);
}
printf("\n该学生信息删除成功!请按任意键返回主菜单");
}
else
printf("\n该学生信息删除失败!请按任意键返回主菜单");
}
}while(c==0);
}
/* 显示学生信息 */
void showInfo()
{
int choice,k;
long temp1;
char temp2[10],temp3[10],temp4[10];
system("cls");
printf("1-按学号由小到大的顺序输出\n");
printf("2-按学号由大到小的顺序输出\n");
/* 选择输出顺序 */
do
{
printf("请输入选择(1 or 2):");
scanf("%d",&choice);
if(choice!=1&&choice!=2)
printf("选择错误,请重新输入选择!\n");
}while(choice!=1&&choice!=2);
switch(choice)
{
/* 按学号由小到大排序 */
case 1:for(k=1;k<n;k++)
{
for(int j=0;j<n-k;j++)
{
if(info[j].num>info[j+1].num)
{
/* 学号的交换 */
temp1=info[j].num;
info[j].num=info[j+1].num;
info[j+1].num=temp1;
/* 姓名的交换 */
strcpy(temp2,info[j].name);
strcpy(info[j].name,info[j+1].name);
strcpy(info[j+1].name,temp2);
/* 性别的交换 */
strcpy(temp3,info[j].sex);
strcpy(info[j].sex,info[j+1].sex);
strcpy(info[j+1].sex,temp3);
/* 电话的交换 */
strcpy(temp4,info[j].phone);
strcpy(info[j].phone,info[j+1].phone);
strcpy(info[j+1].phone,temp4);
}
}
}
break;
/* 按学号由大到小排序 */
case 2:for(k=1;k<n;k++)
{
for(int j=0;j<n-k;j++)
{
if(info[j].num<info[j+1].num)
{
temp1=info[j].num;
info[j].num=info[j+1].num;
info[j+1].num=temp1;
strcpy(temp2,info[j].name);
strcpy(info[j].name,info[j+1].name);
strcpy(info[j+1].name,temp2);
strcpy(temp3,info[j].sex);
strcpy(info[j].sex,info[j+1].sex);
strcpy(info[j+1].sex,temp3);
strcpy(temp4,info[j].phone);
strcpy(info[j].phone,info[j+1].phone);
strcpy(info[j+1].phone,temp4);
}
}
}break;
}
printf("-----------------------------------------------------------\n");
printf("学号 |姓名 |性别 |号码 \n"); /* 十个空格 */
for(int i=0;i<n;i++)
{
printf("--------------|--------------|--------------|--------------\n");
printf("%-14ld|%-14s|%-14s|%-14s\n",info[i].num,info[i].name,info[i].sex,info[i].phone);
}
printf("\n学生信息显示完毕,请按任意键返回主菜单");
}
/* 保存学生信息 */
void saveInfo()
{
FILE *fp;
if((fp=fopen("a.txt","w+"))==NULL)
{
printf("文件a.txt创建失败!\n");
exit(1);
}
else
{
printf("文件a.txt创建成功!\n");
fprintf(fp,"%d\n",n);
/* 将相关信息存入文件 */
for(int i=0;i<n;i++)
{
fprintf(fp,"%ld %s %s %s\n",info[i].num,info[i].name,info[i].sex,info[i].phone);
}
printf("学生信息保存完毕!请按任意键返回主菜单");
}
fclose(fp);
}
“`