C语言综合应用实例
C语言实战105例

实例69 按钮制作 190
实例70 三维视图制作 193
实例71 红旗图案制作 194
实例72 火焰动画制作 196
实例73 模拟水纹扩散 199
实例74 彩色的Photo Frame 201
实例75 火箭发射演示 203
第6部分 系统篇
实例51 简易漏洞扫描器 146
实例52 文件病毒检测程序 149
实例53 监测内存泄露与溢出 150
实例54 实现traceroute命令 152
实例55 实现ping程序功能 154
实例56 获取Linux本机IP地址 157
实例57 实现扩展内存的访问 161
实例58 随机加密程序 164
实例59 MD5加密程序 165
实例60 RSA加密实例 168
第5部分 图形篇
实例61 制作表格 172
实例62 用画线函数作出的图案 174
实例63 多样的椭圆 176
实例64 多变的立方体 177
实例65 简易时钟 178
实例66 跳动的小球 181
实例67 用柱状图表示学生成绩各分数段比率 183
实例76 恢复内存文本 208
实例77 挽救磁盘数据 210
实例78 建立和隐藏多个PRI DOS分区 213
实例79 简单的DOS下的中断服务程序 216
实例80 文件名分析程序 219
实例81 鼠标中断处理 222
实例82 实现磁盘数据的整体加密 224
实例83 揭开CMOS密码 227
实例9 模拟银行常用打印程序 22
实例10 使用一维数组统计选票 26
C语言综合应用实例

