问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2023-10-09 09:40

我来回答

5个回答

热心网友 时间:2024-11-16 04:29

代码如下:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<conio.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();
}

扩展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

参考资料:

百度百科——C语言

热心网友 时间:2024-11-16 04:29

/*引用库函数*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*定义结构体数组*/
typedef struct
{
char num[12]; /*学号*/
char name[20]; /*姓名*/
char sex[2]; /*性别*/
int score[3]; /*成绩*/
float avg; /*平均分*/
int sum; /*总成绩*/
}Student;

Student studentAll[80]; /*结构体数组*/
int student_number = 0; /*总人数*/
/*菜单函数*/
int menu_select()
{
int check_number;
do{
system("cls"); /*运行前清屏clear screen,在stdlib.h中*/
printf("\t★☆☆☆☆☆☆学生成绩管理系统☆☆☆☆☆☆★\n"); /*菜单选择*/
printf("\t★| 1. 添加学生信息 |★\n");
printf("\t★| 2. 显示学生信息 |★\n");
printf("\t★| 3. 按学号排序 |★\n");
printf("\t★| 4. 按总成绩排序 |★\n");
printf("\t★| 5. 查找单个学生 |★\n");
printf("\t★| 6. 删除指定学生 |★\n");
printf("\t★| 7. 修改学生信息 |★\n");
printf("\t★| 8. 查看各门课程的成绩情况 |★\n");
printf("\t★| 9. 待定功能 |★\n");
printf("\t★| 0. 保存退出 |★\n");
printf("\t★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\n");
printf("请输入选择(0-9):");
scanf("%d",&check_number); /*读入选择*/
}while(check_number<0||check_number>9);
return(check_number); /*返回选择*/
}

//以下的student都是形式参数,真正的数组是在全局变量里定义的studentAll数组

/*输入若干条记录*/
void Input(Student student[])
{
int i=0,j;
char flag,clear[10]; /*clear[10]为清除多余的数据所用*/
char studentNum[12]; //暂存某学生学号
//判断是否已经存在相同学生的学号
while(flag!='n'&&flag!='N') //判断flag是不是n/N,以此判断是否继续输入学生信息
{
printf("请输入学生学号: ");
scanf("%s",studentNum);

while(strcmp(student[i].num,studentNum)!=0&&i<student_number)
{
i++; /*查找判断*/
}
//查找到学生,无法增加学生信息,返回主函数
if(i<student_number)
printf("已有相同学号的学生,请重新输入\n");
//如果没有查找到学生,即可增加学生信息
else
{ if(i==student_number)
{memset(student[i].num, 0, sizeof(student[i].num));//字符串清空
strcpy(student[i].num,studentNum);

printf("学生姓名:");
scanf("%s",student[student_number].name);
printf("学生性别:");
scanf("%s",student[student_number].sex);
printf("c语言成绩:");
scanf("%d",&student[student_number].score[0]);
printf("数据结构成绩:");
scanf("%d",&student[student_number].score[1]);
printf("数据库成绩:");
scanf("%d",&student[student_number].score[2]);

student[student_number].sum=0;
for(j=0;j<3;j++)
student[student_number].sum+=student[student_number].score[j];
student[student_number].avg = (float)student[student_number].sum/3;
//printf("%.2f\n",student[student_number].avg);
gets(clear); //*清除多余的输入
printf("此学生信息录入完毕,是否继续?(Y/N)");
scanf("%c",&flag); //输入判断
student_number++;//总人数加1
i=0;}
}

}

}

