c语言searchhead1

求一个300行左右的简单的c语言程序

#include大源stdio.h

#includemalloc.h

#includestring.h

#define LEN sizeof(struct record) /*对结构体长度进行宏定义*/

void menu();/*声明菜单函数*/

struct record*insert(struct record *head);/*声明添加函数 */

struct record*delet(struct record *head); /*声明删除函数 */

struct record*alter(struct record *head); /*声明修改函数 */

void search(struct record *head); /*声明查找函数*/

void show(struct record *head); /*声明显示函数*/

struct record *head; /*定义全局结构体指针变量*/

int n=0; /*定义全局变量*/

struct record /*声明结构体*/

{

char number[10];

char name[20];

char phone[20];

char adress[40];

char postcode[10];

char e_mail[30];

struct record *next;

};

/******************************************************************************

* *

* 主函数 *

* *

*******************************************************************************/孝正

main()

{

head=NULL;

menu();

rewind(stdin);

}

/******************************************************************************

* *

* 菜单函数 *

* *

*******************************************************************************/

void menu()

{

int choice;

printf(“\n\t\t******************** 主菜单 ********************”);

printf(“\n\t\t*********** 1-添加纪录 2-查询纪录 ************”);

printf(“巧仿悔\n\t\t*********** 3-删除纪录 4-修改记录 ************”);

printf(“\n\t\t*********** 5-显示纪录 6-退出系统 ************”);

printf(“\n\t\t************************************************”);

printf(“\n\t\t请选择:”);

scanf(“%d”,choice); rewind(stdin);

printf(“\n”);

switch (choice)

{

case 1:

head=insert(head);

rewind(stdin);

menu();

break;

case 2:

search(head);rewind(stdin);

menu();

break;

case 3:

head=delet(head);

rewind(stdin);

menu();

break;

case 4:

head=alter(head);

rewind(stdin);

menu();

break;

case 5:

show(head);

rewind(stdin);

menu();

break;

default:

printf(“\n\t\t谢谢使用!!”);

break;

}

}

/******************************************************************************

* *

* 添加函数 *

* *

*******************************************************************************/

struct record *insert(struct record *head)

{

struct record *pp,*p1,*p2;

pp=(struct record *)malloc(LEN);

printf(“\n\t\t**************** 请输入用户信息 ****************\n”);

printf(“\n\t\t输入序号:”);

scanf(“%s”,pp-number); rewind(stdin);

printf(“\n\t\t输入姓名:”);

scanf(“%s”,pp-name);rewind(stdin);

printf(“\n\t\t输入电话号码:”);

scanf(“%s”,pp-phone); rewind(stdin);

printf(“\n\t\t输入地址:”);

scanf(“%s”,pp-adress); rewind(stdin);

printf(“\n\t\t输入邮编:”);

scanf(“%s”,pp-postcode); rewind(stdin);

printf(“\n\t\t输入e-mail:”);

scanf(“%s”,pp-e_mail); rewind(stdin);

if(head==NULL)/*在表头插入1*/

{

head=pp;

pp-next=NULL;

}

else

{

p1=head;

while((strcmp(pp-number,p1-number)0)(p1-next!=NULL))

{

p2=p1;

p1=p1-next;

}

if(strcmp(pp-number,p1-number)=0)

{

if(head==p1)

head=pp; /*在表头插入2*/

else

p2-next=pp;/*在表中插入*/

pp-next=p1;

}

else /*在表尾插入*/

{

p1-next=pp;

pp-next=NULL;

}

}

printf(“\t添加成功!请继续选择功能键!\n\n”);

n=n+1;

return(head);

}

/******************************************************************************

* *

* 删除函数 *

* *

*******************************************************************************/

struct record*delet(struct record * head)

{

struct record *p1,*p2;

char number[10];

printf(“\t请输入要删除用户的序号number:”);

scanf(“%s”,number);rewind(stdin);

if(head==NULL)

{

printf(“\n\t通讯录无用户信息记录!!\n”);

return(head);

}

p1=head;

while(strcmp(number,p1-number)!=0p1-next!=NULL)

{

p2=p1;

p1=p1-next;

}

if(strcmp(number,p1-number)==0)

{

if(p1==head)

{

head=p1-next;

printf(“\t删除成功!请继续选择功能键!\n\n”);

}

else

{

p2=p1-next;

printf(“\t已删 除的用户的序号为:%s\n”,number);

printf(“\t删除成功!请继续选择功能键!\n\n”);

}

n=n-1;

}

else printf(“\t通讯录无该用户的信息记录!\n “);

return(head);

}