C 语言综合应用实例#include<stdio.h> /*I/O 函数*/#include<stdlib.h> /* 其它说明*/#include<string.h> /* 字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数*/#define LEN 15 /* 学号和姓名最大字符数, 实际请更改*/ #define N 100 /* 最大学生人数, 实际请更改*/struct record /* 结构体*/{char code[LEN+1]; /* 学号*/char name[LEN+1]; /* 姓名*/int age; /* 年龄*/char sex[3]; /* 性别*/char time[LEN+1]; /* 出生年月*/char add[30]; /* 家庭地址*/char tel[LEN+1]; /* 电话号码*/char mail[30]; /* 电子邮件地址*/}stu[N];int k=1,n,m; /* 定义全局变量*/void readfile();/* 函数声明*/ void seek(); void modify();void insert();void del();void display();void save();void menu();int main() {while(k) menu();system("pause");return 0;}void help(){printf("\n0. 欢迎使用系统帮助!\n");printf("\n1.进入系统后, 先刷新学生信息, 再查询;\n");printf("\n2. 按照菜单提示键入数字代号;\n"); printf("\n3. 增加学生信息后, 切记保存按7;\n"); printf("\n4. 谢谢您的使用!\n");}void readfile()/* 建立信息*/{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL) {printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8){i++;i=i;}fclose(fp);n=i;printf(" 录入完毕!\n");void seek() /* 查找*/ {int i,item,flag;char s1[21]; /* 以姓名和学号最长长度+1为准*/ printf(" ----------------- \n");printf(" ----- 1. 按学号查询 - \n");printf(" ----- 2. 按姓名查询 - \n");printf(" ----- 3. 退出本菜单 - \n");printf(" ----------------- \n");while(1){printf(" 请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item)case 1: printf(" 请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf(" 学生学号学生姓名年龄性别出生年月地址E-mail\n");电话printf(" ------------------------------------------------------------------- \n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0) case 2:printf(" 该学号不存在!\n"); break;printf(" 请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf(" 学生学号学生姓名年龄性别出生年月地址E-mail\n");电话printf(" ------------------------------------------------------------------- \n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf(" 该姓名不存在!\n"); break;case 3:return;default:printf(" 请在1-3 之间选择\n");}}void modify() /* 修改信息*/{int i,item,num;char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1 为准*/ printf(" 请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0) /* 比较字符串是否相等*/num=i;printf(" ----------------- \n");printf("1. 修改姓名\n");printf("2. 修改年龄\n");printf("3. 修改性别\n");printf("4. 修改出生年月\n"); printf("5. 修改地址\n"); printf("6. 修改电话号码\n");printf("7.修改E-mail 地址\n");printf("8. 退出本菜单\n");printf("------------------------ \n");while(1){printf(" 请选择子菜单编号:"); scanf("%d",&item);switch(item){case 1:printf(" 请输入新的姓名:\n");scanf("%s",s2);strcpy(stu[num].name,s2); break;case 2: printf(" 请输入新的年龄:\n"); scanf("%d",&stu[num].age);break; case 3:printf(" 请输入新的性别:\n"); scanf("%s",sex1); strcpy(stu[num].sex,sex1); break; case 4:printf(" 请输入新的出生年月:\n");scanf("%s",s2);strcpy(stu[num].time,s2); break; case 5:printf(" 请输入新的地址:\n"); scanf("%s",s2); strcpy(stu[num].add,s2); break; case 6: printf(" 请输入新的电话号码:\n");scanf("%s",s2);strcpy(stu[num].tel,s2); break;case 7:printf(" 请输入新的E-mail 地址:\n");scanf("%s",s2);strcpy(stu[num].mail,s2); break;case 8:return;default:printf(" 请在1-8 之间选择\n");}}}void sort()/* 按学号排序*/{int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;i++) {for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) { strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add); strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j].add,temp); strcpy(temp,stu[j-1].tel); strcpy(stu[j-1].tel,stu[j].tel); strcpy(stu[j].tel,temp); strcpy(temp,stu[j-1].mail); strcpy(stu[j-1].mail,stu[j].mail); strcpy(stu[j].mail,temp); p=&stu[j-1].age; q=&stu[j].age;s=*q;*q=*p;p=s;}void insert() /* 插入函数*/{int i=n,j,flag;printf(" 请输入待增加的学生数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf(" 请输入第%d 个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++) if(strcmp(stu[i].code,stu[j].code)==0) {printf(" 已有该学号, 请检查后重新录入!\n");flag=1;break; /* 如有重复立即退出该层循环, 提高判断速度*/}}printf(" 请输入第%d 个学生的姓名:\n",i+1); scanf("%s",stu[i].name);printf(" 请输入第%d 个学生的年龄:\n",i+1); scanf("%d",&stu[i].age); printf(" 请输入第%d 个学生的性别:\n",i+1); scanf("%s",stu[i].sex); printf(" 请输入第%d个学生的出生年月:(格式:年.月)\n",i+1);scanf("%s",stu[i].time);printf(" 请输入第%d 个学生的地址:\n",i+1); scanf("%s",stu[i].add); printf(" 请输入第%d 个学生的电话:\n",i+1); scanf("%s",stu[i].tel);printf(" 请输入第%d 个学生的E-mail:\n",i+1); scanf("%s",stu[i].mail);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf(" 录入完毕!\n\n");sort();void del() {int i,j,flag=0;char s1[LEN+1];printf(" 请输入要删除学生的学号:\n"); scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf(" 该学号不存在!\n");if(flag==1)printf(" 删除成功, 显示结果请选择菜单6\n");n--;}}void display(){int i;printf(" 所有学生的信息为:\n");printf(" 学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf(" ------------------------------------------------------------------- \n");for(i=0;i<n;i++){printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}void save(){int i;FILE *fp;fp=fopen("student.txt","w"); /* 写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}fclose(fp);}void menu()/* 界面*/int num;printf(" \n\n 学生信息管理系统\n\n");printf(" ***************** \n\n");printf(" * 制作人: * \n \n");printf(" ***************** \n\n");printf(" ********************* 系统功能菜单************************ \n"); printf(" 友情提醒:查询前请先刷新系统!\n");printf(" \n");printf(" ********************************************* \n");printf(" * 0. 系统帮助及说明* * 1. 刷新学生信息* \n");printf(" ********************************************* \n");printf(" * 2. 查询学生信息* * 3. 修改学生信息* \n");printf(" ********************************************* \n");printf(" * 4. 增加学生信息* * 5. 按学号删除信息* \n");printf(" ********************************************* \n");printf(" * 6. 显示当前信息* * 7. 保存当前学生信息* \n");printf(" ********************** ********************** \n"); printf(" 8. 退出系统\n"); printf(" **********************\n");printf("\n");printf(" 请选择菜单编号:");scanf("%d",&num);switch(num){case 0:help();break;case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf(" 请在0-8 之间选择\n");}}二、学生成绩管理编写一个菜单驱动的学生成绩管理程序。
c语言程序设计及应用实例

