c语言学生管理信息系统

用C语言编写一个学生管理系统。

概述

单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。

运行结果如下:

输入数据:

根据总成绩排序:

根据学号删除学生信息:

贴上代码(有点多)

#include stdio.h

#include stdlib.h             //exit函数头文件

#include string.h             //字符串相关操作头文件

#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; in; ++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; in; ++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; in; ++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; in; ++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; in; ++i)  //复制临时数组

{

temp_num[i] = num[i];

}

max = 0;        //查找学号最大值,将其下标存至sort数组的最后一个值中

for(j=1; jn; j++)

{

if(temp_num[max]temp_num[j])

max = j;

}

sort[n-1] = max;    //sort数组的最后一个数

for(i=0; in-1; ++i)

{

min = i;        //查找学号最小值

for(j=0; jn; ++j)

{

if(temp_num[min]temp_num[j])

min = j;

}

//sort数组记录排序的学生信息的下标

sort[i] = min;

temp_num[min] = temp_num[max];      //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰     

}

for(i=0; in; ++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; in; 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; in; ++i)  //复制临时数组

{

temp_sum[i] = sum[i];

}

max = 0;        //查找总成绩最大值,将其下标存至sort数组的最后一个值中

for(j=1; jn; j++)

{

if(temp_sum[max]temp_sum[j])

max = j;

}

sort[n-1] = max;    //sort数组的最后一个数

for(i=0; in-1; ++i)

{

min = i;        //查找总成绩最小值

for(j=0; jn; ++j)

{

if(temp_sum[min]temp_sum[j])

min = j;

}

//sort数组记录排序的学生信息的下标

sort[i] = min;

temp_sum[min] = temp_sum[max];      //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰     

}

for(i=0; in; ++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; in; 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; in; ++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; in; ++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; in; ++i)

{

if (nums == num[i])

{

result = i;

break;

}

}

//最后判断q值

if (result == -1)

{

printf(“没有该学生信息!\n”);

return 0;

}

else    //删除当前学生信息即为将数组从result的位置依次前挪一个位置

{

for(i=result; in-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; in; ++i)

{

if (strcmp(name,names[i])==0)

{

result = i;

break;

}

}

//最后判断q值

if (result == -1)

{

printf(“没有该学生信息!\n”);

return 0;

}

else    //删除当前学生信息即为将数组从result的位置依次前挪一个位置

{

for(i=result; in-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 stdio.h

#include stdlib.h

#include string.h

int man=0;

int j;

char str[20];

struct student

{

char id[11];

char name[10];

int n1;

int n2;

int n3;

int n4;

int n5;

int n6;

int n7;

int n8;

int n9;

int zong;

int ping;

}student[100],temp;

void read(void)

{

FILE *cj;

int i,k;

man=0;

while(1)

{

printf(“请输入要读取的文件:\n”);

scanf(“%s”,str);

if((cj=fopen(str,”r”))==NULL)

{

printf(“打开失败\n”);

}

else

{

break;

}

}

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

{

if(fscanf(cj,”%s %s %d %d %d %d %d %d %d %d %d”,student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9)==-1)

{

break;

}

man=man+1;

}

printf(“从%s读取去了“%d”条记录\n”,str,man);

for(k=0;kman;k++)

{

student[k].zong=student[k].n1+student[k].n2+student[k].n3+student[k].n4+student[k].n5+student[k].n6+student[k].n7+student[k].n8+student[k].n9;

}

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

{

student[i].ping=student[i].zong/9;

}

fclose(cj);

}

void write(void)

{

FILE *cj;

int i;

char me;

printf(“请确认是否保存(是:y,否:任意键):\n”);

scanf(“%s”,me);

if(me==’y’)

{

if((cj=fopen(str,”w”))==NULL)

{

printf(“保存失败\n”);

}

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

{

fprintf(cj,”%s %s %d %d %d %d %d %d %d %d %d\n”,student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);

}

printf(“存了“%d”条记录到%s\n”,man,str);

fclose(cj);

}

else

return;

}

void save(void)

{

FILE *cj;

int i;

char me;

printf(“请输入新的文件名:\n”);

scanf(“%s”,str);

printf(“请确认是否保存(是:y,否:任意键):\n”);

scanf(“%s”,me);

if(me==’y’)

{

if((cj=fopen(str,”w”))==NULL)

{

printf(“保存失败\n”);

}

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

{

fprintf(cj,”%s %s %d %d %d %d %d %d %d %d %d\n”,student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);

}

printf(“存了“%d”条记录到%s\n”,man,str);

fclose(cj);

}

else

return;

}

void print(void)

{

int i;

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

printf(“*”);

printf(“\n”);

printf(” | 学号 姓名 1 2 3 4 5 6 7 8 9 平均分 总分 | \n”);

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

{

printf(” | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n”,student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);

}

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

printf(“*”);

printf(“\n”);

}

void inquiry(void)

{

int i;

char id[10];

while(1)

{

printf(“请输入要查人的学号或名字(输入-1即返回上一级):\n”);

scanf(“%s”,id);

if(id[0]==’-‘id[1]==’1’)

{

printf(“exit\n”);

break;

}

else

{

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

{

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

{

j=i;

break;

}

if(strcmp(student[i].name,id)==0)

{

j=i;

break;

}

j=-1;

}

if(j==-1)

{

printf(“无此人\n”);

}

else

{

printf(” | 学号 姓名 1 2 3 4 5 6 7 8 9 总分 平均分 | \n”);

printf(” | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n”,student[j].id,student[j].name,student[j].n1,student[j].n2,student[j].n3,student[j].n4,student[j].n5,student[j].n6,student[j].n7,student[j].n8,student[j].n9,student[i].ping,student[i].zong);

}

}

}

}

void fail(void)

{

int i;

printf(“有不及格成绩的学生为:\n”);

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

{

if(student[i].n160||student[i].n260||student[i].n360||student[i].n460||student[i].n560||student[i].n660||student[i].n760||student[i].n860||student[i].n960)

{

printf(” | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n”,student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);

}

}

}

void compositor(void)

{

int i,k;

char m;

printf(“请选择干什么排序:\n”);

printf(“1.成绩1\n”);

printf(“2.成绩2\n”);

printf(“3.成绩3\n”);

printf(“4.成绩4\n”);

printf(“5.成绩5\n”);

printf(“6.成绩6\n”);

printf(“7.成绩7\n”);

printf(“8.成绩8\n”);

printf(“9.成绩9\n”);

printf(“0.总成绩或平均成绩\n”);

scanf(“%s”,m);

if(m==’0′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].zongstudent[i+1].zong)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’1′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n1student[i+1].n1)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’2′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n2student[i+1].n2)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’3′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n3student[i+1].n3)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’4′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n4student[i+1].n4)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’5′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n5student[i+1].n5)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’6′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n6student[i+1].n6)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’7′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n7student[i+1].n7)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’8′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n8student[i+1].n8)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else if(m==’9′)

