C语言之学生管理系统代码(完整)(基于c语言的学生信息管理系统)

生活百科 2023-04-28 20:42生活百科www.xingbingw.cn

C语言之学生管理系统代码(完整)(基于c语言的学生信息管理系统),本文通过数据整理汇集了C语言之学生管理系统代码(完整)(基于c语言的学生信息管理系统)相关信息,下面一起看看。

问题描述

在文件studd.txt中存放学生信息,学生信息包含学号、姓名和成绩。要求采用菜单形式实现学生记录的创建、添加、查找(按学号进行)、修改(按学号进行)和删除(按学号进行)、显示所有信息等功能。用户可以循环操作直到选择退出为止。

分析

本题是对文件的综合应用,采用菜单形式可以方便地实现程序模块的设计方法,这样可以使程序显得简洁明了。设计时可以逐个完成各模块功能,并调试好每个模块,然后再整合各模块。

参考代码

#includestdio.h>

#includestdlib.h>

#includestring.h>

#includeconio.h>

struct student

{ char no[10];

char name[20];

int score;

};

char filename[100]=”studd.txt”; /设置文件名/

FILE fp;

void create(); /创建函数声明/

void append(); /添加函数声明/

void search(); /查找函数声明/

void del(); /删除函数声明/

void modify(); /修改函数声明/

void output(); /显示函数声明/

int main(void)

{

int num;

while(1)

{

printf(” 学生成绩系统\n\n”);

printf(” 1.创建记录 \n”);

printf(” 2.添加记录 \n”);

printf(” 3.查找记录 \n”);

printf(” 4.修改记录 \n”);

printf(” 5.删除记录 \n”);

printf(” 6.显示记录 \n”);

printf(” 0.退出系统 \n”);

printf(“\n 选择序号0-6” );

scanf(“%d”,num);

if(num>=0num=6)

{

switch(num)

{ case 1:create();break;

case 2:append();break;

case 3:search();break;

case 4:modify();break;

case 5:del();break;

case 6:output();break;

case 0:exit(1);

}

printf(“\n\n操作完毕,请选择!\n”);

}

else

printf(“\n\n选择错误,请选择!\n”);

}

getch();

return 0;

}

/创建记录/

void create()

{

struct student stu;

if((fp=fopen(filename,”w”))==NULL)

{

printf(“Cannot Open File!\n”);

exit(0);

}

fprintf(fp,”%-10s%-20s%-50s\n”,”学号”,”姓名”,”成绩”);

printf(“\n请输入学号、姓名及成绩(以0结束)\n”);

scanf(“%s”,stu.no);

while(strcmp(stu.no,”0″))

{

scanf(“%s %d”,stu.name,stu.score);

fprintf(fp,”%-10s%-20s%-50d\n”,stu.no,stu.name,stu.score);

scanf(“%s”,stu.no);

}

fclose(fp);

}

/添加记录/

void append()

{

struct student stu;

if((fp=fopen(filename,”a”))==NULL)

{

printf(“\nCannot Open File!”);

exit(0);

}

printf(“\n请输入要添加的学号、姓名及成绩\n”);

scanf(“%s%s%d”,stu.no,stu.name,stu.score);

fprintf(fp,”%-10s%-20s%-50d\n”,stu.no,stu.name,stu.score);

fclose(fp);

}

/查找记录/

void search()

{

int k=0;

char nokey[10];

struct student stu;

printf(“\n请输入学号”);

scanf(“%s”,nokey);

if((fp=fopen(filename,”r”))==NULL)

{

printf(“\nCannot Open File!”);

exit(0);

}

fseek(fp,1Lsizeof(struct student),0);

while(!feof(fp))

{

fscanf(fp,”%s%s%d”,stu.no,stu.name,stu.score);

if(strcmp(nokey,stu.no)==0)

{

printf(“\n\n已查找到,该记录为\n\n”);

printf(“%-10s%-20s%-50s”,”学号”,”姓名”,”成绩”);

printf(“%-10s%-20s%-50d”,stu.no,stu.name,stu.score);

k=1;

}

}

if(!k)

printf(“\n文件中无此人的记录。”);

fclose(fp);

}

/修改记录/

void modify()

{

int k=0;

long position;

char nokey[10];

struct student stu;

printf(“\n请输入学号”);

scanf(“%s”,nokey);

if((fp=fopen(filename,”r+”))==NULL)

{

printf(“\nCannot Open File!”);

exit(0);

}

fseek(fp,1Lsizeof(struct student),0);

while(!feof(fp))

{

fscanf(fp,”%s%s%d”,stu.no,stu.name,stu.score);

if(strcmp(nokey,stu.no)==0)

{ position=ftell(fp);

k=1;

break;

}

}

if(k)

{

printf(“\n\n已查找到,该记录为\n\n”);

printf(“%-10s%-20s%-50s”,”学号”,”姓名”,”成绩”);

printf(“%-10s%-20s%-50d”,stu.no,stu.name,stu.score);

printf(“\n请输入新的学号、姓名及成绩”);

scanf(“%s%s%d”,stu.no,stu.name,stu.score);

fseek(fp,position-1Lsizeof(struct student),SEEK_SET);

fprintf(fp,”\n%-10s%-20s%-50d”,stu.no,stu.name,stu.score);

}

else

printf(“\n\n文件中无此人的记录。”);

fclose(fp);

}

/删除记录/

void del()

{

int m,k=0;

long position;

char nokey[10];

struct student stu;

printf(“\n请输入学号”);

scanf(“%s”,nokey);

if((fp=fopen(filename,”r+”))==NULL)

{

printf(“\nCannot Open File!”);

exit(0);

}

fseek(fp,1Lsizeof(struct student),0);

while(!feof(fp))

{

fscanf(fp,”%s%s%d”,stu.no,stu.name,stu.score);

if(strcmp(nokey,stu.no)==0)

{ position=ftell(fp);

k=1;

break;

}

}

if(k)

{

printf(“\n\n已查找到,该记录为\n\n”);

printf(“%-10s%-20s%-50s”,”学号”,”姓名”,”成绩”);

printf(“%-10s%-20s%-50d”,stu.no,stu.name,stu.score);

printf(“\n确实要删除记录,请按1;不删除记录,请按0”);

scanf(“%d”,m);

if(m)

{

fseek(fp,position-1Lsizeof(struct student),SEEK_SET);

fprintf(fp,”%-10s%-20s%-50s”,””,””,””);

}

}

else

printf(“\n\n文件中无此人的记录。”);

fclose(fp);

}

/显示记录/

void output()

{

struct student stu;

if((fp=fopen(filename,”r”))==NULL)

{

printf(“\nCannot Open File!”);

exit(0);

}

printf(“\n\n文件内容为\n”);

fseek(fp,1Lsizeof(struct student),0);

while(!feof(fp))

{

fscanf(fp,”%s%s%d\n”,stu.no,stu.name,stu.score);

printf(“%-10s%-20s%-50d”,stu.no,stu.name,stu.score);

}

fclose(fp);

}

更多C语言之学生管理系统代码(完整)(基于c语言的学生信息管理系统)相关信息请关注本站。

Copyright@2015-2025 www.xingbingw.cn 性病网版板所有