资源描述
内蒙古科技大学课程设计说明书
内蒙古科技大学
本科生课程设计说明书
题 目:C语言课程设计
—— 学生信息管理系统
学生姓名:
学 号:
专 业:
班 级:
指导教师:
日 期:
28
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
学生信息管理系统
指导教师
时间
一、教学要求
1. 巩固和加深学生对C语言课程的基本知识的理解和掌握
2. 掌握C语言编程和程序调试的基本技能
3. 利用C语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
某班学生基本信息管理,包括以下功能:
v 从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里
v 具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)
v 具有插入、修改和删除信息的功能
v 具有输出文件数据信息的功能
三、设计要求及成果
1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2. 写出详细设计说明(至少包括功能实现分析和模块流程图)
3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)
4. 设计完成的软件要便于操作和使用
5. 设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1. 根据平时上机考勤、表现和进度,教师将每天点名和检查
2. 根据课程设计完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六、建议参考资料
1.《C语言程序设计》,谭浩强,清华大学出版社
2.《C语言程序设计课程设计》,刘振安,机械工业出版社
目 录
内蒙古科技大学课程设计任务书 I
目 录 II
第一章 需求分析 3
1.1 引言 3
1.2 任务概述 3
1.3 数据描述 3
1.4 功能需求 3
1.5 性能需求 4
1.6 运行需求 4
1.7 任务计划 4
第二章 概要设计 4
2.1 总体设计 4
2.2 数据类型设计(或数据结构设计) 6
2.3 接口设计 //函数声明 6
2.4 运行界面设计 7
第三章 详细设计 8
3.1 输入模块设计 8
3.2 输出模块设计 8
3.3 查找模块设计 9
3.4 排序模块设计 10
3.5 保存及读取模块设计 10
第四章 测试分析 12
4.1 测试程序执行情况 12
4.2 出现的问题和解决的方法 15
第五章 用户手册(可选) 16
5.1 使用说明 16
5.2 运行说明 16
第六章 课程设计总结 17
附录:程序代码 18
参考文献 28
致谢 28
第一章 需求分析
1.1 引言
学生基本信息管理系统
1.2 任务概述
1、建立学生信息,信息至少包含学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话地址等;
2、能够提供新建、浏览、查找、修改和删除通讯录信息的功能;
3、能够提供安不同方式查询的功能;如按姓名或电话等查询;
1.3 数据描述
struct student
{
char NO[20];
char name[20];
int age;
char sex[3]; /*'F'表示性别男,'M'表示性别女*/
char birthday[10];
char address[30];
char phone[20];
char e_mail[20];
struct student *next; //下个结点
};
1.4 功能需求
1、输入功能:一次可以完成自定义学生人数的学生信息记录的输入。
2、删除功能:对指定学生的信息进行删除。
3、修改功能:对指定学生的信息进行修改。
4、查询功能:选择某种方式并输入该信息查询符合条件的学生信息。
5、排序功能:以英语课程的分数为依据对学生信息进行排序。
6、显示功能:将以上功能操作后的学生信息显示出来。
7、退出主菜单。
1.5 性能需求
1、输入功能:一次可以完成自定义学生人数的学生信息记录的输入。
2、删除功能:对指定学生的信息进行删除。
3、修改功能:对指定学生的信息进行修改。
4、查询功能:选择某种方式并输入该信息查询符合条件的学生信息。
5、排序功能:以英语课程的分数为依据对学生信息进行排序。
6、显示功能:将以上功能操作后的学生信息显示出来。
7、退出主菜单。
1.6 运行需求
1、从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里。
2、具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)。
3、具有插入、修改和删除信息的功能。
4、具有输出文件数据信息的功能。
1.7 任务计划
第二章 概要设计
2.1 总体设计
总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增加新的功能模块。系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。
2、输入要删除的学生的编号,删除学生信息。
1、输入学生的信息: 学生姓名,学号,性别年龄,出生日期,电话
菜单:
1. 新增学生信息
2. 删除学生信息
3. 导入学生信息
4. 学生信息搜索
5. 学生信息保存
6. 退出
5、保存学生信息:提示保存成功
4、输入你要查找你学生姓名
3、输出学生的学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话
6、退出系统
学生管理系统
功能模块图
2.2 数据类型设计(或数据结构设计)
struct student
{
char NO[20];
char name[20];
int age;
char sex[3]; /*'F'表示性别男,'M'表示性别女*/
char birthday[10];
char address[30];
char phone[20];
char e_mail[20];
struct student *next; //下个结点
};
2.3 接口设计 //函数声明
表2.1:函数列表
函数名
函数格式 //即函数首部
函数功能
void show_menu();
void
显示菜单
void menu();
void
执行菜单
void creat_stu();
void
建立链表
void insert_stu();
void
学生信息录入
void print_stu();
void
学生信息浏览
void search_NO();
void
以学号方式查询信息
void search_name();
void
以姓名方式查询信息
void arrage_stu();
void
排序
void del_stu();
void
删除学生信息
void revise_stu();
void
修改学生信息
void save();
void
保存信息
2.4 运行界面设计
主菜单模块
采用switch()函数从键盘选择相应菜单的对应功能。
switch(c)
{
getchar();
case 1:insert_stu();break; //学生信息录入
case 2:print_stu();break; //学生信息浏览
case 3:search_NO(); break; //以学号方式查询信息
case 4:search_name(); break; //以姓名方式查询信息
case 5:del_stu(); break; //删除学生信息
case 6:revise_stu(); break; //修改学生信息
case 7:arrage_stu();break; //保存信息
case 0:exit(0); //退出
}
第三章 详细设计
3.1 输入模块设计
数据插入模块
采用scanf( )函数输入新联系人信息插入至结构数组中。
PF("\t\t输入学生学号:\t");
scanf("%s",p1->NO); //学号
PF("\t\t输入学生姓名:\t");
scanf("%s",p1->name); //姓名
PF("\t\t输入学生年龄:\t");
scanf("%d",&p1->age); //年龄
PF("\t\t输入学生性别:\t");
scanf("%s",p1->sex); //性别
PF("\t\t输入学生出生年月:\t");
scanf("%s",p1->birthday); //出生年月
PF("\t\t输入学生地址:\t");
scanf("%s",p1->address); //地址
PF("\t\t输入学生电话:\t");
scanf("%s",p1->phone); //电话
PF("\t\t输入学生E-mail:\t");
scanf("%s",p1->e_mail); //E-mail
n++;
3.2 输出模块设计
数据浏览模块
采用分屏显示,每屏3条记录。用fread或fscanf读文件,输出结果。
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
PF("※※※※※※※※※※※※※※※※※※学生信息浏览※※※※※※※※※※※※※※※※※※\n");
PF("\t\t学生学号:\t%s\n",p->NO);
PF("\t\t学生姓名:\t%s\n",p->name);
PF("\t\t学生年龄:\t%d\n",p->age);
PF("\t\t学生性别:\t%s\n",p->sex);
PF("\t\t学生出生年月:\t%s\n",p->birthday);
PF("\t\t学生地址:\t%s\n",p->address);
PF("\t\t学生电话:\t%s\n",p->phone);
PF("\t\t学生E-mail:\t%s\n",p->e_mail);
PF("\n");} //输出信息
}
3.3 查找模块设计
1) 按姓名查找模块
通过键盘输入要查找的学生姓名,然后与结构数组中的姓名信息逐一比对,找出学生信息并输出
void search_name() //学生姓名信息查找
{
STU *p=NULL;
char name[20];
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
PF("输入学生姓名:");
scanf("%s",name);
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
if(!strcmp(p->name,name))
3) 按学号查找模块
通过键盘输入要查找的学生学号,然后与结构数组中的电话信息逐一比对,找出学生信息并输出
void search_NO() //学生学号信息查找
{
STU *p=NULL;
char NO[20];
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
PF("请输入学生学号:");
scanf("%s",NO);
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
if(!strcmp(p->NO,NO))
3.4 排序模块设计
3.5 保存及读取模块设计
1) 按姓名查找模块
通过键盘输入要查找的学生姓名,然后与结构数组中的姓名信息逐一比对,找出学生信息并输出
void search_name() //学生姓名信息查找
{
STU *p=NULL;
char name[20];
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
PF("输入学生姓名:");
scanf("%s",name);
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
if(!strcmp(p->name,name))
3) 按学号查找模块
通过键盘输入要查找的学生学号,然后与结构数组中的电话信息逐一比对,找出学生信息并输出
void search_NO() //学生学号信息查找
{
STU *p=NULL;
char NO[20];
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
PF("请输入学生学号:");
scanf("%s",NO);
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
if(!strcmp(p->NO,NO))
第四章 测试分析
4.1 测试程序执行情况
主菜单
输入学生信息
学生信息浏览
按学号查找学生信息
按姓名查找学生信息
删除学生信息
修改学生信息
退出
4.2 出现的问题和解决的方法
出现的问题就是不能进行排序,解决方法为删除。
第五章 用户手册(可选)
5.1 使用说明
5.2 运行说明
第六章 课程设计总结
在我们上机调试程序的过程中,我遇到了很多的问题,说实话这次课程设计自己没有出多大的力,大部分都是借鉴同学的设计成果,自己设计是总是觉得没有头绪,无从下手。看到同学认真看程序的样子,还有修改程序时的熟练,我很羡慕他,我想,我要将C语言学好,在将来能为我的就业加分。
在这期末考试前期,学院给我们安排的课程设计周,总让我们觉的有些为难我们,这样一个复杂困难而又繁琐的作业,似乎弄得我们既没有时间也没有心情复习,我曾一度地抱怨过学院,在完成它之后,我发现我错了,课程设计不仅让我们巩固了所学的知识,还使得我们学习到了更多平时所忽略的,最重要的是,它磨砺了我们,让我们在大学的下一个阶段能更好的成长。
附录:程序代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PF printf
#define LEN sizeof(struct student)
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆定义结构体◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
struct student
{
char NO[20];
char name[20];
int age;
char sex[3]; /*'F'表示性别男,'M'表示性别女*/
char birthday[10];
char address[30];
char phone[20];
char e_mail[20];
struct student *next; //下个结点
};
typedef struct student STU;
STU *head=NULL; //全局指针
int n,i=0; //全局变量
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆自定义函数◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void show_menu(); //显示菜单
void menu(); //执行菜单
void creat_stu(); //建立链表
void insert_stu(); //学生信息录入
void print_stu(); //学生信息浏览
void search_NO(); //以学号方式查询信息
void search_name(); //以姓名方式查询信息
void del_stu(); //删除学生信息
void revise_stu(); //修改学生信息
void save(); //保存信息
void main()
{
creat_stu();
menu();
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆创建链表◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void creat_stu()
{
FILE *fp;
long size;
STU *p1,*p2;
head=(STU *)malloc(sizeof(STU));
head->next=NULL;
if((fp=fopen("fname.txt","r"))==NULL)
{
printf("这是新表\n");
return;
}
fseek(fp,0L,2);
size=ftell(fp);
if(!size)
{
printf("这是空表\n");
return;
} //开始创建链表
rewind(fp); //移动到文件首
p2=head->next; //找到当前位置
while(!feof(fp))
{
p1=(STU *)malloc(sizeof(STU));
fscanf(fp,"%s %s %d %s %s %s %s %s\n",p1->NO,p1->name,&p1->age,
p1->sex,p1->birthday,p1->address,p1->phone,p1->e_mail);
p1->next=NULL; //创建节点完
if(head->next==NULL)
head->next=p1;
else
p2->next=p1;
p2=p1;
n++;
}
p2->next=NULL;
fclose(fp);
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆执行菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void menu()
{
int c;
show_menu();
while(1)
{
scanf("%d",&c);
switch(c)
{
getchar();
case 1:insert_stu();break;
case 2:print_stu();break;
case 3:search_NO(); break;
case 4:search_name(); break;
case 5:del_stu(); break;
case 6:revise_stu(); break;
case 0:exit(0);
} //执行菜单选项
show_menu();
}
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆显示菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void show_menu()
{
PF("\n");
PF("\n※※※※※※※※※※※※※※※※※※菜单※※※※※※※※※※※※※※※※※※\n");
PF("\t\t◆1.输 入 学 生 信 息 ◆\n");
PF("\t\t★2.浏 览 学 生 信 息 ★\n");
PF("\t\t◆3.以学号方式查询信息◆\n");
PF("\t\t★4.以姓名方式查询信息★\n");
PF("\t\t◆5.删 除 学 生 信 息 ◆\n");
PF("\t\t★6.修 改 学 生 信 息 ★\n");
PF("\t\t★0. 退 出 ★\n");
PF("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
PF("\n请选择\n");
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生信息录入◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void insert_stu() //学生信息录入
{
n=0;
STU *p1=NULL,*p2=NULL;
p1=(STU *)malloc(sizeof(STU));
PF("\n※※※※※※※※※※※※※※※※※※录入学生信息※※※※※※※※※※※※※※※※※※\n"); //录入学生信息
PF("\t\t输入学生学号:\t");
scanf("%s",p1->NO); //学号
PF("\t\t输入学生姓名:\t");
scanf("%s",p1->name); //姓名
PF("\t\t输入学生年龄:\t");
scanf("%d",&p1->age); //年龄
PF("\t\t输入学生性别:\t");
scanf("%s",p1->sex); //性别
PF("\t\t输入学生出生年月:\t");
scanf("%s",p1->birthday); //出生年月
PF("\t\t输入学生地址:\t");
scanf("%s",p1->address); //地址
PF("\t\t输入学生电话:\t");
scanf("%s",p1->phone); //电话
PF("\t\t输入学生E-mail:\t");
scanf("%s",p1->e_mail); //E-mail
n++;
if(head->next==NULL)
{
head=(STU *)malloc(LEN);
head->next=p1;
}
else
{
for(p2=head;p2->next!=NULL;p2=p2->next); /*找到最后的结点,然后将增加的结点挂在它上面*/
p2->next=p1;
}
p1->next=NULL;
save();//保存到文件
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生信息浏览◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void print_stu() //学生信息浏览
{
STU *p=NULL;
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
PF("※※※※※※※※※※※※※※※※※※学生信息浏览※※※※※※※※※※※※※※※※※※\n");
PF("\t\t学生学号:\t%s\n",p->NO);
PF("\t\t学生姓名:\t%s\n",p->name);
PF("\t\t学生年龄:\t%d\n",p->age);
PF("\t\t学生性别:\t%s\n",p->sex);
PF("\t\t学生出生年月:\t%s\n",p->birthday);
PF("\t\t学生地址:\t%s\n",p->address);
PF("\t\t学生电话:\t%s\n",p->phone);
PF("\t\t学生E-mail:\t%s\n",p->e_mail);
PF("\n");
} //输出信息
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生学号信息查找◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void search_NO() //学生学号信息查找
{
STU *p=NULL;
char NO[20];
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
PF("请输入学生学号:");
scanf("%s",NO);
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
if(!strcmp(p->NO,NO))
{
PF("※※※※※※※※※※※※※※※※※※您查找的学生是※※※※※※※※※※※※※※※※※※\n");
PF("\t\t学生学号:\t%s\n",p->NO);
PF("\t\t学生姓名:\t%s\n",p->name);
PF("\t\t学生年龄:\t%d\n",p->age);
PF("\t\t学生性别:\t%s\n",p->sex);
PF("\t\t学生出生年月:\t%s\n",p->birthday);
PF("\t\t学生地址:\t%s\n",p->address);
PF("\t\t学生电话:\t%s\n",p->phone);
PF("\t\t学生E-mail:\t%s\n",p->e_mail);
PF("\n");
i=1;
} //输出信息
if(!i)
{
PF("无该生信息!请查证:"); //没找到信息时的处理
return;
}
}
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生姓名信息查找◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void search_name() //学生姓名信息查找
{
STU *p=NULL;
char name[20];
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
PF("输入学生姓名:");
scanf("%s",name);
for(p=head->next;p!=NULL;p=p->next) //读出信息
{
if(!strcmp(p->name,name))
{
PF("※※※※※※※※※※※※※※※※※※您查找的学生是※※※※※※※※※※※※※※※※※※\n");
PF("\t\t学生学号:\t%s\n",p->NO);
PF("\t\t学生姓名:\t%s\n",p->name);
PF("\t\t学生年龄:\t%d\n",p->age);
PF("\t\t学生性别:\t%s\n",p->sex);
PF("\t\t学生出生年月:\t%s\n",p->birthday);
PF("\t\t学生地址:\t%s\n",p->address);
PF("\t\t学生电话:\t%s\n",p->phone);
PF("\t\t学生E-mail:\t%s\n",p->e_mail);
PF("\n");
i=1;
} //输出信息
if(!i)
{
PF("无该生信息!请查证:"); //没找到信息时的处理
return;
}
}
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆删除学生信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void del_stu()
{
STU *p=NULL;
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
else
{
char NO[20];
PF("请输入学生的学号:\t");
scanf("%s",NO);
for(p=head;p!=NULL;p=p->next)
{
if(!strcmp(p->next->NO,NO)) //验证信息是否正确
{
PF("※※※※※※※※※※※※※※※※※※您要删除的学生是※※※※※※※※※※※※※※※※※※\n");
PF("\t\t学生学号:\t%s\n",p->next->NO);
PF("\t\t学生姓名:\t%s\n",p->next->name);
PF("\t\t学生年龄:\t%d\n",p->next->age);
PF("\t\t学生性别:\t%s\n",p->next->sex);
PF("\t\t学生出生年月:\t%s\n",p->next->birthday);
PF("\t\t学生地址:\t%s\n",p->next->address);
PF("\t\t学生电话:\t%s\n",p->next->phone);
PF("\t\t学生E-mail:\t%s\n",p->next->e_mail);
PF("\n"); //输出要删除的信息
i=1;
if(p->next->next)
{
p->next=p->next->next;
}
else
p->next=NULL;
n--;
save();
return;
}
if(!i)
{
PF("无该生信息!请查证:"); //没找到信息时的处理
return;
}
}
}
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆修改学生信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void revise_stu()
{
STU *p=NULL;
if(head==NULL) //判断链表是否为空
{
PF("文档中无记录!\n");
return;
}
char NO[20];
PF("请输入学生的学号:\t");
scanf("%s",NO);
for(p=head->next;p!=NULL;p=p->next)
{
if(!strcmp(p->NO,NO)) //验证信息是否正确
{
PF("※※※※※※※※※※※※※※※※※※您要修改的学生是※※※※※※※※※※※※※※※※※※\n");
PF("\t\t学生学号:\t%s\n",p->NO);
PF("\t\t学生姓名:\t%s\n",p->name);
PF("\t\t学生年龄:\t%d\n",p->age);
PF("\t\t学生性别:\t%s\n",p->sex);
PF("\t\t学生出生年月:\t%s\n",p->birthday);
PF("\t\t学生地址:\t%s\n",p->address);
PF("\t\t学生电话:\t%s\n",p->phone);
PF("\t\t学生E-mail:\t%s\n",p->e_mail);
PF("\n"); //输出要修改信息
i=1;
PF("※※※※※※※※※※※※※※※※※※修改学号为%s的学生※※※※※※※※※※※※※※※※※※\n",NO);
strcpy(p->NO,NO);
PF("\t\t输入修改学生学号:\t");
scanf("%s",p->NO);
PF("\t\t输入修改学生姓名:\t");
scanf("%s",p->name);
PF("\t\t输入修改学生年龄:\t");
scanf("%d",&p->age);
PF("\t\t输入修改学生性别:\t");
scanf("%s",p->sex);
PF("\t\t输入修改学生出生年月:\t");
scanf("%s",p->birthday);
PF("\t\t输入修改学生地址:\t");
scanf("%s",p->address);
PF("\t\t输入修改学生电话:\t");
scanf("%s",p->phone);
PF("\t\t输入修改学生E-mail:\t");
scanf("%s",p->e_mail);
PF("\n");
展开阅读全文