
如果是注释一般有:
'版权说明
'文件名
'版本号
'日期
'作者
'模块描述,
描述本文件的内容、功能、内部各部分之间的关系及本文件与其它文件关系等
'修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述
第一章 程序设计的基本概念第一节 C语言的发展历史与特点
第二节 程序与程序设计
第三节 算法与算法的描述
第四节 C语言的上机 *** 作
思考题与习题
第二章 C语言程序设计基础
第一节 C语言的程序结构
第二节 数据类型
第三节 运算符与表达式
思考题与习题
第三章 C程序控制结构
第一节 C程序的三种基本控制结构
第二节 顺序结构
第三节 选择结构
第四节 循环结构
思考题与习题
第四章 数组
第一节 数组与数组元素的概念
第二节 一维数组
第三节 二维数组及多维数组
第四节 字符串与字符数组
思考题与习题
第五章 指针
第一节 指针与指针变量的概念
第二节 指针变量的定义和引用
第三节 指针变量与数组
思考题与习题
第六章 函数
第一节 函数的定义
第二节 函数的嵌套调用
第三节 数组作为函数参数
第四节 指针与函数
第五节 变量的使用范围与存储类别
第六节 不同文件中的函数使用
思考题与习题
第七章 编译预处理
第一节 宏定义
第二节 文件包含
第三节 条件编译
思考题与题
第八章 结构体与共用体
第一节 结构体基础
第二节 结构体数组
第三节 结构体指针
第四节 链表
第五节 位段
第六节 共用体
第七节 枚举类型与自定义类型
思考题与习题
第九章 文件
第一节 文件概述
第二节 文件的打开与关闭
第三节 文件的读/写
第四节 文件的定位
思考题与习题
第十章 程序设计方法
第一节 程序设计的基本概念
第二节 结构化程序设计方法
第三节 程序效率
第四节 程序设计风格
思考题与习题
附录
附录A C语言实验
附录B 标准ABSII码表
附录C C语言中的关键字
附录D 运算符的优先级与结合性
这个也不是很全,但是大体功能有了,你改进一下嘛,我运行过的可以!希望对你有所帮助!
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10 /*定义常量SIZE便于以后的修改*/
struct student /*定义一个结构体数组存放学生的信息*/
{
int number/*学号*/
char name[20]/*名字*/
float score[3]/*分数*/
float average/*平均分*/
}stu[SIZE]
void menu()/*调用菜单函数*/
void write()/*读入信息*/
void save()/*保存stud.dat文件函数*/
void open()/*检查是否正确保存*/
void inturn (struct student c[])/*用于对学生的信息按平均分排序的函数*/
void save2()/*将排序后的信息存入studsort.dat文件中*/
void read()/*读取studsort.dat文件文件中第2 4 6 8 10个学生的信息*/
void main()
{
int choice/*用户选择变量*/
printf("*******************************************************************************\n")
printf("* *\n")
printf("* Hwadee&学生成绩文件管理& Hwadee *\n")
printf("* *\n")
printf("*******************************************************************************\n\n\n")
printf("******************************●●欢迎使用●●*********************************")
system("pause")
while (1)
{
menu()/*调用菜单函数形成 *** 作界面*/
printf("请选择:\t")
scanf("%d", &choice)
if ( choice == 0 )
{
system("cls")
printf("\n\n\t\t\t\t谢谢使用!!!\n\n\t\t\t\t\t\t\t\t指导老师: 梁凯\n\n\t\t\t\t\t\t\t\t 学生:万超\n")
break
}
switch(choice) /*多重选择实现功能不同的功能*/
{
case 1:
write()
break
case 2:
system("cls")
save()
break
case 3:
system("pause")
system("cls")
open()
break
case 4:
system("cls")
printf("排序前的学生信息:\n")
open()
inturn(stu)
save2()
break
case 5:
system("cls")
read()
break
default:
printf("\n无此项功能!\n请重新输入\n")
}
}
}
void menu()
{
printf("\n1*****输入学生信息\t\t2*****将信息存入文件stud.dat中\n")
printf("3*****检查文件数据\t\t4*****将学生信息排序并存入文件studsort.dat中\n")
printf("5*****读取文件studsort.dat中的第 2 4 6 8 10个学生的信息\n")
printf("0*****退出系统\n\n\n")
}
/**********************************************************************\
函数名称:
write
功能描述:
完成将学生信息写入
函数参数:
i stu
返回值:
无
模块历史:
\*********************************************************************/
void write()
{
int i/*计数变量*/
stu[i].average = 0/*初始化结构体成员 average*/
printf("请你输入学生的信息\n")
printf("学号\t姓名\t语文\t数学\t英语\t\n")
for (i=0i<SIZEi++)
{
scanf("%d\t",&stu[i].number)
if (stu[i].number == 0)/*不需输入信息时输入0即可*/
break
scanf("%s\t%f\t%f\t%f",&stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2])
stu[i].average = (stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3/*计算平均成绩*/
}
}
/**********************************************************************\
函数名称:
save
功能描述:
将写入的信息读入文件中
函数参数:
FILE *fp i
返回值:
无
模块历史:
\*********************************************************************/
void save()
{
FILE *fp/*定义文件指针用于向文件读入数据*/
int i
if ((fp=fopen("stud.dat","wb")) == NULL)
{
printf("cannot open file\n")
return
}
for (i=0i<SIZEi++)
if (fwrite(&stu[i],sizeof(struct student),1,fp) != 1)
printf("file write error\n")
fclose(fp)
printf("\n信息保存成功!恭喜!!\n\n")
}
/**********************************************************************\
函数名称:
open
功能描述:
用于检查读入文件的数据是否正确
函数参数:
FILE *cp i
返回值:
无
模块历史:
\*********************************************************************/
void open()
{
int i
FILE *cp
cp = fopen ("stud.dat","rb")
printf("保存在stud.dat文件中的信息:\n\n")
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n")
for (i=0i<SIZEi++)
{
fread(&stu[i],sizeof(struct student),1,cp)
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average )
}
fclose (cp)
}
/**********************************************************************\
函数名称:
inturn
功能描述:
用于对结构体数组中的元素排序
函数参数:
into i,j,k
struct student temp
返回值:
无
模块历史:
\*********************************************************************/
void inturn(struct student m[])
{
int i,j,k/*计数变量*/
struct student temp/*中间变量 类型为结构体*/
for(i=0i<SIZE-1i++) /*运用冒泡排序对结构体数组进行排序*/
for (j=i+1j<SIZEj++)
{
if( m[i].average <m[j].average )
{
temp = m[i]
m[i] = m[j]
m[j] = temp
}
}
printf("\n排序后的学生信息:\n\n")
printf(" 学号\t姓名\t数学\t语文\t英语\t平均分\n")
for (i=0i<SIZEi++)
{
printf("第%d名 %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",i+1, stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average )
}/*输出排序后的学生信息*/
}
/**********************************************************************\
函数名称:
save2
功能描述:
将排序后的学生信息读入到另外的文件中
函数参数:
FILE *mp
i
返回值:
无
模块历史:
\*********************************************************************/
void save2()
{
FILE *mp
int i
if ((mp=fopen("studsort.dat","wb"))==NULL)
{
printf("cannot open file\n")
return
}
for (i=0i<SIZEi++)
if (fwrite(&stu[i], sizeof(struct student), 1, mp) != 1)
printf("file write error\n")
fclose(mp)/*读取完毕关闭文件*/
}
/**********************************************************************\
函数名称:
read
功能描述:
读出另外文件中的信息
函数参数:
FILE *tp
i
返回值:
无
模块历史:
\*********************************************************************/
void read()
{
int i=1
FILE *tp
tp = fopen ("studsort.dat", "rb" )
printf("studsort.dat文件中偶数号码学生的信息如下:\n\n")
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n")
for (i = 1i<SIZEi += 2)
{
fseek(tp,i*sizeof(struct student),0)/*fseek函数可以根据用户所需对文件开头的偏移量来读取文件的数据。
k*sizeof(struct student)是指将位置指针移到当前位置k个字节处*/
fread(&stu[i],sizeof(struct student),1,tp)
/*注意:必须使用fseek函数定位后才能根据自己所需读出数据,但是只用fseek函数不用fread,
只是把数据打印到屏幕上而并没有从文件中读取。这是一个常见性问题*/
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average )
}
fclose (tp)/*读取完毕关闭文件*/
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)