/*显示所有记录*/
void Display(Student student[])
{
int i=0;
printf("——————————————————————————————————————\n");
printf("|学号 姓名 性别 C语言成绩 数据结构成绩 数据库成绩 平均成绩 总成绩|\n");
printf("——————————————————————————————————————\n");
while(i!=student_number)
{
printf("| %s %s %s %d %d %d %f %d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
i=i+1;
}
}
/*按学号排序*/
void Sort_by_num(Student student[])
{
Student student_sort;
int i,j;
for(i=0;i<student_number-1;i++)
{
for(j=0;j<student_number-1;j++)
{
if(strcmp(student[j].num,student[j+1].num)>0)
{
student_sort=student[j];
student[j]=student[j+1];
student[j+1]=student_sort;
}
}
}
}
/*按总成绩排序*/
void Sort_by_sum(Student student[])
{
Student student_sort;
int i,j;
for(i=0;i<student_number-1;i++)
{
for(j=0;j<student_number-1;j++)
{
if(student[j].sum>student[j+1].sum)
{
student_sort=student[j];
student[j]=student[j+1];
student[j+1]=student_sort;
}
}
}
}
/*按姓名查找并显示一个记录*/
void Query_a_record(Student student[])
{
int i,j;
char findname[20]; //输入学生的姓名
scanf("%s",findname);
for(j=0;j<student_number;j++)
{
if(strcmp(student[j].name,findname)==0)
{i=j;
} /*查找判断*/
}

printf("|学号 姓名 性别 C语言成绩 数据结构成绩 数据库成绩 平均成绩 总成绩|\n");
printf("———————————————————————————————————————\n");
printf("| %s %s %s %d %d %d %f %d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
}
/*按学号查找,删除一条记录*/
void Delete_a_record(Student student[])
{
int i,j;
char findname[20];
printf("请输入将要删除的学生名字"); //输入学生的姓名
scanf("%s",findname);
for(j=0;j<student_number;j++)
{
if(strcmp(student[j].name,findname)==0)
{
i=j;
}
} /*查找判断*/
for(;i<student_number-1;i++)
{
student[i]=student[i+1];
}
student_number--;
}
/*修改学生信息*/
void modifyStudentinformation(Student student[])
{
char changenum[20];
int i=0;
printf("输入将要修改的学生学号");
scanf("%s",changenum);
while(strcmp(student[i].num,changenum)!=0&&i<student_number)
{
i++; /*查找判断*/
}
if(i<student_number)
{
printf("输入新的学生学号");
scanf("%s",student[i].num);
printf("输入新的学生姓名:");
scanf("%s",student[i].name);
printf("输入新的学生性别:");
scanf("%s",student[i].sex);
printf("输入新的c语言成绩:");
scanf("%d",&student[i].score[0]);
printf("输入新的数据结构成绩:");
scanf("%d",&student[i].score[1]);
printf("输入新的数据库成绩:");
scanf("%d",&student[i].score[2]);
}
student[i].sum=student[i].score[0]+student[i].score[1]+student[i].score[2];
student[i].avg=(float)student[i].sum/3;
}

/*查看各门课程的成绩情况*/
void showClass(Student student[])
{
int i;
int score[3]={0,0,0};
int average[3]={0,0,0};
for(i=0;i<student_number;i++)
{
score[0]=score[0]+student[i].score[0];
score[1]=score[1]+student[i].score[1];
score[2]=score[2]+student[i].score[2];
}

average[0]=score[0]/student_number;
average[1]=score[1]/student_number;
average[2]=score[2]/student_number;
printf("C语言的平均成绩是 %d总成绩是%d\n",average[0],score[0]);
printf("数据结构的平均成绩是%d总成绩是%d\n",average[1],score[1]);
printf("数据库的平均成绩是 %d总成绩是%d\n",average[2],score[2]);
}
/*从文件中读入数据*/
void AddfromText(Student student[])
{
int i=0;
int number = 0;
FILE *fp; /*定义文件指针*/
if((fp=fopen("C:\\xin\\student2.txt","rb"))==NULL) /*打开二进制文件,如果不存在则创建*/
{
fp=fopen("C:\\xin\\student2.txt","wb");
}
fscanf(fp,"共有%d条记录\n",&student_number); /*读入总记录量*/

while(i<student_number) /*循环读入数据*/
{
fscanf(fp,"%s %s %s %d %d %d %f %d\n",student[i].num,student[i].name,student[i].sex,&student[i].score[0],&student[i].score[1],&student[i].score[2],&student[i].avg,&student[i].sum);
i++;
}
fclose(fp);
}
/*将所有记录写入文件*/
WritetoText(Student student[])
{
int i=0;
FILE *fp;
fp=fopen("C:\\xin\\student2.txt","wb");
fprintf(fp,"共有%d条记录\n",student_number);
while(i<student_number)
{
fprintf(fp," %s %s %s %d %d %d %f %d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
i++;
}
fclose(fp);
}

/*主函数*/
int main()
{
AddfromText(studentAll);
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("插入学生信息\n"); /*输入若干条记录*/
Input(studentAll);
break;
case 2:
printf("显示记录\n"); /*显示所有记录*/
Display(studentAll);
system("pause");
break;
case 3:
printf("按学号排序\n");
Sort_by_num(studentAll); /*按学号排序*/
printf("按学号排序成功!\n");
Display(studentAll);
system("pause");
break;
case 4:
printf("按总成绩排序\n");
Sort_by_sum(studentAll); /*按总成绩排序*/
printf("按总成绩排序成功!\n");
Display(studentAll);
system("pause");
break;
case 5:
printf("查找单个学生\n");
Query_a_record(studentAll); /*按姓名查找学生*/
system("pause");
break;
case 6:
printf("删除指定学生\n");
Delete_a_record(studentAll); /*按姓名查找,删除一条记录*/
system("pause");
break;
case 7:
printf("修改学生信息\n");
modifyStudentinformation(studentAll); /*修改学生信息*/
system("pause");
break;
case 8:
printf("查看各门课程的成绩情况\n");
showClass(studentAll); /*查看各门课程的成绩情况*/
system("pause");
break;
case 9:
printf("待定功能\n");
printf("功能描述");
system("pause");
break;
case 0:
WritetoText(studentAll);
printf("已保存,退出系统\n"); /*结束程序*/
system("pause");
exit(0);
}
}
}

热心网友 时间:2024-11-16 04:30

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void frist_print()
{
printf("\t\t********************************\n\n"); //欢迎信息
printf("\t\t\t欢迎进入学生成绩系统\n");
}
void menu()
{

printf("\n\t\t********************************\n"); //管理菜单
printf("\t\t==\t1.录入学生成绩\n\t\t+\n");
printf("\t\t==\t2.显示学生成绩\n\t\t+\n");
printf("\t\t==\t3.查询学生成绩\n\t\t+\n");
printf("\t\t==\t4.添加学生成绩\n\t\t+\n");
printf("\t\t==\t5.修改学生成绩\n\t\t+\n");
printf("\t\t==\t6.删除学生成绩\n\t\t+\n");
printf("\t\t==\t7.清空页面\n\t\t+\n");
printf("\t\t==\t8.退出系统\n");
printf("\t\t********************************\n");
printf("please choise 1--8:\t");
putchar(10);
}

struct MM // 结构体定义变量
{
char num[20];
char name[10];
float pay;
int many;

}mm;
void scanf_1() //第一次输入信息并保存在文件中
{
char ch;
FILE *fp;
if((fp=fopen("dd.dat","wb+"))==NULL)
{
printf("cannot open file\n");
exit(0);
}

do
{
printf("请输入成绩的--编号:\t");
getchar();
gets(mm.num);
printf("姓名:\t");
gets(mm.name);
printf("成绩:\t");
scanf("%f",&mm.pay);
printf("学号:\t");
scanf("%d",&mm.many);
if(fwrite(&mm,sizeof(struct MM),1,fp)!=1)
{
printf("file write error\n");
exit(0);
}

printf("是否继续输入y or n ?\t");
getchar();
ch=getchar();
}while(ch=='y'||ch=='Y');
fclose(fp);

}
void find() //查询成绩的信息
{ int a,b=0;
char ch[20];
FILE *fp;
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
printf("请输入要查询的成绩的方式\n\t1.编号 2.姓名:\n\t请选择 1 or 2 \t");
scanf("%d",&a);
if(a==1)
{ getchar();
printf("请输入成绩的编号:\t");
gets(ch);
while(fread(&mm,sizeof(struct MM),1,fp)==1)
if(strcmp(mm.num,ch)==0)
{
b++;
printf("编号\t姓名\t价格\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
}
if(b==0) printf("对不起!没有找到相关信息:\n");
}
else if(a==2)
{ printf("请输入成绩的姓名:\t");
getchar();
gets(ch);
while(fread(&mm,sizeof(struct MM),1,fp)==1)
if(strcmp(mm.name,ch)==0)
{
b++;
printf("编号\t姓名\t价格\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
}
if(b==0) printf("input error!\n");
}
fclose(fp);
}

void scanf_2() //第二次输入信息并保存在文件中
{
char ch;
FILE *fp;
if((fp=fopen("dd.dat","ab"))==NULL)
{
printf("cannot open file\n");
exit(0);
}

do
{
printf("请输入要添加成绩的--编号:\t");
getchar();
gets(mm.num);
printf("姓名:\t");
gets(mm.name);
printf("价格:\t");
scanf("%f",&mm.pay);
printf("学号:\t");
scanf("%d",&mm.many);
if(fwrite(&mm,sizeof(struct MM),1,fp)!=1)
{
printf("file write error\n");
exit(0);
}

printf("是否继续输入y or n ?\t");
getchar();
ch=getchar();
}while(ch=='y'||ch=='Y');
fclose(fp);
}
void print() //输出文档中的信息
{
FILE *fp;
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannot open file\n");
return ;
}
printf("编号\t姓名\t价格\t\t学号\n");
while(fread(&mm,sizeof(struct MM),1,fp)==1)
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
fclose(fp);
}
void change()
{ //修改信息的函数,定义另一个文件,把要修改的信息放到该文件中
struct XX //然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名
{ //把原来的文件移除;
char num[20];
char name[10];
float pay;
int many;
}xx;
FILE *fp2;
int a,b=0,c=0,n=0;
char ch[20],ck;
FILE *fp;
do{

if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if((fp2=fopen("temp.dat","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}

printf("请输入要修改成绩的编号:\t");
scanf("%s",ch);
n++;
while(fread(&mm,sizeof(struct MM),1,fp)==1)
{
if((strcmp(mm.num,ch)==0))
{
b++; //b的值如果一直没有改变说明,没有找到相关的信息;
printf("编号\t姓名\t价格\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
getchar();
printf("请输入成绩的新编号:\t");
gets(xx.num);
printf("请输入成绩的新姓名:\t");
gets(xx.name);
printf("请输入成绩的新价格:\t");
scanf("%f",&xx.pay);
printf("请输入成绩新学号:\t");
scanf("%d",&xx.many);
getchar();
fwrite(&xx,sizeof(struct XX),1,fp2);
}
if(strcmp(mm.num,ch)!=0)
fwrite(&mm,sizeof(struct MM),1,fp2);
}
if(b==0)
{
printf("\t没有找到相关信息!\n");
getchar();
}
rewind(fp); //如果要继续修改的话,要把标记返回到文件的开头;

printf("是否继续修改?enter 'y' or 'n' \t");
ck=getchar();
fclose(fp);
fclose(fp2);
remove("dd.dat");
rename("temp.dat","dd.dat");

}while(ck=='y'||ck=='Y');
if(b!=0) //如果没有找到相关信息就不能输出
printf("\t修改成功:\n");

}

void del()
{ //删除函数和修改很相似
FILE *fp2;
int a,b=0,c=0,n=0;
char ch[20],ck;
FILE *fp;

do {
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if((fp2=fopen("temp.dat","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
printf("请输入要删除成绩的编号:\t");
scanf("%s",ch);
n++;
while(fread(&mm,sizeof(struct MM),1,fp)==1)
{
if((strcmp(mm.num,ch)==0))
{
b++; //b的值如果一直没有改变说明,没有找到相关的信息;
printf("编号\t姓名\t价格\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
}
else if(strcmp(mm.num,ch)!=0)
fwrite(&mm,sizeof(struct MM),1,fp2);
}
if(b==0)
{
printf("\t没有找到相关信息!\n");
getchar();
}
rewind(fp);
getchar();
getchar();
printf("删除成功!");
getchar(); //如果要继续修改的话,要把标记返回到文件的开头;
printf("是否继续删除?enter 'y' or 'n' \t");
ck=getchar();
fclose(fp);
fclose(fp2);
remove("dd.dat");
rename("temp.dat","dd.dat");
}while(ck=='y'||ck=='Y');
if(b!=0) //如果没有找到相关信息就不能输出
printf("\t保存成功:\n");

}
void myexit()
{
int a;
char ch;
printf("\t是否确定退出?请选择 y or n: ");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y') exit(0);
else
menu();

}
int main()
{
int a;
frist_print();
menu();
while(1)
{
scanf("%d",&a);
if(a==1)
scanf_1();
else if(a==2)
print();
else if(a==3)
find();
else if(a==4)
scanf_2();
else if(a==5)
change();
else if(a==6)
del();
else if(a==7)
system("cls");
else if(a==8)
myexit();
else printf("输入错误!!!请重新输入:\t");

printf("\t按任意键继续!\n");
getch();
menu();
}
getch();

}
一个成绩管理系统,注释不是太多,写的不太好,能运行,符合你初级水平。
满意请采纳。

热心网友 时间:2024-11-16 04:30

这是成绩管理系统

热心网友 时间:2024-11-16 04:31

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 C语言程序设计:学生信息管理系统设计1 编写一个c语言程序,实现录入学生学号和姓名信息的功能7 魔兽世界珠宝1,求助! c语言编写学生信息管理系统156 用C语言编程学生信息管理系统!14 天焰钻石配方 为什么我的QQ空间个人中心里德好友心情动态不是在一起显示,而是一条一... 和很多很多相似的词语43 类似淡然如水的词语。比较有意境的6 写几个类似的词语 代替 替代就是写几个和这两个词语相对应的 ... 类似“黑白分明”的成语有哪些?13 联通什么卡可以话费购?3 求奖罚分明,的类似词语或名句16 联通话费购是什么?7 形容人爱憎分明的词语1 联通话费购怎么使用?12 “良言一句三冬暖,恶语伤人六月寒”是什么意思13 良言一句三冬暖 恶语伤人六月寒的意思3359 良言一句三冬暖,恶语伤人六月寒是什么意思?37 袁鑫慧签名怎么设计呀谢谢1 小马虎在计算有余数的除法时把被除数108看成了708结果商增...194 小马虎在计算有余数的除法时把被除数108看成了708结果商增...304 数学题王丽在计算有余数的除法时,把被除数108错写成了208...2 送朋友什么手工的生日礼物呢?是女的送女的 王丽在计算有余数的除法时把被除数108错写成了208结果上增...6 数学题::小强在计算一道有余数的除法时,把被除数107当作1...66 冬冬在计算一道有余数的除法时,把被除数148错看成184,这...6 潍坊诸城市龙城建设投资有限公司招聘人员名单什么时候公示啊? 哪里学正宗遵义羊肉粉? 你好,我想问一下在哪里可学做正宗的羊肉粉。谢谢! 我想学正宗遵义羊肉粉那家好 遵义羊肉粉培训哪家好? 托运包裹,行李箱的那种。用什么快递啊?要多少钱??有没有给送...1 在重庆哪里能学遵义羊肉粉 过年回家。想把行李带回家有什么方式最好呢?托运?快递?1 邮寄行李用什么方式最合适?27 火车托运 行李托运和包裹托运 哪个更便宜?77 具备哪些条件才能办理中国银行公司客户期权买卖 托运行李用什么比较好?物流,快递还是邮政1 诸城市龙城置业有限公司怎么样?