四、详细设计
该部分主要包括:数据结构设计、函数设计(包括函数原型、算法思想、流程描述)、代码设计及程序运行结果显示。
(一) 学生成绩数据结构设计
#include
int no;
char name[30]; float cscore; long a;
};struct stu s[100];
(二) 函数设计
1. 主函数
main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。 2. 其他各功能函数
(1) 学生成绩信息录入函数void input() 算法思想:
①依次录入结构体数组中所包含的各个成员;
②直到输入的结构体成员中信息全部为0,数据输入结束; ③返回实际录入的学生成绩信息数。
(2) 将学生成绩信息输出为void output() 算法思想:
①定义结构体变量的指针变量;
②输出所输入的全部信息,若不能输出信息给出提示信息; ③将文件中的信息依次读出,最后结构体的指针为NULL。
(3)从文件中修改学生成绩信息void modify() 算法思想:
①定义指向结构体变量的指针和指向文件的指针; ②修改方式分为两种(学号和姓名),选择是给出相应的信息; ③将修改后的信息保存,并提示。
3. 流程描述 (1)菜单函数
6
int fun() { }
int n;
system(\
printf(\ 成绩记录薄\printf(\for(i=0;i<33;i++) printf(\printf(\
printf(\ ************菜单*************\\n\printf(\、创建学生的信息! \\t*\\n\printf(\、输出所有学生的信息! \\t*\\n\printf(\、修改成绩! \\t*\\n\printf(\、查询! \\t*\\n\printf(\、显示成绩分段的学生信息!\\t*\\n\printf(\、学生成绩排名! \\t*\\n\printf(\、退出成绩记录薄! \\t*\\n\printf(\ for(i=0;i<33;i++) printf(\ printf(\
printf(\请输入选项:\scanf(\return n;
(2) 学生成绩信息录入函数
void input()
{ system(\i=0; fp=fopen(\ printf(\请以0作为输入学生学号信息的结束!\\n\ do { printf(\输入学生的学号:\ scanf(\ printf(\输入学生的姓名:\ scanf(\ printf(\输入学生的C语言成绩:\ scanf(\ printf(\输入添加成绩的时间:\ scanf(\ if(s[i].no!=0)
7
fprintf(fp,\ %-4s %.1f %ld\\n\ }while(s[i].no!=0); fclose(fp); }
void output() //学生全部信息输出 { if((fp=fopen(\ {
printf(\ }
printf(\全部的学生信息:\\n\ k=0;
while(fscanf(fp,\ {
printf(\k++; } fclose(fp); }
(3)学生信息输出函数
void output() { if((fp=fopen(\ {
printf(\ }
printf(\全部的学生信息:\\n\ k=0;
while(fscanf(fp,\ {
printf(\k++; } fclose(fp); }
(4)修改学生信息函数 void modify() { char st[30]; int x,num;
8
float nu; long h; k=0; system(\ if((fp=fopen(\ {
printf(\return; }
while(fscanf(fp,\ { k++; } fclose(fp); printf(\输入1表示用学号修改,输入2表示用姓名修改!请选择:\\n\ scanf(\ if(x==1) { printf(\请输入修改成绩人的学号:\ for(i=0;i 9 if(strcmp(s[i].name,st)==0) { printf(\请输入修改的成绩:\\n\ scanf(\ s[i].cscore=nu; printf(\请输入修改成绩的时间:\\n\ scanf(\ s[i].a=h; fp=fopen(\ for(i=0;i printf(\没有找到该生的信息!\\n\return; } (5) 代码设计和执行结果 1. 头文件 Struct stu { int no;/*学号*/ char name[30]; /*姓名*/ float cscore; /*成绩*/ long a; /*时间*/ };struct stu s[100]; /******以下是函数原型*******/ void input() /*输入记录*/ void output()/*输出记录*/ void modify()/*修改记录*/ 2.源程序代码与运行结果 10