/******************************************************************************

* *

* 查询函数 *

* *

*******************************************************************************/

void search(struct record *head)

{

int a;

char f_name[20],f_number[10];

struct record *p1,*p2;

if(head==NULL)

{

printf(“\t通讯录无用户信息记录\n”);

return;

}

else

{

printf(“\t请你选择你查找的方式:\n\n\t\t1:序号\n\t\t2:姓名\n”);

printf(“\t\t请选择:”);

scanf(“%d”,a);rewind(stdin);

switch(a)

{case 1:

printf(“\n\t请输入要查找用户的序号number:”);

scanf(“%s”,f_number);rewind(stdin);

p1=head;

while(strcmp(p1-number,f_number)!=0)

{

if(p1-next==NULL)

{

printf(“\n\t通讯录无此用户信息记录\n”);

return;

}

else

{

p2=p1-next;

p1=p2;

}

}

printf(“\n\t要查找用户的基本信息为:\n”);

printf(“\t\t序号: %s\n\t\t姓名:%s\n\t\t电话号码:%s”,p1-number,p1-name,p1-phone);

printf(“\n\t\t地址:%s\n\t\t邮编:%s\n\t\te_mail:%s\n”,p1-adress,p1-postcode,p1-e_mail);

break;

case 2:

printf(“\n\t请输入要查找用户的姓名name:”);

scanf(“%s”,f_name);rewind(stdin);

p1=head;

while(strcmp(p1-name,f_name)!=0)

{

if(p1-next==NULL)

{

printf(“\n\t通讯录无此用户信息记录\n”);

return;

}

else

{

p2=p1-next;

p1=p2;

}

}

printf(“\n\t要查找用户的基本信息为:\n”);

printf(“\t\t序号: %s\n\t\t姓名:%s\n\t\t电话号码:%s”,p1-number,p1-name,p1-phone);

printf(“\n\t\t地址:%s\n\t\t邮编:%s\n\t\te_mail:%s”,p1-adress,p1-postcode,p1-e_mail);

break;

}

}

}

/******************************************************************************

* *

* 显示函数 *

* *

*******************************************************************************/

void show(struct record *head)

{

int i;

struct record *p1,*p2;

p1=head;

if(head==NULL)

{

printf(“\t通讯录无用户信息记录\n”);

return;

}

else

{

for(i=1;i=n;i++)

{

printf(“\n\t第%d个用户的基本信息为:”,i);

printf(“\n\t\t序号: %s 姓名:%s 电话号码:%s \n\t\t地址:%s 邮编:%s e_mail:%s\n”

,p1-number,p1-name,p1-phone,p1-adress,p1-postcode,p1-e_mail);

p2=p1-next;

p1=p2;

}

}

}

/******************************************************************************

* *

* 修改函数 *

* *

*******************************************************************************/

struct record*alter(struct record*head)

{

struct record *p1,*p2;

int choice1;

char alter_number[10],alter_name[20],alter_phone[20],alter_adress[40],alter_postcode[10],alter_e_mail[30],choice2;

p1=head;

if(head==NULL)

{

printf(“通讯录无用户信息记录\n”);

return(head);

}

printf(“\t请输入要修改的用户的序号number:”);

scanf(“%s”,alter_number);

rewind(stdin);

while(strcmp(p1-number,alter_number)!=0)

{

if(p1-next==NULL)

{

printf(“\n\t通讯录无此用户信息记录\n”);

return(head);

}

else

{

p2=p1;

p1=p1-next;

}

}

if(strcmp(p1-number,alter_number)!=0)

{

printf(“通讯录无用户信息记录\n”);

return(head);

}

else

{

printf(“\t要修改的用户的基本信息为:\n\t”);

printf(“\t序号: %s 姓名:%s 电话号码:%s 地址:%s 邮编:%s e_mail:%s\n”

,p1-number,p1-name,p1-phone,p1-adress,p1-postcode,p1-e_mail);

}

while(1)

{

printf(“\t你是否要修改的用户的基本信息?(yn)”);

scanf(“%c”,choice2);

rewind(stdin);

if(choice2==’y’)

{

printf(“\t请选择你要修改的项目:\n\t”);

printf(“1:姓名 2:电话号码 3:地址 4:邮编 5:e_mail\n”);

printf(“\t你选择的序号为: “);

scanf(“%d”,choice1);

rewind(stdin);

switch(choice1)

{case 1:printf(“\t请输入更改后的姓名”);

scanf(“%s”,alter_name);rewind(stdin);

strcpy(p1-name,alter_name);

continue;

case 2:printf(“\t请输入更改后的电话号码”);

scanf(“%s”,alter_phone);rewind(stdin);

strcpy(p1-phone,alter_phone);

continue;

case 3:printf(“\t请输入更改后的地址”);

scanf(“%s”,alter_adress);rewind(stdin);

strcpy(p1-adress,alter_adress);

continue;

case 4:printf(“\t请输入更改后的邮编”);

scanf(“%s”,alter_postcode);rewind(stdin);strcpy(p1-postcode,alter_postcode);

continue;

case 5:printf(“\t请输入更改后的e_mail”);

scanf(“%s”,alter_e_mail);rewind(stdin);

strcpy(p1-e_mail,alter_e_mail);

continue;

}

printf(“\n\t修改后用户的基本信息为:\n\t”);

printf(“\t序号: %s 姓名:%s 电话号码:%s 地址:%s 邮编:%s e_mail\n”

,p1-number,p1-name,p1-phone,p1-adress,p1-postcode,p1-e_mail);

}

else

{

printf(“\n\t修改成功!!\n”);

break;

}

}

return(head);

}