c语言程序设计及应用实例(最新版)目录一、C 语言简介1.C 语言的发展历史2.C 语言的特点二、C 语言的基本语法1.数据类型2.运算符与表达式3.控制结构4.函数5.指针与内存管理6.数组、字符串与结构体三、C 语言程序设计实例1.计算器实例2.图书管理系统实例3.简易文本编辑器实例四、C 语言的应用领域1.系统编程2.嵌入式系统3.游戏开发正文一、C 语言简介C 语言是一种通用的高级编程语言,由 Dennis Ritchie 在 20 世纪 70 年代初在贝尔实验室开发。
C 语言的设计目标是为了简化 UNIX 操作系统的开发过程,提供一种能以简单、清晰、高效的方式编写操作系统及其应用程序的语言。
C 语言具有以下特点:1.语法简洁:C 语言的语法简单易懂,容易上手。
2.高性能:C 语言的执行速度接近汇编语言,可以满足对性能要求较高的应用程序的开发。
3.可移植性:C 语言程序可以在不同的硬件平台和操作系统上运行,只需少量或不需要修改。
4.强大的控制结构:C 语言提供了丰富的控制结构,可以实现各种复杂的逻辑控制。
二、C 语言的基本语法C 语言的基本语法包括数据类型、运算符与表达式、控制结构、函数、指针与内存管理、数组、字符串与结构体等。
1.数据类型:C 语言的数据类型包括整型、浮点型、字符型等基本数据类型,以及数组、指针、结构体、联合体等复合数据类型。
2.运算符与表达式:C 语言提供了各种算术、逻辑、位运算等运算符,以及条件表达式、逻辑表达式等。
3.控制结构:C 语言提供了顺序、分支、循环等控制结构,用于实现复杂的程序逻辑。
4.函数:C 语言中的函数是一段完成特定功能的代码,可以实现代码的模块化、重用。
5.指针与内存管理:C 语言提供了指针的概念,允许程序员直接操作内存,便于实现高效的数据结构和算法。
6.数组、字符串与结构体:C 语言提供了数组、字符串和结构体等数据结构,用于存储和管理数据。
三、C 语言程序设计实例以下是几个 C 语言程序设计的实例:1.计算器实例:实现一个简单的计算器,可以进行加、减、乘、除等运算。
c语言案例100例

c语言案例100例C语言是一种广泛应用于系统软件开发和嵌入式系统编程的高级编程语言。
它以其简洁、高效和可移植性而闻名,因此被广泛用于各种应用领域。
本文将为您介绍100个C语言案例,旨在帮助您更好地理解和运用C语言。
案例一:Hello World```c#include <stdio.h>int main() {printf("Hello, World!");return 0;}```这是C语言中最简单的程序,它会输出"Hello, World!"。
案例二:求和```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```这个程序会要求用户输入两个整数,然后计算并输出它们的和。
案例三:判断奇偶数```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数", num);} else {printf("%d是奇数", num);}return 0;}```这个程序会要求用户输入一个整数,然后判断它是奇数还是偶数,并输出相应的结果。
......(继续介绍更多的案例)通过以上100个C语言案例,您可以系统地学习和掌握C语言的各个方面。
每个案例都涉及不同的主题,从简单的Hello World程序到复杂的数据结构和算法,涵盖了C语言中的各种常见用法和技巧。
c语言程序设计应用实例

c语言程序设计应用实例C语言程序设计应用实例在计算机科学领域中,C语言是一种广泛应用的编程语言。
它简洁高效,可移植性强,适用于各种应用开发。
本文将介绍几个C语言程序设计的实际应用实例,展示C语言的强大功能和灵活性。
一、学生成绩管理系统学生成绩管理系统是学校教学管理的重要组成部分。
通过C语言程序设计,可以实现一个简单而实用的学生成绩管理系统。
该系统可以实现学生信息的录入、查询、修改和删除等功能。
通过定义结构体来存储学生信息,并利用文件操作实现数据的读取和存储。
通过编写相应的函数,可以实现对学生信息的增删改查操作。
这样的学生成绩管理系统可以大大提高学校教学工作的效率和准确性。
二、图书管理系统图书管理系统是图书馆管理的基础工具。
使用C语言程序设计,可以开发出一个功能完善的图书管理系统。
该系统可以实现图书信息的录入、查询、借阅和归还等功能。
通过定义结构体来存储图书信息,并利用链表来实现数据的组织和管理。
通过编写相应的函数,可以实现对图书信息的操作。
这样的图书管理系统可以提高图书馆的管理效率和服务质量。
三、简单计算器计算器是人们日常生活中常用的工具之一。
通过C语言程序设计,可以实现一个简单而实用的计算器。
该计算器可以进行基本的加减乘除运算,并支持括号的使用。
通过编写相应的函数,可以实现对输入表达式的解析和计算。
这样的计算器可以满足人们日常生活中的简单计算需求。
四、文件加密解密工具文件加密解密工具是保护个人隐私的重要手段。
通过C语言程序设计,可以实现一个简单而安全的文件加密解密工具。
该工具可以对文件进行加密和解密操作,并通过用户提供的密钥来保证数据的安全性。
通过编写相应的函数和算法,可以实现对文件内容的加密和解密。
这样的文件加密解密工具可以保护个人隐私和重要数据的安全。
五、网络聊天室网络聊天室是人们交流和社交的重要平台。
通过C语言程序设计,可以实现一个简单而实用的网络聊天室。
该聊天室可以实现用户的注册、登录、发送消息和接收消息等功能。
C语言技术的实际应用场景及应用案例解析

