该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

问题描述:

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

分析:

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

参考代码:

#include

#include

#include

#include

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(" ***学生成绩系统*** ");

printf(" 1.创建记录 ");

printf(" 2.添加记录 ");

printf(" 3.查找记录 ");

printf(" 4.修改记录 ");

printf(" 5.删除记录 ");

printf(" 6.显示记录 ");

printf(" 0.退出系统 ");

printf(" 选择序号0-6:" );

scanf("%d",&num);

if(num>=0&&num<=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(" 操作完毕,请再次选择! ");

}

else

printf(" 选择错误,请再次选择! ");

}

getch();

return 0;

}

/*创建记录*/

void create()

{

struct student stu;

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

{

printf("Cannot Open File! ");

exit(0);

}

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

printf(" 请输入学号、姓名及成绩(以0结束) ");

scanf("%s",stu.no);

while(strcmp(stu.no,"0"))

{

scanf("%s %d",stu.name,&stu.score);

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

scanf("%s",stu.no);

}

fclose(fp);

}

/*添加记录*/

void append()

{

struct student stu;

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

{

printf(" Cannot Open File!");

exit(0);

}

printf(" 请输入要添加的学号、姓名及成绩 ");

scanf("%s%s%d",stu.no,stu.name,&stu.score);

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

fclose(fp);

}

/*查找记录*/

void search()

{

int k=0;

char nokey[10];

struct student stu;

printf(" 请输入学号:");

scanf("%s",nokey);

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

{

printf(" Cannot Open File!");

exit(0);

}

fseek(fp,1L*sizeof(struct student),0);

while(!feof(fp))

{

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

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

{

printf(" 已查找到,该记录为: ");

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

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

k=1;

}

}

if(!k)

printf(" 文件中无此人的记录。");

fclose(fp);

}

/*修改记录*/

void modify()