c语言searchhead1

c语言;用指针实现班级或成绩的管理—统计及格和不及格人数

#include”stdio.h”

#include”stdlib.h”

#include”string.h”

#define N 3

typedef struct z1

{

char no[11];

char name[15];

int score[N];

float sum;

float average;

int order;

struct z1 *next;

}STUDENT;

STUDENT *init();

STUDENT *create();

STUDENT *del(STUDENT *h);

void print(STUDENT *h);

void search1(STUDENT *h);

void search2(STUDENT *h);

STUDENT *insert(STUDENT *h);

void sort(STUDENT *h);

void save(STUDENT *h);

void tongji(STUDENT *h);

int menu_select();

STUDENT *load();

void inputs(char *prompt,char *s,int count);

STUDENT *load();

main()

{

int i;

STUDENT *head;

head=init();

for(;;)

{

switch(menu_select())

{

case 0:head=init();break;

case 1:head=create();break;

case 2:head=insert(head);break;

case 3:save(head);break;

case 4:print(head);break;

case 5:search1(head);break;

case 6:head=del(head);break;

case 7:sort(head);break;

case 8:tongji(head);break;

case 9:search2(head);break;

case 10:exit(0);

}

}

}

int menu_select()

{

char *menu[]={“************菜单************”,

“0. 初始化链表”,

“1. 输入学生成绩”,

“2. 插入学生成绩”,

“3. 保存学前如生记录”,

“4. 显示学生记录”,

“5. 按学号查找学生信息”,

“6. 删除指定学号的学生信息”,

“7. 按某一门课对学生成绩排序”,

“8. 统计某门课程的学生成绩”,

“9. 按姓名查找学生信息”,

“10. 退出系统”};

char s[3];

int c,i;

for(i=0;i=11;i++)

printf(” %s\n”,menu[i]);

do

{

printf(“\n请选择0~10中的某一个选镇岁项\n”);

scanf(“%s”,s);

c=atoi(s);

}while(c0||c10);

return c;

}

STUDENT *init()

{

return NULL;

}

STUDENT *create()

{

int i;int s;

STUDENT *h=NULL,*info;

for(;;)

{

info=(STUDENT *)malloc(sizeof(STUDENT));

if(!info)

{

printf(“\n内存御悔睁不足”);

return NULL;

}

inputs(“输入学号:”,info-no,11);

if(info-no[0]==’@’)break;

inputs(“输入姓名:”,info-name,15);

printf(“开始输入%d门课的成绩\n”,N);

s=0;

for(i=0;iN;i++)

{

do{

printf(“第%d门分数:”,i+1);

scanf(“%d”,info-score[i]);

if(info-score[i]100||info-score[i]0)

printf(“输入成绩错误,请重新输入:\n”);

}while(info-score[i]100||info-score[i]0);

s=s+info-score[i];

}

info-sum=s;

info-average=(float)s/N;

info-order=0;

info-next=h;

h=info;

}

return h;

}

void inputs(char *prompt,char *s,int count)

{

char p[255];

do

{

printf(prompt);

scanf(“%s”,p);

if(strlen(p)count)

printf(“\n太长了!\n”);

}while(strlen(p)count);

strcpy(s,p);

}

void print(STUDENT *h)