C语言技术的实际应用场景及应用案例解析在当今信息技术高速发展的时代中,C语言作为一种广泛应用的编程语言,被广泛用于软件开发和嵌入式系统等领域。
本文将探讨C语言技术的实际应用场景,并通过解析一些应用案例来更加深入地理解C语言在各个领域的重要性和优势。
第一节:软件开发领域中的C语言应用在软件开发领域,C语言凭借其高效的性能和可移植性成为首选的编程语言之一。
下面我们将讨论一些C语言在软件开发中的应用场景和案例。
1. 操作系统开发C语言广泛应用于操作系统的开发中。
例如,Unix、Linux等操作系统的内核和设备驱动程序都是用C语言编写的。
C语言的底层访问能力和强大的指针操作使得它在开发高性能和高效率的操作系统方面占有重要地位。
2. 编译器和解释器开发C语言本身就是一种编译型语言,因此使用C语言开发编译器和解释器具有很高的可行性。
例如,GCC编译器就是用C语言编写的,它能够将C语言代码转换成可执行文件。
3. 数据库系统开发许多数据库系统,如MySQL、PostgreSQL等,都是使用C语言进行开发的。
C语言的高效和对底层资源的直接访问能力,使其成为实现高性能数据库系统的理想选择。
第二节:嵌入式系统中的C语言应用在嵌入式系统领域,C语言凭借其简洁的语法和可移植性,成为最流行的编程语言之一。
下面我们将探讨一些C语言在嵌入式系统中的应用场景和案例。
1. 微控制器开发很多微控制器和单片机的开发都使用C语言。
C语言的特性使得程序员可以方便地控制硬件资源,实现各种嵌入式系统的功能。
例如,Arduino开发板上的程序就是用C语言编写的。
2. 嵌入式系统驱动程序开发C语言被广泛应用于嵌入式系统的驱动程序开发中。
驱动程序负责控制硬件设备的底层操作,与硬件进行交互。
C语言通过指针操作和底层访问能力,使得编写驱动程序变得更加灵活和高效。
3. 嵌入式系统中的实时任务许多嵌入式系统需要同时处理多个实时任务。
C语言提供了多线程和多进程的支持,可以很方便地实现实时任务的调度和并发执行。
C语言技术的实际应用案例及使用技巧