{

for(k=man;k0;k–)

{

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

{

if(student[i].n9student[i+1].n9)

{

temp=student[i];

student[i]=student[i+1];

student[i+1]=temp;

}

}

}

}

else

printf(“无此功能\n”);

}

void raise(void)

{

printf(“请输入添加人的学号:\n”);

scanf(“%s”,student[man].id);

printf(“请输入添加人的姓名:\n”);

scanf(“%s”,student[man].name);

printf(“请输入添加人的成绩1:\n”);

scanf(“%d”,student[man].n1);

printf(“请输入添加人的成绩2:\n”);

scanf(“%d”,student[man].n2);

printf(“请输入添加人的成绩3:\n”);

scanf(“%d”,student[man].n3);

printf(“请输入添加人的成绩4:\n”);

scanf(“%d”,student[man].n4);

printf(“请输入添加人的成绩5:\n”);

scanf(“%d”,student[man].n5);

printf(“请输入添加人的成绩6:\n”);

scanf(“%d”,student[man].n6);

printf(“请输入添加人的成绩7:\n”);

scanf(“%d”,student[man].n7);

printf(“请输入添加人的成绩8:\n”);

scanf(“%d”,student[man].n8);

printf(“请输入添加人的成绩9:\n”);

scanf(“%d”,student[man].n9);

student[man].zong=student[man].n1+student[man].n2+student[man].n3+student[man].n4+student[man].n5+student[man].n6+student[man].n7+student[man].n8+student[man].n9;

student[man].ping=student[man].zong/9;

man=man+1;

}

void alter(void)

{

int i;

char id[10];

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

scanf(“%s”,id);

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

{

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

{

j=i;

break;

}

j=-1;

}

if(j==-1)

{

printf(“无此人\n”);

}

else

{

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

scanf(“%s”,student[j].id);

printf(“请输入要修改为的姓名:\n”);

scanf(“%s”,student[j].name);

printf(“请输入要修改为的成绩1:\n”);

scanf(“%d”,student[j].n1);

printf(“请输入要修改为的成绩2:\n”);

scanf(“%d”,student[j].n2);

printf(“请输入要修改为的成绩3:\n”);

scanf(“%d”,student[j].n3);

printf(“请输入要修改为的成绩4:\n”);

scanf(“%d”,student[j].n4);

printf(“请输入要修改为的成绩5:\n”);

scanf(“%d”,student[j].n5);

printf(“请输入要修改为的成绩6:\n”);

scanf(“%d”,student[j].n6);

printf(“请输入要修改为的成绩7:\n”);

scanf(“%d”,student[j].n7);

printf(“请输入要修改为的成绩8:\n”);

scanf(“%d”,student[j].n8);

printf(“请输入要修改为的成绩9:\n”);

scanf(“%d”,student[j].n9);

student[j].zong=student[j].n1+student[j].n2+student[j].n3+student[j].n4+student[j].n5+student[j].n6+student[j].n7+student[j].n8+student[j].n9;

student[j].ping=student[j].zong/9;

}

}