{

int i=0;

STUDENT *p;

p=h;

printf(“\n\n\n***********************学生***********************\n”);

printf(“|序号|学号 | 姓名 | 语文 | 英语 |数学 | 总分 |平均分 |名次 |\n”);

printf(“|—|——-|——–|—-|—-|—-|——|——|—|\n”);

while(p!=NULL)

{

i++;

printf(“|%3d |%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n”,i,p-no,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);

p=p-next;

}

printf(“***********************end***********************\n”);

}

STUDENT *del(STUDENT *h)

{

STUDENT *p,*q;

char s[11];

printf(“请输入要删除的学生的学号\n”);

scanf(“%s”,s);

q=p=h;

while(strcmp(p-no,s)p!=NULL)

{

q=p;

p=p-next;

}

if(p==NULL)

printf(“\n链表中没有学号为%s的学生\n”,s);

else

{

printf(“\n\n\n***********************找到了***********************\n”);

printf(“|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n”);

printf(“|———-|———-|—-|—-|—-|——|——|—|\n”);

printf(“|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n”,p-no,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);

printf(“***********************end***********************\n”);

printf(“请按任意键删除\n”);

getchar();

if(p==h)

h=p-next;

else q-next=p-next;

free(p);

printf(“\n已经删除学号为%s的学生\n”,s);

printf(“不要忘了保存数据\n”);

}

return h;

}

void search1(STUDENT *h)

{

STUDENT *p;

char s[11];

printf(“请输入你要查找的同学的学号\n”);

scanf(“%s”,s);

p=h;

while(strcmp(p-no,s)p!=NULL)

p=p-next;

if(p==NULL)

printf(“‘n没有学号为%s的学生\n”,s);

else

{

printf(“\n\n\n***********************找到了***********************\n”);

printf(“|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n”);

printf(“|———-|———–|—-|—-|—-|——|——|—|\n”);

printf(“|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n”,p-no,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);

printf(“***********************end***********************\n”);

}

}

void search2(STUDENT *h)

{

STUDENT *p;

char s[11];

printf(“请输入你要查找的同学的姓名\n”);

scanf(“%s”,s);

p=h;

while(strcmp(p-name,s)p!=NULL)

p=p-next;

if(p==NULL)

printf(“\n没有姓名为%s的学生\n”,s);

else

{

printf(“\n\n\n***********************找到了***********************\n”);

printf(“|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n”);

printf(“|———-|———–|—-|—-|—-|——|——|—|\n”);

printf(“|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n”,p-no,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);

printf(“***********************end***********************\n”);

}

}

STUDENT *insert(STUDENT *h)

{

STUDENT *p,*q,*info;

char s[11];

int s1,i;

printf(“请输入插入点的学生学号\n”);

scanf(“%s”,s);

printf(“\n请输入新的学生信息\n”);

info=(STUDENT *)malloc(sizeof(STUDENT));

if(!info)

{

printf(“\n内存不足!”);

return NULL;

}

inputs(“输入学号:”,info-no,11);

inputs(“输入姓名:”,info-name,15);

printf(“请输入%d门课的分数\n”,N);

s1=0;

for(i=0;iN;i++)

{

do{

printf(“分数%d”,i+1);

scanf(“%d”,info-score[i]);

if(info-score[i]100||info-score[i]0)

printf(“输入数据有误,请重新输入\n”);

}while(info-score[i]100||info-score[i]0);

s1=s1+info-score[i];

}

info-sum=s1;

info-average=(float)s1/N;

info-order=0;

info-next=NULL;

p=h;

q=h;

while(strcmp(p-no,s)p!=NULL)

{q=p;p=p-next;}

if(p==NULL)

if(p==h)

h=info;

else q-next=info;

else

if(p==h)

{

info-next=p;

h=info;

}

else

{

info-next=p;

q-next=info;

}

printf(“\n已经插入了%s这个学生\n”,info-name);

printf(“—-不要忘了存盘啊–\n”);

return(h);

}

void save(STUDENT *h)

{

FILE *fp;

STUDENT *p;

char outfile[10];

printf(“请输入保存文件的文件名,例如 c:\\f1\\te.txt:\n”);

scanf(“%s”,outfile);

if((fp=fopen(outfile,”wb”))==NULL)

{

printf(“不能打开文件\n”);

exit(1);

}

printf(“\n正在保存……\n”);

p=h;

while(p!=NULL)

{

fwrite(p,sizeof(STUDENT),1,fp);

p=p-next;

}

fclose(fp);

printf(“——保存成功!!!——\n”);

}