C语言技术的实际应用案例及使用技巧C语言是一门广泛应用于计算机科学领域的编程语言,具有高效、灵活和可移植等特点。
它被广泛应用于操作系统、嵌入式系统、游戏开发等领域。
本文将介绍一些C语言技术的实际应用案例,并分享一些使用技巧。
一、嵌入式系统开发嵌入式系统是指嵌入到其他设备或系统中的计算机系统,它通常具有实时性要求和资源受限的特点。
C语言在嵌入式系统开发中得到了广泛应用。
例如,我们可以使用C语言编写驱动程序来控制硬件设备,如传感器、显示屏等。
此外,C语言还可以用于编写嵌入式操作系统,如uC/OS等。
在嵌入式系统开发中,我们需要注意内存管理和低功耗优化等方面的技巧,以确保系统的稳定性和效率。
二、操作系统开发C语言是操作系统开发的主要语言之一。
操作系统是计算机系统中的核心软件,负责管理和控制计算机硬件资源。
C语言提供了对底层硬件的访问和控制的能力,使得开发人员可以方便地编写操作系统的各个模块。
例如,我们可以使用C语言编写内核模块,负责处理中断、调度任务等。
此外,C语言还可以用于编写文件系统、驱动程序等。
三、游戏开发C语言在游戏开发中也有着重要的应用。
游戏是计算机图形学和计算机动画的重要应用领域,而C语言是图形学和动画编程的主要语言之一。
我们可以使用C语言编写游戏引擎,处理游戏逻辑、图形渲染等。
此外,C语言还可以用于编写游戏的物理引擎、碰撞检测等关键模块。
四、使用技巧1. 指针的灵活运用指针是C语言中的重要概念,灵活运用指针可以提高程序的效率和可读性。
例如,我们可以使用指针传递参数,减少函数调用时的内存开销。
此外,指针还可以用于动态内存分配和管理,避免内存泄漏和溢出的问题。
2. 优化算法和数据结构在C语言编程中,优化算法和数据结构是提高程序性能的关键。
例如,我们可以使用二分查找代替线性查找,以提高搜索效率。
此外,选择合适的数据结构,如数组、链表、树等,可以提高程序的存储和访问效率。
3. 错误处理和调试技巧在C语言编程中,错误处理和调试是必不可少的技巧。
c语言应用实例

