C语言编写程序:同学通信录管理系统

栏目:资讯发布:2023-09-22浏览:3收藏

C语言编写程序:同学通信录管理系统,第1张

望采纳

#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语言编写程序:同学通信录管理系统

望采纳 #include<stdioh> #include<stdlibh>#include<stringh> typedef struct { char score; ...
点击下载
热门文章
    确认删除?
    回到顶部