C语言编写程序:同学通信录管理系统
望采纳
#include<stdioh>
#include<stdlibh>
#include<stringh>
typedef struct
{
char score; /编号/
char name[10]; /姓名/
char num[15]; /号码/
char email[20]; /邮箱/
char age[8]; /年龄/
char adds[20]; /住址/
}Person;
Person pe[80];
//登陆函数
logon()
{printf("\n\n\n\t\t\t 通讯录管理系统\n\n");
printf("\t\t\t 版本号:10\n\n");
printf("\n\n\n\n\n\t\t\t 2011年4月29日\n\n");
printf("\t\t\t 程序设计第三组\n");
system("pause");
}
int menu_select()
{ char c;
logon();
do{
system("cls");
printf("\t\t 通讯录 \n");
printf("\t\t┌───────┐\n");
printf("\t\t│ 1 添加记录 │\n");
printf("\t\t│ 2 显示记录 │\n");
printf("\t\t│ 3 删除记录 │\n");
printf("\t\t│ 4 查询记录 │\n");
printf("\t\t│ 5 修改记录 │\n");
printf("\t\t│ 6 保存记录 │\n");
printf("\t\t│ 0 退出程序 │\n");
printf("\t\t└───────┘\n");
printf("\t\t请您选择(0-6):");
c=getchar();
}while(c<'0'||c>'6');
return(c-'0');
}
int Input(Person per[],int n)
{
int i=0;
char sign,x[10];
while(sign!='n'&&sign!='N')
{
printf("\t编号:");
scanf("\t%d",&per[n+i]score);
printf("\t姓名:");
scanf("\t%s",per[n+i]name);
printf("\t年龄:");
scanf("\t%s",per[n+i]age);
printf("\t电话号码:");
scanf("\t%s",per[n+i]num);
printf("\t通讯住址:");
scanf("\t%s",per[n+i]adds);
printf("\t电子邮箱:");
scanf("\t%s",per[n+i]email);
gets(x);
printf("\n\t是否继续添加(Y/N)");
scanf("\t%c",&sign);
i++;
}
return(n+i);
}
void Display(Person per[],int n)
{
int i;
printf("----------------------------------------------------------------------\n"); /格式/
printf("编号 姓名 年龄 电话号码 通讯地址 电子邮箱\n");
printf("----------------------------------------------------------------------\n");
for(i=1;i<n+1;i++)
{
printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1]score,per[i-1]name,per[i-1]age,per[i-1]num,per[i-1]adds,per[i-1]email);
if(i>1&&i%10==0)
{
printf("\t-----------------------------------\n");
printf("\t");
system("pause");
printf("\t-----------------------------------\n");
}
}
printf("----------------------------------------------------------------------\n");
system("pause");
}
int Delete_a_record(Person per[],int n)
{
char s[20];
int i=0,j;
printf("\t请输入想删除记录中的名字:");
scanf("%s",s);
while(strcmp(per[i]name,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return(n);
}
for(j=i;j<n-1;j++)
{
strcpy(per[j]num,per[j+1]num);
strcpy(per[j]name,per[j+1]name);
strcpy(per[j]age,per[j+1]age);
strcpy(per[j]adds,per[j+1]adds);
strcpy(per[j]email,per[j+1]email);
per[j]score=per[j+1]score;
}
printf("\t\t\t已经成功删除!\n");
return(n-1);
}
void Query_a_record(Person per[],int n)
{
int m;
printf("\t\n请选择查询方式:\n");
printf("\t┌──────┐\n");
printf("\t│1------姓名 │\n");
printf("\t│2------电话 │\n");
printf("\t│3------地址 │\n");
printf("\t│4------返回 │\n");
printf("\t└──────┘\n");
printf("请选择:");
scanf("%d",&m);
while(m!=1&&m!=2&&m!=3&&m!=4)
{
printf("输入错误,请重新选择:");
scanf("%d",&m);
}
if(m==1)
{
char s[20];
int i=0;
printf("\t请输入想查询的姓名:");
scanf("\t%s",s);
while(strcmp(per[i]name,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t此人编号: %d\n",per[i]score);
printf("\t此人年龄: %s\n",per[i]age);
printf("\t电话号码: %s\n",per[i]num);
printf("\t通讯地址: %s\n",per[i]adds);
printf("\t电子邮箱: %s\n",per[i]email);
} ;
if(m==2)
{
char s[20];
int i=0;
printf("\t请输入想查询的电话:");
scanf("\t%s",s);
while(strcmp(per[i]num,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t此人编号: %d\n",per[i]score);
printf("\t此人姓名: %s\n",per[i]name);
printf("\t此人年龄: %s\n",per[i]age);
printf("\t通讯地址: %s\n",per[i]adds);
printf("\t电子邮箱: %s\n",per[i]email);
} ;
if(m==3)
{
char s[20];
int i=0;
printf("\t请输入想查询的地址:");
scanf("\t%s",s);
while(strcmp(per[i]adds,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t此人编号: %d\n",per[i]score);
printf("\t此人姓名: %s\n",per[i]name);
printf("\t此人年龄: %s\n",per[i]age);
printf("\t电话号码: %s\n",per[i]num);
printf("\t电子邮箱: %s\n",per[i]email);
} ;
}
void Change(Person per[],int n)
{
char s[20];
int i=0;
printf("\t请输入想修改的记录中的名字:");
scanf("%s",s);
while(strcmp(per[i]name,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t编号:");
scanf("\t%d",&per[i]score);
printf("\t姓名:");
scanf("\t%s",per[i]name);
printf("\t年龄:");
scanf("\t%s",per[i]age);
printf("\t电话号码:");
scanf("\t%s",per[i]num);
printf("\t通讯住址:");
scanf("\t%s",per[i]adds);
printf("\t电子邮箱:");
scanf("\t%s",per[i]email);
printf("\t修改成功!");
}
void WritetoText(Person per[],int n)
{
int i=0;
FILE fp; /定义文件指针/
char filename[20]; /定义文件名/
printf("\t保存到文件\n"); /输入文件名/
printf("\t请输入所保存的文件名:");
scanf("\t%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\t无法打开文件\n");
system("pause");
return;
}
fprintf(fp,"通讯录\n");
fprintf(fp,"编号 姓名 年龄 电话号码 通讯地址 电子邮箱\n");
fprintf(fp,"------------------------------------------------------------------------------------------\n");
while(i<n)
{
fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i]score,per[i]name,per[i]age,per[i]num,per[i]adds,per[i]email);
i++;
}
fprintf(fp,"------------------------------------------------------------------------------------------\n");
fprintf(fp,"共有%d条记录\n",n);
fclose(fp); /关闭文件/
printf("保存成功!\n");
}
void main()
{
int n=0;
for(;;)
{
switch(menu_select())
{
case 1:
printf("\n\t添加记录到通讯录\n"); n=Input(pe,n);
break;
case 2:
printf("\n\t\t\t 通讯录记录表\n");
Display(pe,n);
break;
case 3:
printf("\n\t从通讯录中删除记录\n");
n=Delete_a_record(pe,n);
printf("\t");
system("pause");
break;
case 4:
printf("\n\t在通讯录中查找记录\n");
Query_a_record(pe,n);
printf("\t");
system("pause");
break;
case 5:
printf("\n\t修改通讯录中的记录\n");
Change(pe,n);
printf("\t");
system("pause");
break;
case 6:
printf("\n\t保存功能\n");
WritetoText(pe,n);
printf("\t");
system("pause");
break;
case 0:
printf("\n\t\t谢谢使用,再见!\n");
printf("\n\t\t");
system("pause");
exit(0);
}
}
}
/学生管理系统/
//modify
#include<stdioh>
#include<stringh>
#include<conioh>
#include<stdlibh>
#include<timeh>
#define N 100
typedef struct student
{
int num; //学号,姓名,年龄,性别,出生年月,地址,电话,
char name[18];
char sex;
int age;
int y,m;
int tel;
char add[30];
char mail[20];
int res;
int stu;
} SDate;
int PassWord();
void Menu();
int Input_Choice(); //函数声明
void Info_Paixu(SDate student,int n);
void Info_print(SDate stu,int n);
int Input_file(SDate stu1);
int Info_Input(SDate stu,int count);
void Info_Seach(SDate stu,int n);
void Info_Change(SDate stu,int n,int Num);
void Exit();
void Print_file(SDate stu,int n);
int Info_Del(SDate stu, int n, int del);
void Info_Change(SDate stu, int res, int choice);
int Info_Add(SDate stu, int count);
int main()
{
SDate stu[N];
int ret=0,res=0,choice=0;
char ch;
loop:
ret=PassWord(); //登录函数 默认密码为admin
if(!ret)
{
system("cls");
printf("\n\t\t密码错误或验证码错误!\n"); //默认密码:admin
system("pause");
system("cls");
goto loop;
}
system("cls");
e:
Menu(); //菜单显示函数
printf("你的选择是\n");
scanf("%d",&ret);
switch(ret)
{
case 1:
choice=Input_Choice(); //InputChoice()数据输入方式选择函数
if(choice==1)
res=Info_Input(stu,res); //键盘输入函数
else if(choice==2)
res=Input_file(stu); //文件读取函数
else
{
system("cls");
goto e;
}
break;
case 2:
if(res==0)
{
system("cls");
printf("没有数据输入,请重新选择!\n");
goto e;
}
else
Info_print(stu,res);
break;
case 3:
if(res==0||res==1)
{
system("cls");
printf("没有需要排序数据,请重新选择!\n");
goto e;
}
else
Info_Paixu(stu,res);
break;
case 4:
Info_Seach(stu,res);
break;
case 5:
res=Info_Add(stu,res);
break;
case 6:
Info_print(stu,res);
printf("输入学号进行删除:");
scanf("%d",&choice);
res=Info_Del(stu, res, choice);
break;
case 7:
printf("请输入需要修改的学号:");
scanf("%d",&choice);
Info_Change(stu,res,choice);
break;
case 8:
Print_file(stu, res);
break;
case 9:
Exit();
break;
default :
printf("您的选泽有误!\n");
}
getchar();
printf("返回主菜单重新选择y/n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
system("cls");
goto e;
}
return 0;
}
int yanzheng() //验证码模块
{
int a,b,c,d;
srand((unsigned)time(NULL));
a=rand()%100;
b=rand()%100;
c=a+b;
printf("\n\t \n");
printf("\t\t验证码: %d+%d=\n",a,b);
printf("\t\t 答案为:");
scanf("%d",&d);
if(c==d)
return 1;
else
return 0;
}
int PassWord() //登录模块
{
int i=0;
char passWord[18];
char p[]="admin"; //默认密码设置
char ch;
printf("\t 欢迎使用学生信息管理系统\n");
printf("\n");
printf("\t\t用户名:Admin\n");
printf("\n");
printf("\t\t密码:");
while((ch=getch())!=13)
{
putchar('');
passWord[i]=ch;
i++;
}
passWord[i]='\0';
if(strcmp(p,passWord)==0)
yanzheng();
else
return 0;
}
void Menu() //菜单模块
{
printf("\t 欢迎使用学生信息管理系统\n");
printf("\n\n");
printf(" \t\t1、学生信息录入\t\t \n");
printf(" \t\t2、学生信息浏览\t\t \n");
printf(" \t\t3、学生信息排序\t\t \n");
printf(" \t\t4、学生信息查找\t\t \n");
printf(" \t\t5、学生信息添加\t\t \n");
printf(" \t\t6、学生信息删除\t\t \n");
printf(" \t\t7、学生信息修改\t\t \n");
printf(" \t\t8、学生信息保存\t\t \n");
printf("\t\t9、退出\t\t\t \n");
printf("\n");
}
int Input_Choice() //数据输入方式选择
{
int i;
system("cls");
printf("\t 欢迎使用学生信息管理系统\n");
printf("\t\t1、键盘录入\n");
printf("\t\t2、文件读取\n");
printf("\t\t0、返回\n");
printf("\t你的选择是");
scanf("%d",&i);
return i;
}
int Info_Input(SDate stu,int count) //信息从键盘输入模块
{
SDate p;
p=stu;
system("cls");
printf("请输入第%d个学生学号(输入0结束):\n",count+1);
scanf("%d",&p->num);
while(p->num!=0)
{
printf("请输入该学生姓名:\n");
scanf("%s",p->name);
printf("请输入该学生年龄:\n");
scanf("%d",&p->age);
getchar();
printf("请输入该学生性别:\n");
scanf("%c",&p->sex);
printf("请输入该学生出生年月:\n");
scanf("%d%d",&p->y,&p->m);
printf("请输入该学生住址:\n");
scanf("%s",p->add);
printf("请输入该学生联系电话:\n");
scanf("%d",&p->tel);
printf("请输入该学生E-Mail:\n");
scanf("%s",p->mail);
count++;
p++;
system("cls");
printf("请输入第%d个学生学号(输入0结束):\n",count);
scanf("%d",&p->num);
}
return count;
}
int Input_file(SDate stu1) //信息从文件输入模块
{
int rin=0;
SDate p;
FILE fp;
p=stu1;
if((fp=fopen("StuInfotxt","r"))==NULL)
printf("该文件不存在!\n");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %d %d %d %s %s\n",&p->num,p->name,&p->sex,&p->age,&p->y,&p->m,&p->tel,p->add,p->mail);
p++;
rin++;
}
fclose(fp);
printf("文件读取成功!\n");
return rin;
}
void Info_print(SDate stu,int n) //信息输出至屏幕模块
{
SDate p;
if(n==0) //学号,姓名,年龄,性别,出生年月,地址,电话,
printf("没有录入信息!\n");
else
{
printf("\n以下是%d个同学的信息\n",n);
printf("学号 姓名 性别 年龄 出生年月 电话 地址 E-Mail\n");
for(p=stu; p<stu+n; p++)
printf("%d %s %c %d %d-%d %d %s %s\n",p->num,p->name,p->sex,p->age,p->y,p->m,p->tel,p->add,p->mail);
}
}
void Print_file(SDate stu,int n) //信息保存至文件模块
{
FILE fp;
SDate p;
p=stu;
if((fp=fopen("StuInfotxt","a"))==NULL)
printf("文件读取失败!\n");
else
{
for(; p<stu+n; p++)
fprintf(fp,"%d %s %c %d %d %d %d %s %s\n",p->num,p->name,p->sex,p->age,p->y,p->m,p->tel,p->add,p->mail);
fclose(fp);
printf("\n保存成功!\n");
}
}
void Info_Paixu(SDate stu,int n) //学号排序模块
{
int i,j;
SDate p;
for(i=0; i<n-1; i++)
{
for(j=0; j<n-1-i; j++)
{
if((stu[j]num)>(stu[j+1]num))
{
p=stu[j];
stu[j]=stu[j+1];
stu[j+1]=p;
}
}
}
printf("排序完成!\n");
}
void Exit() //退出模块
{
printf("谢谢使用!\n");
exit(1);
}
void Info_Seach(SDate stu,int n) //查询模块,目前仅支持学号或姓名的精准查询
{
int num,choice;
char name[10];
int flag=-1,i;
system("cls");
printf("请输入查询方式:\t1、学号查询\n\t \t2、名字查询\n");
printf("您的选择是");
scanf("%d",&choice);
if(choice==1)
{
lab1:
printf("请输入需要查找的学号:\n");
scanf("%d",&num);
for(i=0; i<n; i++)
{
if(num==stu[i]num)
{
flag=i;
printf("%d %s %c %d %d-%d %d %s %s\n",stu[i]num,stu[i]name,stu[i]sex,stu[i]age,stu[i]y,stu[i]m,stu[i]tel,stu[i]add,stu[i]mail);
}
}
if(flag==-1)
{
printf("未找到!请重新选择\n");
printf("1、返回继续查询\n2、退出查询,返回主菜单\n3、退出程序你的选择是?");
scanf("%d",&choice);
if(choice==1)
{
system("cls");
goto lab1;
}
if(choice==2)
goto end;
else
Exit();
}
}
else if(choice==2)
{
lab2:
printf("请输入需要查找的姓名:\n");
scanf("%s",name);
for(i=0; i<n; i++)
if(strcmp(name,stu[i]name)==0)
{
flag=i;
printf("%d %s %c %d %d-%d %d %s %s\n",stu[i]num,stu[i]name,stu[i]sex,stu[i]age,stu[i]y,stu[i]m,stu[i]tel,stu[i]add,stu[i]mail);
}
if(flag==-1)
{
printf("您的输入有误!请重新选择\n");
printf("\t\t1、返回继续查询\n\t\t2、退出查询,返回主菜单\n\t\t3、退出程序\t\t\n你的选择是?");
scanf("%d",&choice);
if(choice==1)
{
system("cls");
goto lab2;
}
if(choice==2)
goto end;
else
Exit();
}
}
end:
;
}
void Info_Change(SDate stu,int n,int Num) //信息修改模块
{
int i;
for(i=0; i<n; i++)
if(stu[i]num==Num)
{
printf("请输入该学生姓名:\n");
scanf("%s",stu[i]name);
printf("请输入该学生年龄:\n");
scanf("%d",&stu[i]age);
getchar();
printf("请输入该学生性别:\n");
scanf("%c",&stu[i]sex);
printf("请输入该学生出生年月:\n");
scanf("%d%d",&stu[i]y,&stu[i]m);
printf("请输入该学生住址:\n");
scanf("%s",stu[i]add);
printf("请输入该学生联系电话:\n");
scanf("%d",&stu[i]tel);
printf("请输入该学生E-Mail:\n");
scanf("%s",stu[i]mail);
printf("学号为%d的同学信息修改完成!\n",Num);
}
}
int Info_Del(SDate stu, int n, int del) //信息删除模块
{
int i,j;
for(i=0; i<n; i++)
if(stu[i]num==del)
for(j=i; j<n-1; j++)
stu[j]=stu[j+1];
n--;
printf("删除成功!\n");
return n;
}
int Info_Add(SDate stu,int count) //信息添加模块
{
SDate p;
system("cls");
printf("当前共有%d个数据\n",count+1);
p=stu+(count);
printf("请输入第%d个学生学号(输入0结束):\n",count+1);
scanf("%d",&p->num);
while(p->num!=0)
{
printf("请输入该学生姓名:\n");
scanf("%s",p->name);
printf("请输入该学生年龄:\n");
scanf("%d",&p->age);
getchar();
printf("请输入该学生性别:\n");
scanf("%c",&p->sex);
printf("请输入该学生出生年月:\n");
scanf("%d%d",&p->y,&p->m);
printf("请输入该学生住址:\n");
scanf("%s",p->add);
printf("请输入该学生联系电话:\n");
scanf("%d",&p->tel);
printf("请输入该学生E-Mail:\n");
scanf("%s",p->mail);
count++;
p++;
system("cls");
printf("请输入第%d个学生学号(输入0结束):\n",count+1);
scanf("%d",&p->num);
}
return count;
}
#include<stdioh>
#include<stringh>
#include<stdlibh>
#include<conioh>
#define header1 "|---------------------电话簿-----------------------|\n"
#define header2 "| num | name | phonenum | address |\n"
#define header3 "|-------|----------|---------------|---------------|\n"
#define end "|----------------------结束------------------------|"
#define N 100
typedef struct tele
{
int num;
char name[10];
char phonenum[15];
char address[20];
}
telebook;
void menu()
{
system("cls");
system("color 1F");
printf("\n\n\n"); /输出主菜单/
printf("\t\t| 欢迎进入电话薄管理系统! |\n");
printf("\t\t|menu|\n");
printf("\t\t| |\n");
printf("\t\t| 1 增加 2 读取 |\n");
printf("\t\t| |\n");
printf("\t\t| 3 查找 4 修改 |\n");
printf("\t\t| |\n");
printf("\t\t| 5 删除 6 排序 |\n");
printf("\t\t| |\n");
printf("\t\t| 0 退出 |\n");
printf("\t\t||\n");
}
void printheader() /输出菜单头/
{
printf(header1);
printf(header2);
printf(header3);
}
int add(telebook temp[])
{
int i;int m=0;
FILE fp;
system("cls");
if((fp=fopen("D:\\rextxt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("每次输入一百个人的信息!\n");
printf("如果输入0推出输入!\n");
for(i=m;i<(100+m);i++)
{
printf("num:");
scanf("%d",&temp[i]num);
if(temp[i]num==0)
break;
printf("name:");
scanf("%s",&temp[i]name);
printf("phonenum:");
scanf("%s",&temp[i]phonenum);
printf("address:");
scanf("%s",&temp[i]address);
fwrite(&temp[i],sizeof(struct tele),1,fp);
}
m+=100;
fclose(fp);
system("cls");
return 0;
}
int read(telebook temp[])
{
int count,i;
FILE fp;
system("cls");
if((fp=fopen("D:\\rextxt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printheader();
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/读取文件内信息的个数。/
if(count==0)
printf("\n\n\n\t\t文件内没有信息!\n\n\n");
for(i=0;i<count;i++) /读取文件内的信息/
printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i]num,temp[i]name,temp[i]phonenum,temp[i]address);
printf(end);
fclose(fp);
return 0;
}
int find1(telebook temp[]) /电话号码查询/
{
int i,count,t=0 ;char n[20];
FILE fp;
system("cls");
read(temp);
printf("\n");
if((fp=fopen("D:\\rextxt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入要查找的号码:");
scanf("%s",n);
printf("\n\n");
printheader();
getchar();
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/读取文件内信息的个数。/
for(i=0;i<count;i++)
{
if(strcmp(temp[i]phonenum,n)==0)
{
t=1;
printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i]num,temp[i]name,temp[i]phonenum,temp[i]address);
/输出查询到的信息/
}
}
if(t==0)
{
printf("\a\n\n\t\t没有要查找的信息!\n\n\n");
printf(end);
return 0;
}
printf(end);
fclose(fp);
return 0;
}
int find2(telebook temp[]) /姓名查询/
{
int i,count ,t=0;
char a[20];
FILE fp;
system("cls");
read(temp);
printf("\n");
if((fp=fopen("D:\\rextxt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入要查找的名字:");
scanf("%s",a);
getchar();
printf("\n\n");
printheader();
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/读取文件内信息的个数。/
for(i=0;i<count;i++)
{
if(strcmp(temp[i]name,a)==0)
{
t=1;
printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i]num,temp[i]name,temp[i]phonenum,temp[i]address);
/输出查询到的信息/
}
}
if(t==0)
{
printf("\a\n\n\t\t没有要查找的信息!\n\n\n");
printf(end);
return 0;
}
printf(end);
fclose(fp);
return 0;
}
void find()
{
int n;
telebook message1[20];
system("cls");
system("color 4F");
printf("\n");
while(1)
{ /输出查找函数主菜单/
printf("\n\n\n\n");
printf(" |-------查找功能------|\n");
printf(" | |\n");
printf(" | 1 按电话号码查找 |\n");
printf(" | |\n");
printf(" | 2 按姓名查找 |\n");
printf(" | |\n");
printf(" | 0 退出 |\n");
printf(" | |\n");
printf(" |---------结束--------|\n");
printf("输入您的查找方式:");
scanf("%d",&n);
switch(n)
{
case 1:find1(message1);break;
case 2:find2(message1);break;
case 0:return;break;
}
getchar();
system("cls");
}
}
int change(telebook temp[])
{
int i,count,t=0;
FILE fp;
struct tele ne[10];
system("cls");
read(temp);
printf("\n");
printf("按序号修改\n");
if((fp=fopen("D:\\rextxt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入新内容:\n");
printf("num:");
scanf("%d",&ne[0]num);
printf("name:");
scanf("%s",&ne[0]name);
printf("phonenum:");
scanf("%s",&ne[0]phonenum);
printf("address:");
scanf("%s",&ne[0]address);
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/读取文件内信息的个数。/
fclose(fp);
for(i=0;i<count;i++) /查找与新信息相同的信息/
{
if(temp[i]num==ne[0]num) /用新信息替换/
{
t=1;
temp[i]num=ne[0]num;
strcpy(temp[i]name,ne[0]name);
strcpy(temp[i]phonenum,ne[0]phonenum);
strcpy(temp[i]address,ne[0]address);
getchar();
printf("\n\n\t\t\t修改成功!");
}
}
if(t==0)
{
getchar();
printf("\n\n\t\t\t没有要修改的信息!");
return 0;
}
fp=fopen("D:\\rextxt","wb+");
for(i=0;i<count;i++)
fwrite(&temp[i],sizeof(struct tele),1,fp);
fclose(fp);
return 0;
}
int del(telebook temp[])
{
int i,j,count,t=0;char name1[20];
FILE fp;
system("cls");
read(temp);
printf("\n");
if((fp=fopen("D:\\rextxt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入要删除的人名:");
scanf("%s",name1);
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/读取文件内信息的个数。/
fclose(fp);
for(i=0;i<count;i++) /查找要删除的信息/
{
if(strcmp(temp[i]name,name1)==0)
{
for(j=i;j<count;j++)
{ /删除找到的信息/
t=1;
temp[j]num=temp[j+1]num;
strcpy(temp[j]name,temp[j+1]name);
strcpy(temp[j]phonenum,temp[j+1]phonenum);
strcpy(temp[j]address,temp[j+1]address);
}
count--;
printf("\n\n\n\t\t\t删除成功!");
}
}
if(t==0)
{
getchar();
printf("\a\n\n\n\t\t\t没有要删除的信息!");
return 0;
}
getchar();
fp=fopen("D:\\rextxt","wb+");
for(i=0;i<count;i++)
fwrite(&temp[i],sizeof(struct tele),1,fp);
fclose(fp);
return 0;
}
int paixu(telebook temp[])
{
int i,j,count;
telebook tmp;
FILE fp;
system("cls");
read(temp);
printf("\n");
fp=fopen("D:\\rextxt","ab+");
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/读取文件内信息的个数。/
fclose(fp);
for(i=0;i<count-1;i++) /对文件内的信息的序号进行排序/
{
for(j=count-2;j>=i;j--)
if(temp[j+1]num<temp[j]num)
{
tmp=temp[j+1];
temp[j+1]=temp[j];
temp[j]=tmp;
}
}
fp=fopen("D:\\rextxt","wb+");
for(i=0;i<count;i++)
fwrite(&temp[i],sizeof(struct tele),1,fp);
fclose(fp);
read(temp);
return 0;
}
void main()
{
telebook message[N];
int n;
while(1)
{
menu();
printf("输入您的选择:");
scanf("%d",&n);
getchar();
switch(n)
{
case 1:add(message);break;
case 2:read(message);break;
case 3:find();break;
case 4:change(message);break;
case 5:del(message);break;
case 6:paixu(message);break;
case 0:exit(0);break;
}
getchar();
}
printf("press enter continue");
}
给你一个看看
#include<stdioh>
#include <timeh>
#include<conioh> /清屏/
#include <stdlibh> /显示目录/
#include<stringh>
#define MAX 80
void input(); /输入数据函数/
void sort();/排序数据函数/
void sort1();
void sort2();
void sort3();
void display();/显示数据函数/
void display1();
void insert(); /插入数据函数/
void del(); /删除数据函数/
void average(); /平均值函数/
void find();/查找数据函数/
void find1();
void find2();
void save(); /保存数据函数/
void read(); /读出数据函数/
void del_file(); /删除文件函数/
void modify(); /修改文件函数/
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],p;
main()/主函数/
{
int as;
char ch;
do{
start: printf("\n\n\n\t\t\t欢迎使用学生成绩管理系统\n");
printf("\n\n\n\n\n\n\t\t按任意键继续");
ch=getch();
}
while(!ch);
system("cls");
/一下为功能选择模块/
do
{
printf("\n\t\t\t\t1录入学员信息\n\t\t\t\t2显示学员总成绩信息\n\t\t\t\t3对总成绩排序\n\t\t\t\t4显示学员单科成绩排序\n\t\t\t\t5添加学员信息\n\t\t\t\t6删除学员信息\n\t\t\t\t7修改学员信息\n\t\t\t\t8查询学员信息\n\t\t\t\t9从文件读入学员信息\n\t\t\t\t10删除文件中学员信息\n\t\t\t\t11保存学员信息\n\t\t\t\t12退出\n");
printf("\t\t\t\t选择功能选项(输入所选功能前的数字):");
fflush(stdin);
/可用可不用,用于清除缓存防止下次用scanf输入是出现错误/
scanf("%d",&as);
switch(as)
{
case 1:system("cls");
input();
break;
case 2:system("cls");
display();
break;
case 3:system("cls");
sort();
break;
case 4:system("cls");
display1();
break;
case 5:system("cls");
insert();
break;
case 6:system("cls");
del();
break;
case 7:system("cls");
modify();
break;
case 8:system("cls");
find();
break;
case 9:system("cls");
read();
break;
case 10:system("cls");
del_file();
break;
case 11:system("cls");
save();
break;
case 12:system("exit");
exit(0);
default:system("cls");
goto start;
}
}while(1);/while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break 或者return 跳出循环/
/至此功能选择结束/
}
void input()/原始数据录入模块/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%d",&stu[i]no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i]name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i]sex);
printf("\n输入学员成绩1:");
scanf("%f",&stu[i]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i]score3);
printf("\n\n");
i++;
now_no=i;
printf("是否继续输入(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/排序数据函数/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]ave<stu[j]ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
printf("排序以完成进入功能2可进行显示\n");
system("pause");
system("cls");
}
void sort1()/排序数据函数/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]score1<stu[j]score1)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort2()/排序数据函数/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]score2<stu[j]score2)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort3()/排序数据函数/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]score3<stu[j]score3)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/显示数据函数/
{
int i;
char as;
average();
do
{
printf("\t\t\t班级学员信息列表\n");
printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void display1()/显示数据函数/
{
int i;
char as;
do
{
printf("\t\t\t班级学员score1成绩排序\n");
printf("\t编号\t姓名\t性别\t成绩1\n");
sort1();
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1);
printf("\t\t\t班级学员score2成绩排序\n");
printf("\t编号\t姓名\t性别\t成绩2\n");
sort2();
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score2);
printf("\t\t\t班级学员score3成绩排序\n");
printf("\t编号\t姓名\t性别\t成绩3\n");
sort3();
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score3);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/插入数据函数/
{
char ch;
do
{
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
scanf("%d",&stu[now_no]no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[now_no]name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[now_no]sex);
printf("\n输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[now_no]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[now_no]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[now_no]score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否继续输入(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/删除数据函数/
{
int inum,i;
printf("输入要删除学员的编号:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i]no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/保存数据函数/
{
FILE fp;
int i;
char filepath[20];
printf("输入要保存的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i]sum=stu[i]score1+stu[i]score2+stu[i]score3;
stu[i]ave=stu[i]sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
}
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/查询函数/
{
int i;
char str[20],as;
do
{
printf("输入要查询的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i]name,str))
{
printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");
printf("\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
}
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void average()/求平均数/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i]sum=stu[i]score1+stu[i]score2+stu[i]score3;
stu[i]ave=stu[i]sum/3;
}
}
void modify()/修改数据函数/
{
int i;
char str[20];
printf("输入要修改的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
{
if(!strcmp(stu[i]name,str))
{
system("cls");
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
fflush(stdin);
scanf("%d",&stu[i]no);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i]sex);
printf("\n输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[i]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i]score3);
printf("\n\n");
sort();
break;
}
}
system("cls");
}
void read()
{
FILE fp;
int i;
char filepath[20];
printf("输入要读入的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i]no,stu[i]name,stu[i]sex,&stu[i]score1,&stu[i]score2,&stu[i]score3,&stu[i]ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已经读入!\n",filepath);
system("pause"); /按任意键继续/
system("cls");
}
void del_file()
{
FILE fp;
char filepath[20];
printf("输入要删除的文件路径:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已经删除!\n",filepath);
system("pause");
system("cls");
}
概述
单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。
运行结果如下:
输入数据:
根据总成绩排序:
根据学号删除学生信息:
贴上代码(有点多)
#include <stdioh>
#include <stdlibh> //exit函数头文件
#include <stringh> //字符串相关操作头文件
#define MAX_STUDENT 30 //最大学生数
//函数声明,本程序共10个子函数,每个函数对应一个操作
void student_scanf(int n);
void student_printf(int n);
int student_find_name(int n);
int student_find_num(int n);
void student_sort_num(int n);
void student_sort_sum(int n);
int student_alter_num(int n);
int student_alter_name(int n);
int student_delete_num(int n);
int student_delete_name(int n);
//全局数组变量,用于存储学生信息
char names[MAX_STUDENT][50];
int math[MAX_STUDENT];
int english[MAX_STUDENT];
int computer[MAX_STUDENT];
int sum[MAX_STUDENT];
int num[MAX_STUDENT];
//以下变量用于学生信息数组排序,作为临时数组
int temp_num[MAX_STUDENT];
char temp_names[MAX_STUDENT][50];
int temp_math[MAX_STUDENT];
int temp_english[MAX_STUDENT];
int temp_computer[MAX_STUDENT];
int temp_sum[MAX_STUDENT];
//sort数组存储排好序的学号或姓名下标
int sort[MAX_STUDENT];
//循环全局变量
int i, j;
//main主函数
int main(void)
{
int choice,n;
while (1)
{
printf("\n");
printf("欢迎使用学生成绩管理系统\n");
printf("[1] 输入所有学生信息\n");
printf("[2] 输出所有学生成绩\n");
printf("[3] 按学号查找某个学生信息\n");
printf("[4] 按姓名查找某个学生信息\n");
printf("[5] 按学号对学生排序\n");
printf("[6] 按总成绩对学生排序\n");
printf("[7] 按学号修改某个学生信息\n");
printf("[8] 按姓名修改某个学生信息\n");
printf("[9] 按学号删除某个学生信息\n");
printf("[10] 按姓名删除某个学生信息\n");
printf("[0] 退出程序\n");
printf("请输入您的选择(0 - 9):");
scanf("%d",&choice);
printf(")\n");
switch (choice)
{
case 1://录入;
printf("请输入录入的学生信息数: ");
scanf("%d",&n);
student_scanf(n);
break;
case 2://输出;
student_printf(n);
break;
case 3://根据学号查找
student_find_num(n);
break;
case 4://根据姓名查找
student_find_name(n);
break;
case 5://按学号排序
student_sort_num(n);
break;
case 6://按姓名排序
student_sort_sum(n);
break;
case 7://按学号修改
student_alter_num(n);
break;
case 8://按姓名修改
student_alter_name(n);
break;
case 9://按学号删除
student_delete_num(n);
n--;
break;
case 10://按姓名删除
student_delete_name(n);
n--;
break;
case 0://退出程序
printf("退出程序\n");
printf("程序结束,谢谢使用!\n");
exit(0);
default:
printf("您输入的菜单有误。请重新输入!\n");
}
}
return 0;
}
//1输入信息
void student_scanf(int n)
{
for (i = 0; i<n; ++i)
{
printf("\n请输入第%d个学生的信息:\n", i + 1);
printf("\n学号:");
scanf("%d", &num[i]);
printf("\n姓名:");
scanf("%s", names[i]);
printf("\n数学成绩:");
scanf("%d", &math[i]);
printf("\n英语成绩:");
scanf("%d", &english[i]);
printf("\n计算机成绩:");
scanf("%d", &computer[i]);
//计算总成绩
sum[i] = math[i] + english[i] + computer[i];
}
}
//2打印信息
void student_printf(int n)
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
printf("----------------------------------------------------------\n");
for (i = 0; i<n; ++i)
{
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], computer[i], sum[i]);
}
printf("-------------------------------------------------------\n");
}
//3按学号查找
int student_find_num(int n)
{
int nums;
int result;
printf("请输入待查找的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else
{
//先打印表头
printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
//再打印数据
printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("打印出查找结果!\n");
}
return 1;
}
//4用姓名查找成绩
int student_find_name(int n)
{
char name[200];
int result;
printf("请输入待查找的学生姓名:");
scanf("%s", name);
result = -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name, names[i]) == 0)
{
result = i;
break;
}
}
if (result == -1)
{//未找到结果
printf("没有该学生信息!\n");
return 0;
}
else//找到结果
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("已完成查找!\n");
}
return 1;
}
//5按学号排序
void student_sort_num(int n)
{
int min,max;
for(i=0; i<n; ++i) //复制临时数组
{
temp_num[i] = num[i];
}
max = 0; //查找学号最大值,将其下标存至sort数组的最后一个值中
for(j=1; j<n; j++)
{
if(temp_num[max]<temp_num[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; i<n-1; ++i)
{
min = i; //查找学号最小值
for(j=0; j<n; ++j)
{
if(temp_num[min]>temp_num[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_num[min] = temp_num[max]; //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰
}
for(i=0; i<n; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!\n");
return ;
}
//6按总成绩排序
void student_sort_sum(int n)
{
int min,max;
for(i=0; i<n; ++i) //复制临时数组
{
temp_sum[i] = sum[i];
}
max = 0; //查找总成绩最大值,将其下标存至sort数组的最后一个值中
for(j=1; j<n; j++)
{
if(temp_sum[max]<temp_sum[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; i<n-1; ++i)
{
min = i; //查找总成绩最小值
for(j=0; j<n; ++j)
{
if(temp_sum[min]>temp_sum[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_sum[min] = temp_sum[max]; //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰
}
for(i=0; i<n; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!\n");
return ;
}
//7按学号修改学生信息
int student_alter_num(int n)
{
int nums;
int result;
printf("请输入待修改的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",&num[result]);
printf("姓名:\n");
scanf("%s",names[result]);
printf("数学成绩:\n");
scanf("%d",&math[result]);
printf("英语成绩:\n");
scanf("%d",&english[result]);
printf("计算机成绩:\n");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//8按姓名修改学生信息
int student_alter_name(int n)
{
char name[50];
int result;
printf("请输入待修改的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",&num[result]);
printf("姓名:\n");
scanf("%s",names[result]);
printf("数学成绩:\n");
scanf("%d",&math[result]);
printf("英语成绩:\n");
scanf("%d",&english[result]);
printf("计算机成绩:\n");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//9按学号删除学生信息
int student_delete_num(int n)
{
int nums;
int result;
printf("请输入待删除的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
//10按姓名删除学生信息
int student_delete_name(int n)
{
char name[50];
int result;
printf("请输入待删除的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
C语言编写程序:同学通信录管理系统
本文2023-09-22 15:47:35发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/73857.html