c语言应用实例1. 实现一个简单的计算器#include <stdio.h>int main() {char operator;double num1, num2;printf("请输入一个运算符(+, -, *, /):");scanf("%c", &operator);printf("请输入两个数字:");scanf("%lf %lf", &num1, &num2);switch (operator) {case '+':printf("%.2lf + %.2lf = %.2lf", num1, num2, num1 + num2);break;case '-':printf("%.2lf - %.2lf = %.2lf", num1, num2, num1 - num2);break;case '*':printf("%.2lf * %.2lf = %.2lf", num1, num2, num1 * num2);break;case '/':printf("%.2lf / %.2lf = %.2lf", num1, num2, num1 / num2);break;default:printf("错误!运算符无效。
");}return 0;}2. 实现一个学生成绩管理系统#include <stdio.h>#include <stdlib.h>#include <string.h>struct student {int id;char name[20];double score;};int main() {int n;printf("请输入学生数量:");scanf("%d", &n);struct student *students = (struct student*) malloc(n * sizeof(struct student));for (int i = 0; i < n; i++) {printf("请输入第%d 个学生的ID, 姓名和成绩:", i + 1);scanf("%d%s%lf", &students[i].id, students[i].name,&students[i].score);}printf("\n");printf("学生信息如下:\n");printf("ID\t姓名\t成绩\n");for (int i = 0; i < n; i++) {printf("%d\t%s\t%.2lf\n", students[i].id, students[i].name,students[i].score);}free(students);return 0;}3. 实现一个简单的加密/解密程序#include <stdio.h>#include <stdlib.h>#include <string.h>int main() {char str[100];printf("请输入需要加密/解密的字符串:");scanf("%s", str);int len = strlen(str);for (int i = 0; i < len; i++) {str[i] ^= 32;}printf("加密/解密结果为:%s", str);return 0;}4. 实现一个简单的文件操作程序#include <stdio.h>#include <stdlib.h>int main() {FILE *fp;char str[100];fp = fopen("test.txt", "w");if (fp == NULL) {printf("文件打开失败!");exit(1);}printf("请输入内容:");fgets(str, 100, stdin);fputs(str, fp);fclose(fp);fp = fopen("test.txt", "r");if (fp == NULL) {printf("文件打开失败!");exit(1);}printf("文件内容为:");fgets(str, 100, fp);printf("%s", str);fclose(fp);return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言综合应用实例 Document number:NOCG-YUNOO-BUYTT-UU986-1986UTC语言综合应用实例一、学生信息管理系统#include<>/*I/O函数*/#include<>/*其它说明*/#include<>/*字符串函数*/#defineBUFLEN100/*缓冲区最大字符数*/#defineLEN15/*学号和姓名最大字符数,实际请更改*/#defineN100/*最大学生人数,实际请更改*/structrecord/*结构体*/{charcode[LEN+1];/*学号*/charname[LEN+1];/*姓名*/intage;/*年龄*/charsex[3];/*性别*/chartime[LEN+1];/*出生年月*/charadd[30];/*家庭地址*/chartel[LEN+1];/*电话号码*/charmail[30];/*电子邮件地址*/}stu[N];intk=1,n,m;/*定义全局变量*/voidreadfile();/*函数声明*/voidseek();voidmodify();voidinsert();voiddel();voiddisplay();voidsave();voidmenu();intmain(){while(k)menu();system("pause");return0;}voidhelp(){printf("\n0.欢迎使用系统帮助!\n");printf("\n1.进入系统后,先刷新学生信息,再查询;\n");printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.增加学生信息后,切记保存按7;\n");printf("\n4.谢谢您的使用!\n");}voidreadfile()/*建立信息*/{char*p="";FILE*fp;inti=0;if((fp=fopen("","r"))==NULL){printf("Openfile%serror!Strikeanykeytoexit!",p);system("pause");exit(0);}while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8){i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");}voidseek()/*查找*/{inti,item,flag;chars1[21];/*以姓名和学号最长长度+1为准*/printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("--------------------------------------------------------------------\n");printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该学号不存在!\n");break;case2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("--------------------------------------------------------------------\n");printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该姓名不存在!\n");break;case3:return;default:printf("请在1-3之间选择\n");}}}voidmodify()/*修改信息*/{inti,item,num;charsex1[3],s1[LEN+1],s2[LEN+1];/*以姓名和学号最长长度+1为准*/printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0)/*比较字符串是否相等*/num=i;printf("------------------\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改电话号码\n"); printf("7.修改E-mail地址\n"); printf("8.退出本菜单\n");printf("------------------\n");while(1){printf("请选择子菜单编号:"); scanf("%d",&item);switch(item){case1:printf("请输入新的姓名:\n"); scanf("%s",s2);strcpy(stu[num].name,s2);break; case2:printf("请输入新的年龄:\n"); scanf("%d",&stu[num].age);break; case3:printf("请输入新的性别:\n"); scanf("%s",sex1);strcpy(stu[num].sex,sex1);break; case4:printf("请输入新的出生年月:\n"); scanf("%s",s2);strcpy(stu[num].time,s2);break; case5:printf("请输入新的地址:\n"); scanf("%s",s2);strcpy(stu[num].add,s2);break; case6:printf("请输入新的电话号码:\n"); scanf("%s",s2);strcpy(stu[num].tel,s2);break; case7:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2);break;case8:return;default:printf("请在1-8之间选择\n"); }}}voidsort()/*按学号排序*/{inti,j,*p,*q,s;chartemp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) {strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add);strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail); strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}voidinsert()/*插入函数*/{inti=n,j,flag;printf("请输入待增加的学生数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第%d个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0){printf("已有该学号,请检查后重新录入!\n");flag=1;break;/*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第%d个学生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第%d个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第%d个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第%d个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time);printf("请输入第%d个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第%d个学生的电话:\n",i+1); scanf("%s",stu[i].tel);printf("请输入第%d个学生的E-mail:\n",i+1); scanf("%s",stu[i].mail);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}voiddel(){inti,j,flag=0;chars1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n"); n--;}}voiddisplay(){inti;printf("所有学生的信息为:\n");printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("--------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%6s%7s%5d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}}voidsave(){inti;FILE*fp;fp=fopen("","w");/*写入*/for(i=0;i<n;i++){fprintf(fp,"%s%s%d%s%s%s%s%s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}fclose(fp);}voidmenu()/*界面*/{intnum;printf("\n\n学生信息管理系统\n\n");printf("*****************\n\n");printf("*制作人:*\n\n");printf("*****************\n\n");printf("*********************系统功能菜单************************\n"); printf("友情提醒:查询前请先刷新系统!\n");printf("--------------------------------------------\n");printf("*********************************************\n");printf("*0.系统帮助及说明**1.刷新学生信息*\n");printf("*********************************************\n");printf("*2.查询学生信息**3.修改学生信息*\n");printf("*********************************************\n");printf("*4.增加学生信息**5.按学号删除信息*\n");printf("*********************************************\n");printf("*6.显示当前信息**7.保存当前学生信息*\n");printf("********************************************\n");printf("*8.退出系统*\n");printf("**********************\n");printf("--------------------------------------------\n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case0:help();break;case1:readfile();break;case2:seek();break;case3:modify();break;case4:insert();break;case5:del();break;case6:display();break;case7:save();break;case8:k=0;break;default:printf("请在0-8之间选择\n");}}二、学生成绩管理编写一个菜单驱动的学生成绩管理程序。