{

int k=0;

long position;

char nokey[10];

struct student stu;

printf(" 请输入学号:");

scanf("%s",nokey);

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

{

printf(" Cannot Open File!");

exit(0);

}

fseek(fp,1L*sizeof(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(" 已查找到,该记录为: ");

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

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

printf(" 请输入新的学号、姓名及成绩:");

scanf("%s%s%d",stu.no,stu.name,&stu.score);

fseek(fp,position-1L*sizeof(struct student),SEEK_SET);

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

}

else

printf(" 文件中无此人的记录。");

fclose(fp);

}

/*删除记录*/

void del()

{

int m,k=0;

long position;

char nokey[10];

struct student stu;

printf(" 请输入学号:");

scanf("%s",nokey);

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

{

printf(" Cannot Open File!");

exit(0);

}

fseek(fp,1L*sizeof(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(" 已查找到,该记录为: ");

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

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

printf(" 确实要删除记录,请按1;不删除记录,请按0:");

scanf("%d",&m);

if(m)

{

fseek(fp,position-1L*sizeof(struct student),SEEK_SET);

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

}

}

else

printf(" 文件中无此人的记录。");

fclose(fp);

}

/*显示记录*/

void output()

{

struct student stu;

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

{

printf(" Cannot Open File!");

exit(0);

}

printf(" 文件内容为: ");

fseek(fp,1L*sizeof(struct student),0);

while(!feof(fp))

{

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

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

}

fclose(fp);

}

c语言在管理系统中的应用,C语言应用——学生管理系统的制作相关推荐

  1. 管理系统中计算机应用erp,2018年自考《管理系统中计算机应用》测试题三

    2018年自考<管理系统中计算机应用>测试题三 1.组成中央处理器的是运算器.控制器和(  ). A.CPU                                     B.总 ...

  2. r语言在java中的实现_R语言在现实中的应用

    R语言在现实中的应用有哪些?主要有以下几种 - 1.数据科学 "哈佛商业评论"将数据科学家命名为"21世纪最性感的工作". Glassdoor将其命名为2016 ...

  3. c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析

    说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...

  4. 管理系统中计算机的应用自考资料,自考管理系统中计算机的应用复习资料

    第一章 管理系统中计算机的应用概述 1.信息是对事物运动状态和特征的描述 数据是载荷信息的物理符号 2.信息与数据的关系:两者不可分离又有一定区别. 两者的联系:信息是数据的含义,数据则是信息的具体表 ...

  5. 管理系统中计算机的应用上机学习,自考管理系统中计算机应用上机经验

    自考管理系统中计算机应用上机经验 给各位将要参加管理系统中计算机应用上机考试的同学一点参考: 1.上机考试是管理系统中计算机应用这门课的实践环节,原则上是笔试通过后才能报考,可我在报名时,报名老师说没 ...

  6. 下列有关JAVA语言的叙述中,下列有关Java语言的叙述中,正确的是A.可以有2个以上package语句B.可以有2个以上import语句C.可以...

    下列有关Java语言的叙述中,正确的是A.可以有2个以上package语句B.可以有2个以上import语句C.可以 更多相关问题 (1)流体力学中的基本定理实质上都是( )在流体运动中的具体体现. ...

  7. 学生信息管理系统的价值PHP,php技术对学生管理系统实现的价值研究

    基于php技术的学生管理系统的设计要解决的主要问题就是通过设计切实可行的管理系统来解决学校对学生信息的管理.老师对学生信息的管理.学生对自己信息的核对等问题.本系统是利用netbeans作为前台开发工 ...

  8. 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计

    目录 学生管理系统数据库设计 学生管理系统功能介绍 数据库设计步骤 第1步: 找对象 第2步:找属性 第3步: 找关系 建表原则 第4步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为1张表 ...

  9. 学生管理系统的mysql数据库设计_MySQL 数据库 -- 学生管理系统数据库设计

    MySQL 数据库 -- 学生管理系统数据库设计 目录 学生管理系统数据库设计 学生管理系统功能介绍 数据库设计步骤 第 1 步: 找对象 第 2 步: 找属性 第 3 步: 找关系 建表遵守原则 第 ...

最新文章

  1. ElasticSearch(六) Update API
  2. Swift3.0语言教程查找字符集和子字符串
  3. python导入csv文件-jupyter 导入csv文件方式
  4. ROS学习(四):安装 MoveIt!
  5. 「推荐系统」领域近期有哪些值得读的论文?| 每周论文清单
  6. C语言自定义实现string字符串的算法(附完整源码)
  7. java凌晨12点_java - JAVA如果我在每天中午12点之后安排我的时间表,会发生什么? - SO中文参考 - www.soinside.com...
  8. [vue-element]有阅读过ElementUI的源码吗?
  9. Java 虚拟机 最易理解的 全面解析
  10. Long Way To Go 之 Python 5 (2)
  11. RN Image与ImageBackground
  12. spring boot整合cxf发布和调用webservice
  13. 利用Geotools来转换影像的坐标系[转]
  14. 链家网前端总架构师杨永林:我的8年架构师成长之路
  15. Python eval 函数
  16. C语言通过枚举网卡,API接口可查看man 7 netdevice--获取接口IP地址
  17. APP合规-超范围收集个人信息
  18. 在电信和联通的围攻下,大象中国移动显示出脚步蹒跚迹象
  19. 疯狂!电动汽车科技领域的投资正爆发式增长 | 数据报告
  20. 牛津英语字典pdf下载_除了long time no see,你知道还有这些中式英语也进入了牛津字典吗...

热门文章

  1. Linux常用实用命令
  2. code ro rw zi 编译的一个ARM的程序,编译结果中的一句话
  3. [智力问答] 十个最难的字 你认识几个
  4. 使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)
  5. pandas 中的函数—— .reset_index()
  6. 关于 Intel 8253/8254
  7. 3D数学基础:图形与游戏开发---随笔五
  8. ik查看分词器:request body or source parameter is required/ missing authentication credentials for REST
  9. zcmu1203(逆序对,归并排序)
  10. mysql拼图游戏代码_Java小项目之拼图游戏