STUDENT *load()

{

STUDENT *p,*q,*h=NULL;

FILE *fp;

char infile[10];

printf(“请输入要读取数据的文件名,例如c:\\f1\\te.txt:\n”);

scanf(“%s”,infile);

if((fp=fopen(infile,”wb”))==NULL)

{

printf(“不能打开文件\n”);

exit(1);

}

printf(“正在读取数据….\n”);

p=(STUDENT *)malloc(sizeof(STUDENT));

if(!p)

{

printf(“内存不足!\n”);

exit(1);

}

h=p;

while(!feof(fp))

{

if(1!=fread(p,sizeof(STUDENT),1,fp))

break;

p-next=(STUDENT *)malloc(sizeof(STUDENT));

if(!p-next)

{

printf(“内存不足!\n”);

return h;

}

q=p;

p=p-next;

}

q-next=NULL;

fclose(fp);

printf(“—你已经成功地从文件中读取了数据!!!—\n”);

return h;

}

void sort(STUDENT *h)

{

int i=0,j;

STUDENT *p,*q,*t,*h1;

printf(“请输入要按哪门课程的编号来排序:(0.语文 1.数学 2.英语)\n”);

scanf(“%d”,j);

h1=h-next;

h-next=NULL;

while(h1!=NULL)

{

t=h1;

h1=h1-next;

p=h;

q=h;

while(t-score[j]p-score[j]p!=NULL)

{

q=p;

p=p-next;

}

if(p==q)

{

t-next=p;

h=t;

}

else

{

t-next=p;

q-next=t;

}

}

p=h;

while(p!=NULL)

{

i++;

p-order=i;

p=p-next;

}

print(h);

printf(“排序成功!!!\n”);

}

void tongji(STUDENT *h)

{

STUDENT *p;

int a,b,i;

printf(“请输入课程编号\n”);

scanf(“%d”,i);

printf(“请输入分数段:\n”);

scanf(“%d,%d”,a,b);

p=h;

while(p!=NULL)

{

printf(“\n\n\n***********************找到了***********************\n”);

if(p-score[i]=ap-score[i]=b)

{

printf(“|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n”);

printf(“|——–|———|—-|—-|—-|——|——|—|\n”);

printf(“|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n”,p-no,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);

}

p=p-next;

}

printf(“***********************end***********************\n”);

}

c语言问题 (结构体的多重定义的访问)

由pastures一词词义的发展,我如戚们看肆掘到了心理联想的作用。 …. 师范毕业后当了乡村教师,每月工资71元,要积攒好几个月才能买一裂橡核辆自行车

C语言学生成绩管理系统代码 急!!!!!!

参考

#include “stdio.h”

/*定义学生结构体*/

struct Student

{

char ID[20];

char Name[20];

float Mark1;

float Mark2;

float Mark3;

float Average;

};

/*声明学生数组及学生数量*/

struct Student students[1000];

int num=0;

/*求平均值*/

float Avg(struct Student stu)

{

return (stu.Mark1+stu.Mark2+stu.Mark3)/3;

}

/*通过学号返回数组下标*/

int Student_SearchByIndex(char id[])

{

int i;

for (i=0;inum;i++)

{

if (strcmp(students[i].ID,id)==0)

{

return i;

}

}

return -1;

}

/*通过姓帆橡名返回数组下标*/

int Student_SearchByName(char name[])

{

int i;

for (i=0;inum;i++)

{

if (strcmp(students[i].Name,name)==0)

{

return i;

}

}

return -1;

}

/*显示单条学生记录*/

void Student_DisplaySingle(int index)

{

printf(“%10s%10s%8s%8s%8s%10s\n”,”学号”,”姓名”,”成绩”,”灶轿雹成绩”,”成绩”,”平均成绩”);

printf(“————————————————————-\n”);

printf(“%10s%10s%8.2f%8.2f%8.2f%10.2f\n”,students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);

}

/*插入学生信息*/

void Student_Insert()

{

while(1)

{

printf(“请输入学号:”);

scanf(“%s”,students[num].ID);

getchar();

printf(“请输入姓隐帆名:”);

scanf(“%s”,students[num].Name);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,students[num].Mark1);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,students[num].Mark2);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,students[num].Mark3);

getchar();

students[num].Average=Avg(students[num]);

num++;

printf(“是否继续?(y/n)”);

if (getchar()==’n’)

{

break;

}

}

}

/*修改学生信息*/

void Student_Modify()