void deletes()

{

int i,k;

char id[10];

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

scanf(“%s”,id);

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

{

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

{

j=i;

break;

}

j=-1;

}

if(j==-1)

{

printf(“无此人\n”);

}

else

{

for(k=j;kman;k++)

{

student[j]=student[j+1];

j=j+1;

}

man=man-1;

}

}

void menu(void)

{

int i;

printf(“\n”);

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

printf(” “);

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

printf(“*”);

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

printf(” “);

printf(“\n”);

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

printf(” “);

printf(“# 1.显示学生成绩信息 6.查询不及格学生信息 #\n”);

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

printf(” “);

printf(“# 2.按成绩由高到低排序 7.修改学生成绩信息 #\n”);

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

printf(” “);

printf(“# 3.添加学生成绩信息 8.读取文件 #\n”);

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

printf(” “);

printf(“# 4.删除学生成绩信息 9.保存文件 #\n”);

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

printf(” “);

printf(“# 5.查询学生成绩信息 -. 另存为 #\n”);

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

printf(” “);

printf(“# +.退出 #\n”);

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

printf(” “);

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

printf(“*”);

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

printf(” “);

printf(“\n”);

}

int main(void)

{

char i;

read();

menu();

while(1)

{

printf(“请输入要选择的需要功能的序列号(输入0显示菜单):\n”);

scanf(“%s”,i);

if(i==’1′)

{

print();

}

else if(i==’2′)

{

compositor();

print();

}

else if(i==’3′)

{

raise();

print();

}

else if(i==’4′)

{

deletes();

print();

}

else if(i==’5′)

{

inquiry();

}

else if(i==’6′)

{

fail();

}

else if(i==’7′)

{

alter();

print();

}

else if(i==’8′)

{

read();

}

else if(i==’9′)

{

write();

}

else if(i==’0′)

{

menu();

}

else if(i==’+’)

{

break;

}

else if(i==’-‘)

{

save();

}

else

{

printf(“无此功能,请重新输入序列号\n”);

}

}

return 0;

}

记事本文件:你可以随意起名,但要放在和程序同目录

0615438101 顾佳 44 67 72 60 66 65 93 82 67

0615438103 金一宇 60 77 75 75 78 77 97 74 76

0615438104 李阳涛 50 76 66 73 74 80 92 89 74

0615438105 马凯 66 76 77 66 75 72 95 82 75

0615438106 史超 47 71 65 61 85 72 89 83 70

0615438108 徐磊 60 75 66 80 76 80 92 68 74

0615438109 杨浩 60 81 70 91 83 72 93 72 78

0615438110 于泽 61 75 78 70 87 73 84 92 77

0615438111 张昊 60 71 57 82 72 63 86 38 67

0615438112 张政 60 67 69 80 66 61 87 88 73

0615438114 周艨 61 69 71 38 74 77 76 89 67

0615438131 张楠 86 74 72 90 80 81 97 80 84

0615438132 王凡 29 68 48 35 46 76 88 62 54

c语言学生管理信息系统

c语言编写学生信息管理系统

#include”stdio.h”

#define SIZE 100000

#include”string.h”

#include”stdlib.h”

#include”conio.h”

struct student

{int n;

int num;

char name[10];

int C;

int Maths;

int En;

float ave;

}stu[SIZE];

/*录入数据*/

void finput()

{

FILE *fp;

int i,p;

fp=fopen(“fstu”,”wb”);

for(i=0;iSIZE;i+1)

{

printf(“i=%d输入序号i(当输入i=-1时,返回),i=”,i++);

scanf(“%d”,i);

if(i==-1)

{

fclose(fp);

return;

}

else

{

printf(“请输入学号,姓名,C成绩,数学成绩,英语成绩:”);

scanf(“%d%s%d%d%d”,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En);

stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;

stu[i].n=i+1;

fwrite(stu[i],sizeof(structstudent),1,fp);

}

}

fclose(fp);

}

/*输出数据*/

void flist()

{

FILE *fp;

int i;

fp=fopen(“fstu”,”rb”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 成绩列表\n”);

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

printf(“序号 学号 姓名 C成绩 数学 英语 平均\n”);

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

for(i=0;fread(stu[i],sizeof(structstudent),1,fp)==1;i++)

{

printf(“%d%8d%8s%8d%8d%8d%16.2f\n”,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);

}

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

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

fclose(fp);

}

/*查找数据*/

void fsearch()

{

FILE *fp;

int i,num;

fp=fopen(“fstu”,”rb”);

rewind(fp);

printf(“请输入要查找的学号:”);

scanf(“%d”,num);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 查询结果\n”);

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

printf(“序号 学号 姓名 C成绩 数学 英语 平均\n”);

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

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

if(stu[i].num==num)

{

printf(“%d%8d%8s%8d%8d%8d%16.2f\n”,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);

}

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

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n”);

fclose(fp);

}

/*增加数据*/

void fadden()

{

int i,s;

FILE *fp;

fp=fopen(“fstu”,”ab+”);

rewind(fp);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 成绩列表\n”);

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

printf(“序号 学号 姓名 C成绩 数学 英语 平均\n”);

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

for(i=0;fread(stu[i],sizeof(structstudent),1,fp)==1;i++)

{

printf(“%d%8d%8s%8d%8d%8d%16.2f\n”,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);

}

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

s=i;

for(i=s;iSIZE;i++)

{

printf(“i=%d 输入序号i(当输入i=-1时,返回),i=”,i+1);

scanf(“%d”,i);

if(i==-1)

{

fclose(fp);

return;

}

else

{

printf(“请输入学号,姓名,C成绩,数学成绩,英语成绩:”);

stu[i].n=i+1;

scanf(“%d%s%d%d%d”,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En);

stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;

fwrite(stu[i],sizeof(structstudent),1,fp);

}

}

fclose(fp);

}

/*修改数据*/

void fchange()

{

FILE *fp;

int i,num,n;

int flag=0;

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

scanf(“%d”,num);

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

if(stu[i].num==num)

{

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 成绩列表\n”);

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

printf(“序号 学号 姓名 C成绩 数学 英语 平均\n”);

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

printf(“%d%8d%8s%8d%8d%8d%16.2f\n”,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);

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

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

n=i;

flag=1;

break;

}

if(flag==0)

{

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 输入错误!\n”);

printf(” 请返回!\n”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

return;

}

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

fp=fopen(“fstu”,”rb+”);

fseek(fp,n*sizeof(struct student),0);

printf(“请输入新的学号,姓名,C成绩,数学成绩,英语成绩:”);

scanf(“%d%s%d%d%d”,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En);

stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;

fwrite(stu[i],sizeof(structstudent),1,fp);

fclose(fp);

fp=fopen(“fstu”,”rb”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 成绩列表\n”);

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

printf(“序号 学号 姓名 C成绩 数学 英语 平均\n”);

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

for(i=0;fread(stu[i],sizeof(structstudent),1,fp)==1;i++)

{

printf(“%d%8d%8s%8d%8d%8d%16.2f\n”,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);

}

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

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

fclose(fp);

}

/*成绩排序*/

void ftaxis()

{

int i,j,n;

FILE *fp;

struct student t;

fp=fopen(“fstu”,”rb”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 成绩列表\n”);

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

printf(“序号 学号 姓名 C成绩 数学 英语 平均\n”);

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

for(i=0;fread(stu[i],sizeof(structstudent),1,fp)==1;i++)

{

printf(“%d%8d%8s%8d%8d%8d%16.2f\n”,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);

}

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

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

fclose(fp);

n=i;

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

for(j=i+1;jn;j++)

if(stu[i].avestu[j].ave)

{

t=stu[i];

stu[i]=stu[j];

stu[j]=t;

}

fp=fopen(“fstus”,”wb”);

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

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(” 成绩列表\n”);

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

printf(“序号 学号 姓名 C成绩 数学 英语 平均\n”);

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

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

{

fwrite(stu[i],sizeof(structstudent),1,fp);

printf(“%d%8d%8s%8d%8d%8d%16.2f\n”,stu[i].n,stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);

}

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

fclose(fp);

}

/*主函数*/

main()

{

int n;

for(;;)

{

printf(“\n”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(“※ ※\n”);

printf(“※ 欢迎来到学生信息管理系统 ※\n”);

printf(“※ ※\n”);

printf(“※ 系部:通信工程 专业:通信工程 ※\n”);

printf(“※ 姓名: 学号: ※\n”);

printf(“※ 班内序号: 指导老师: ※\n”);

printf(“※ ※\n”);

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(“※ ※\n”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n”);

printf(“请输入选择项(1-7):”);

scanf(“%d”,n);

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

if(n0n8)

{

switch(n)

{

case 1:finput();break;

case 2:flist();break;

case 3:fsearch();break;

case 4:fadden();break;

case 5:fchange();break;

case 6:ftaxis();break;

case 7:printf(“※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(“※ ※\n”);

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

printf(“※ 再见! ※\n”);

printf(“※ ※\n”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※\n”);

exit(0);

}

}

else

{

printf(“※※※※※※※※※※※※※※※※※※※※※※※※\n”);

printf(“※ ※\n”);

printf(“※ 输入错误! ※\n”);

printf(“※ 请退出! ※\n”);

printf(“※ ※\n”);

printf(“※※※※※※※※※※※※※※※※※※※※※※※※\n”);

break;

}

}

}

C语言 学生管理系统

#include

#include

#include

#include

#define max 20

typedef struct student //学生

{

char sno[max]; // 学号

char sname[max]; //姓名

char sex[max]; //性别

char age[max]; //年龄

char depart[max]; //系

char classs[max]; //班

char grade[max]; //年级

struct student* next;

} student;

student* head;

int LogOn() //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输

{

char username[max],password[max];

printf(“\n请输入用户名:”);

scanf(“%s”,username);

printf(“\n请输入密码(最多15位):”);

//开始以不回显且支持退格方式获取输入密码

int i=0;

while((i=0)(password[i++]=getch())!=13)//条件i=0是用于限制退格的范围

{

if(password[i-1]==’\b’)//对退格键的处理

{

printf(“%c%c%c”,’\b’,’\0′,’\b’);

i=i-2;

}

else

printf(“*”);

}

password[–i]=’\0′;

//已获取密码。验证用户身份

if(!strcmp(username,”zhang”)!strcmp(password,”8147086″))

{

printf(“\n登录成功!”);

return 1;

}

else

return 0;

}

void regist()

{

char ch;

student *s,*ptr; //s用来建新结点,ptr用来暂存头结点

do

{

s=(student*)malloc(sizeof(student)); // 新建一个学生结点

printf(“\n开始注册…”); //开始注册

printf(“\n请输入该学生的学号:”);

scanf(“%s”,s-sno);

printf(“\n请输入该学生的姓名:”);

scanf(“%s”,s-sname);

printf(“\n请输入该学生的性别:”);

scanf(“%s”,s-sex);

printf(“\n请输入该学生的年龄:”);

scanf(“%s”,s-age);

printf(“\n请输入该学生的系:”);

scanf(“%s”,s-depart);

printf(“\n请输入该学生所在的班:”);

scanf(“%s”,s-classs);

printf(“\n请输入该学生所在的年级”);

scanf(“%s”,s-grade);

ptr=head;

head=s;//将新结点插入队头

s-next=ptr;

fflush(stdin);

printf(“\n请问是否继续注册?(Y/N)”);

scanf(“%c”,ch);

}while(ch==’Y’||ch==’y’);

return;

}

void ElePrint(char str[]) //输出单个元素

{

if(str==NULL) exit(0);

printf(“%s”,str);

for(unsigned int i=0;i12-strlen(str);i++) printf(” “);//为了对齐输出,需插入一些空格

return;

}

int LinePrint(student *ptr) //输出一行

{

if(ptr==NULL) //检查传进来的指针

return 0;

printf(“\n”);

ElePrint(ptr-sno);

ElePrint(ptr-sname);

ElePrint(ptr-age);

ElePrint(ptr-sex);

ElePrint(ptr-depart);

ElePrint(ptr-classs);

ElePrint(ptr-grade);

return 1;

}

void print() //输出全部学生信息

{

student *ptr=head;

printf(“\n学号 姓名 年龄 性别 系 班 年级 “);

while(ptr)

{

LinePrint(ptr);

ptr=ptr-next;

}

printf(“\n”);

return;

}

void search()//查询模块

{

int method;//查询方式

char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字

while(1)

{

printf(“\n请选择查询方式”);

printf(“\n1.按学号查询”);

printf(“\n2.按姓名查询”);

printf(“\n3.按所在系查询”);

printf(“\n4.按所在班级查询”);

printf(“\n5.按所在年级查询”);

printf(“\n6.打印全部学生信息”);

printf(“\n7.返回主菜单\n”);

scanf(“%d”,method);

student *p=head,*temp;

switch(method)

{

case 1:

printf(“\n请输入要查询的学号:”);

scanf(“%s”,no);

while(p)

{

if(!strcmp(p-sno,no))

break;

else

{

temp=p;

p=p-next;

}

}

printf(“\n学号 姓名 年龄 性别 系 班 年级 “);

LinePrint(p);

break;

case 2:

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

scanf(“%s”,name);

printf(“\n学号 姓名 年龄 性别 系 班 年级 “);

while(p)

{

if(!strcmp(p-sname,name))

LinePrint(p);

p=p-next;

}

break;

case 3:

printf(“\n请输入学生所在的系:”);

scanf(“%s”,departm);

printf(“\n学号 姓名 年龄 性别 系 班 年级 “);

while(p)

{

if(!strcmp(p-depart,departm))

LinePrint(p);

p=p-next;

}

break;

case 4:

printf(“\n请输入学生所在的班:”);

scanf(“%s”,clss);

printf(“\n请输入学生所在的年级:”);

scanf(“%s”,grades);

printf(“\n学号 姓名 年龄 性别 系 班 年级 “);

while(p)

{

if(!strcmp(p-classs,clss)!strcmp(p-grade,grades))

LinePrint(p);

p=p-next;

}

break;

case 5:

printf(“\n请输入学生所在的年级:”);

scanf(“%s”,grades);

printf(“\n学号 姓名 年龄 性别 系 班 年级 “);

while(p)

{

if(!strcmp(p-grade,grades))

LinePrint(p);

p=p-next;

}

break;

case 6:

print();

break;

case 7:

return;

default:

printf(“很抱歉,暂无此查询方式!”);

break;

}

}

}

void modify()//修改学生信息

{

char num[max];

student *p=head;

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

scanf(“%s”,num);

while(p)

{

if(!strcmp(p-sno,num))

break;

else

p=p-next;

}

if(p==NULL)

{

printf(“\n错误:没有此学生的信息!\n”);

return;

}

LinePrint(p);

printf(“\n请输入要修改的该学生的信息:”);

printf(“\n1.姓名”);

printf(“\n2.性别”);

printf(“\n3.年龄”);

printf(“\n4.所在的系”);

printf(“\n5.所在的班”);

printf(“\n6.所在的年级”);

char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];

int select;

fflush(stdin);

scanf(“%d”,select);

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

switch(select)

{

case 1:

scanf(“%s”,name1);

strcpy(p-sname,name1);

break;

case 2:

scanf(“%s”,sex1);

strcpy(p-sex,sex1);

break;

case 3:

scanf(“%s”,age1);

strcpy(p-age,age1);

break;

case 4:

scanf(“%s”,depart1);

strcpy(p-depart,depart1);

break;

case 5:

scanf(“%s”,class1);

strcpy(p-classs,class1);

break;

case 6:

scanf(“%s”,grade1);

strcpy(p-grade,grade1);

break;

default:

printf(“\nError!”);

break;

}

LinePrint(p);

return;

}

void del()// 删除某学生的信息

{

student *p=head,*temp=head,*s;

char num1[max];

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

scanf(“%s”,num1);

while(p)//查找该学生所在的结点

{

if(!strcmp(p-sno,num1))

break;

else

{

temp=p;

p=p-next;

}

}//while

if(!p)

{

printf(“\n不存在此学生的信息.”);

return;

}

LinePrint(p);//输出该学生的信息

printf(“\n请问真的要删除该学生的信息吗?(Y/N)”);

char ch;

fflush(stdin);

scanf(“%c”,ch);

if(ch==’Y’||ch==’y’)

{

s=p-next;

temp-next=s;

free(p);

printf(“\n已经删除该学生的信息.”);

}

return;

}

void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现

{

student *ptr,*s=head,*p;

int count=0,count1;

while(s)//统计链表结点个数

{

count++;

s=s-next;

}

for(int i=1;icount;i++)

{

ptr=head;

p=NULL;

count1=count-i; //用来控制每轮起泡排序的终点,即每次把学号最小的结点移到倒数第i个结点

while(ptrptr-next(count1–))

{

if(strcmp(ptr-sno,ptr-next-sno)0)

{

s=ptr-next;

ptr-next=s-next;

if(p==NULL) //ptr处于队头时

head=s;

else

p-next=s;

s-next=ptr;

p=s;

}

else

{

ptr=ptr-next;

if(p==NULL) //ptr处于队头时

p=head;

else

p=p-next;

}

}

}

return;

}

void quit()

{

char ch;

printf(“\n真的要退出?(Y/N)”);

fflush(stdin);

scanf(“%c”,ch);

if(ch==’Y’||ch==’y’)

exit(0);

return;

}

int main()

{

int option;

printf(“\nCopyright@2005 KongXinCai All rights reserved.”);

printf(“\n欢迎使用学生信息管理系统!\n”);

//登录模块

int icheck=0;

while(icheck3)

{

if(LogOn()==0)

icheck++;

else

break;

}

if(icheck==3)

{

printf(“\n连续登录三次不成功,退出!”);

exit(0);

}

//系统界面

while(1)

{

printf(“\n\n请选择需要的服务:”);

printf(“\n1.注册”);

printf(“\n2.查询”);

printf(“\n3.修改”);

printf(“\n4.删除”);

printf(“\n5.排序”);

printf(“\n7.求平均”);

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

scanf(“%d”,option);

switch(option)

{

case 1:

regist();

break;

case 2:

search();

break;

case 3:

modify();

break;

case 4:

del();

break;

case 5:

sort();

break;

case 6:

quit();

break;

}

}

return 0;

}

c语言学生信息管理系统代码

代码如下:

#includestdio.h

#includemalloc.h

#includestdlib.h

#includestring.h

#includeconio.h

typedef struct examinee //考生信息结构

{   char examno[20]; //准考证号

char name[10]; //姓名

char sex[4]; //性别

short age; //年龄

char examtype[10]; //报考科目

}ElemType;

typedef struct Node //定义链表结点

{

ElemType data; //数据域

struct Node *next; //指针域

}Node,*List,*position;

List make_empty( List L ); //创建一个带头结点的空表

int is_empty( List L ); //测试链表是否是空表

int is_last( position p, List L ); //测试当前位置是否是表尾

position make_node( position p,int n ); //创建结点并输入考生信息

void put_information( position p ); //是否输出该考生信息

void put_name_information( List L ); //输出姓名为xx的考生信息

int put_pos_information( position p ); //输出该地址考生信息

void link_to_tail( List L, position p ); //将结点连接到表尾

int ciculation_make(); //循环创建考生信息

int judge_put_all(); //是否输出所有考生信息

void put_all(List L); //输出所有考生信息。

position find( List L ); //查找第一个姓名为xx的元素并返回位置

position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置

//int judge_delete_val(); //询问是否删除考生数据

int delete_val( List L ); //删除指定考生信息并输出其信息

void menu(List L); //菜单函数

List L;

//position p;

int

main( void ) 

{

List L = NULL; //定义头结点指针

position p = NULL; //定义表工作指针

L = make_empty( L ); //创建空表

printf(“\t\t\t★★考生报名管理程序★★\n\t\t—————————————-\n”);

menu(L);

return 0;

}

//创建一个带头结点的空表

List

make_empty( List L)

{

L = ( List ) malloc (sizeof( Node ));

if(NULL == L)

{

printf(“内存分配失败”);

exit( 1 );

}

L-next = NULL;

//printf(“空表创建成功。\n”);

return L;

}

//创建结点并输入考生信息

position

make_node( position p ,int n)

{

if(n) //n为1是创建结点并输入,n为0是修改

{

p = ( position ) malloc ( sizeof ( Node ));

p-next = NULL ;

}

printf(“请输入考生准考证号:”);

gets(p-data.examno);

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

gets(p-data.name);

do

{

printf(“请输入考生性别,只能输入“男”或者“女”:”);

gets(p-data.sex);

}

while( 0 != strcmp( p-data.sex, “男” ) 0 != strcmp( p-data.sex, “女” )); //判断性别是否有误

printf(“请输入考生年龄:”);

scanf(“%hd”,p-data.age);

getchar();  //如果把这句删掉,就“无法执行”下面的报考类别

/*下面的do while用来判断报考类别是否输入有误*/

do

{

printf(“请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:”);

gets(p-data.examtype);

}

while( 0 != strcmp( “英语”, p-data.examtype ) 0 != strcmp( “数学”, p-data.examtype ) 0 != strcmp( “数据结构”, p-data.examtype ));

if(n)

{

printf(“报名成功\n”);

}

else

{

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

}

return p;

}

//前插法;

void

link_to_tail( List L, position p)

{

p-next = L-next;

L-next = p;

}

//查找第一个姓名为xx的元素并返回位置

position

find( List L )

{

position p = L-next;

char name[10];

printf(“请输入你要查找的考生姓名:”);

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

p=p-next;

}

return p;

}

//测试链表是否是空表

int

is_empty( List L )

{

return L-next == NULL;

}

//测试当前位置是否是表尾

int

is_last( position p, List L )

{

return p-next == NULL;

}

//输出姓名为xx的考生信息

void

put_name_information( List L )

{

position p = find(L);

if(p!=NULL)

{

printf(“您要查找的考生信息:\n”);

printf(“准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n”,p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

else

{

printf(“没有您要找的学生。\n”);

}

}

//循环创建考生信息

int

ciculation_make()

{

int n = 2;

do

{

printf(“是否继续创建考生信息?是请输入“1”,不是请输入“0”:”);

scanf(“%d”,n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//是否输出考生信息

void

put_information( position p )

{

int n=2;

do

{

printf(“是否输出该考生信息?是请输入“1”,不是请输入“0”:”);

scanf(“%d”,n);

getchar();

}

while( n != 0 n != 1);

if(n)

{

printf(“准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n”,p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

}

//是否输出所有考生信息

int

judge_put_all()

{

int n = 2;

do

{

printf(“是否输出所有考生信息?是请输入“1”,不是请输入“0”:”);

scanf(“%d”,n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//输出所有考生信息

void

put_all(List L)

{

if(L-next == NULL)

{

printf(“现无考生报名!\n”);

}

else

{

position p=L-next;

while( p != NULL )

{

printf(“准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n”,p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

p=p-next;

}

}

//getchar();

}

//询问是否删除考生数据

int

judge_delete_val()

{

int n = 2;

do

{

printf(“是否要删除某个考生数据?是请输入“1”,不是输入“0”:”);

scanf(“%d”,n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//查找第一个姓名为xx的元素并返回其直接前驱的位置

position

find_previous( List L )

{

position q = L;

position p = L-next;

char name[10];

printf(“请输入你要查找的考生姓名:”);

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

q=p;

p=p-next;

}

if( p != NULL )

{

return q;

}

else

return p;

}

//删除指定考生信息并输出其信息

int

delete_val(List L)

{

int n=2;

position q=NULL;

position p=find_previous( L ); //返回考生信息地址

if( NULL == p )

{

printf(“你要删除的考生不存在\n”);

return 0;

}

else

{

q = p-next;

p-next = q-next;

printf(“删除成功。\n删除的考生信息为:\n”);

printf(“准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n”,q-data.examno,q-data.name,q-data.sex,q-data.age,q-data.examtype);

free(q);

return 1;

}

}

//输出该地址考试信息

int

put_pos_information( position p )

{

if(p != NULL )

{

printf(“准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n”,p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

return 1;

}

else

{

printf(“没有您要查找的学生。”);

return 0;

}

}

//菜单函数

void

menu(List L)

{

printf(“\t\t\t   a. 考生报名入口\n”);

printf(“\t\t\t   b. 查询考生信息\n”);

printf(“\t\t\t   c. 修改考生信息\n”);

printf(“\t\t\t   d. 删除考生信息\n”);

printf(“\t\t\t   e. 全部考生信息\n”);

printf(“\t\t\t   f. 程序作者信息\n”);

printf(“\t\t\t   g.   退出程序\n”);

char n=’h’;

while(n != ‘g’)

{

do  //确定正确输入

{

printf(“请通过字母序号选择功能:”);

n = getchar();

getchar();

putchar(‘\n’);

if( n ‘a’ || n ‘g’)

{

printf(“错误的字母序号。\n”);

}

}

while( n ‘a’ || n ‘g’ );

switch (n)

{

case ‘a’:

{

printf(“请输入报名考生信息:\n”);

position p = make_node( p, 1 ); //创建新结点

link_to_tail( L, p ); //将新结点连接到表上

put_information( p );   //是否输出该考生信息

putchar(‘\n’);

}

break;

case ‘b’:

{

put_name_information( L );

putchar(‘\n’);

}

break;

case ‘c’:

{

int n=0;

position p = NULL;

printf(“您正在进行修改操作。\n”);

p = find(L);

n = put_pos_information( p );

if(n)

{

make_node( p , 0 );

put_information( p );   //是否输出该考生信息

}

putchar(‘\n’);

}

break;

case ‘d’:

{

printf(“您正在进行删除操作。\n”);

delete_val( L );

putchar(‘\n’);

}

break;

case ‘e’:

{

put_all( L );

putchar(‘\n’);

}

break;

case ‘f’:

{

printf(”              修改日期    版本号      修改人      修改内容    \n”);

printf(”        ——————————————————–\n”);

printf(”              2018.6.19    v2.0       陈百川     增加主菜单\n”);

printf(”              2018.6.23    v3.0       陈百川   增加生成文件功能\n\n”);

printf(”            该版本号为v2.0\n”);

putchar(‘\n’);

}

break;

default:

break;

}

}

printf(”                     感谢本次使用,祝您生活愉快。”);

getch();

}

回答于 2022-12-11

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

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

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月26日 09:57:48
下一篇 2024年3月26日 10:06:02

相关推荐

  • 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日
    4100
  • 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日
    5800
  • c语言扫描io脚状态,c语言端口扫描

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

    2024年5月23日
    4500
  • 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日
    4500
  • c语言三位小数,C语言三位小数

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

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

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

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

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

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

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

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

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

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

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

    2024年5月23日
    4500

发表回复

登录后才能评论



关注微信