{

float mark1,mark2,mark3;

while(1)

{

char id[20];

int index;

printf(“请输入要修改的学生的学号:”);

scanf(“%s”,id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf(“学生不存在!\n”);

}

else

{

printf(“你要修改的学生信息为:\n”);

Student_DisplaySingle(index);

printf(“– 请输入新值–\n”);

printf(“请输入学号:”);

scanf(“%s”,students[index].ID);

getchar();

printf(“请输入姓名:”);

scanf(“%s”,students[index].Name);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,students[index].Mark1);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,students[index].Mark2);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,students[index].Mark3);

getchar();

students[index].Average=Avg(students[index]);

}

printf(“是否继续?(y/n)”);

if (getchar()==’n’)

{

break;

}

}

}

/*删除学生信息*/

void Student_Delete()

{

int i;

while(1)

{

char id[20];

int index;

printf(“请输入要删除的学生的学号:”);

scanf(“%s”,id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf(“学生不存在!\n”);

}

else

{

printf(“你要删除的学生信息为:\n”);

Student_DisplaySingle(index);

printf(“是否真的要删除?(y/n)”);

if (getchar()==’y’)

{

for (i=index;inum-1;i++)

{

students[i]=students[i+1];

}

num–;

}

getchar();

}

printf(“是否继续?(y/n)”);

if (getchar()==’n’)

{

break;

}

}

}

/*按姓名查询*/

void Student_Select()

{

while(1)

{

char name[20];

int index;

printf(“请输入要查询的学生的姓名:”);

scanf(“%s”,name);

getchar();

index=Student_SearchByName(name);

if (index==-1)

{

printf(“学生不存在!\n”);

}

else

{

printf(“你要查询的学生信息为:\n”);

Student_DisplaySingle(index);

}

printf(“是否继续?(y/n)”);

if (getchar()==’n’)

{

break;

}

}

}

/*按平均值排序*/

void Student_SortByAverage()

{

int i,j;

struct Student tmp;

for (i=0;inum;i++)

{

for (j=1;jnum-i;j++)

{

if (students[j-1].Averagestudents[j].Average)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}

}

/*显示学生信息*/

void Student_Display()

{

int i;

printf(“%10s%10s%8s%8s%8s%10s\n”,”学号”,”姓名”,”成绩”,”成绩”,”成绩”,”平均成绩”);

printf(“————————————————————-\n”);

for (i=0;inum;i++)

{

printf(“%10s%10s%8.2f%8.2f%8.2f%10.2f\n”,students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);

}

}

/*将学生信息从文件读出*/

void IO_ReadInfo()

{

FILE *fp;

int i;

if ((fp=fopen(“Database.txt”,”rb”))==NULL)

{

printf(“不能打开文件!\n”);

return;

}

if (fread(num,sizeof(int),1,fp)!=1)

{

num=-1;

}

else

{

for(i=0;inum;i++)

{

fread(students[i],sizeof(struct Student),1,fp);

}

}

fclose(fp);

}

/*将学生信息写入文件*/

void IO_WriteInfo()

{

FILE *fp;

int i;

if ((fp=fopen(“Database.txt”,”wb”))==NULL)

{

printf(“不能打开文件!\n”);

return;

}

if (fwrite(num,sizeof(int),1,fp)!=1)

{

printf(“写入文件错误!\n”);

}

for (i=0;inum;i++)

{

if (fwrite(students[i],sizeof(struct Student),1,fp)!=1)

{

printf(“写入文件错误!\n”);

}

}

fclose(fp);

}

/*主程序*/

main()

{

int choice;

IO_ReadInfo();

while(1)

{

/*主菜单*/

printf(“\n—— 学生成绩管理系统——\n”);

printf(“1. 增加学生记录\n”);

printf(“2. 修改学生记录\n”);

printf(“3. 删除学生记录\n”);

printf(“4. 按姓名查询学生记录\n”);

printf(“5. 按平均成绩排序\n”);

printf(“6. 退出\n”);

printf(“请选择(1-6):”);

scanf(“%d”,choice);

getchar();

switch(choice)

{

case 1:

Student_Insert();

break;

case 2:

Student_Modify();

break;

case 3:

Student_Delete();

break;

case 4:

Student_Select();

break;

case 5:

Student_SortByAverage();

Student_Display();

break;

case 6:

exit();

break;

}

IO_WriteInfo();

}

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月22日 13:48:22
下一篇 2024年3月22日 13:55:39

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7200
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6300
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4800
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3400
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信