程序设计基础课程设计
实验报告书
目录
1. 设计题目 ................................................... 错误!未指定书签。 2. 正文 ....................................................... 错误!未指定书签。 2.1 系统简介 ................................................... 错误!未指定书签。 2.2选题背景 ................................................... 错误!未指定书签。 2.3设计内容 ................................................... 错误!未指定书签。 2.4设计思路 ................................................... 错误!未指定书签。 2.5算法(条列式或流程图) ..................................... 错误!未指定书签。 2.6程序清单与运行结果 ......................................... 错误!未指定书签。 2.7总结 ....................................................... 错误!未指定书签。
1. 设计题目
学生信息管理系统设计
2. 正文
2.1 系统简介
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作
2、学生信息录入功能(学生信息用文件保存)--输入 3、学生信息浏览功能--输出
4、学生信息查询功能--按学号查询、按姓名查询、 5、学生信息的删除与修改(可选项) 要求:使用文件方式存储数据。
2.2选题背景
经典计算机问题,设计 学生信息管理系统,可以进行多项系统信息管理功能。
2.3设计内容
设计学生信息管理的各个功能。系统以菜单方式工作。学生信息录入功能(学生信息用文件保存)--输入。学生信息浏览功能--输出。学生信息查询功能--按学号查询、按姓名查询。学生信息的删除与修改(可选项)
2.4设计思路
将程序的各个功能分开独立的执行,问题有大而小,细化。
2.5算法(条列式或流程图)
主程序模块:
准 备
输入选择:
判断: 运行不同功能: 按退格键
创建文件模块(独立函数结束 ): 输入要创建的文件输入学生数 夹得文件名,并创目: NO 建文件 输入一个学生信 YES 息并存放到文件是否人数足 夹:够 删除信息模块(独立函数返回主程序 ):
输入要删除得姓 按读取方式打开用于存放名 文件的文件夹 创建100个结构体,并 不相同 将文件中的信息全部
存放到结构体中 相同 将指针指向下一个通过链表把要删除得同学的信息 结构体,判断该结按写入方式打开文件,结构体全在结构体链表中删除 显示浏览信息模块(独立函数) 构体的姓名与要删部写入文件 除的姓名是否相同
返回主程序
输入存放信息的文件夹的文件名,并打
开文件夹 创建一百个结构体数组 将一个从文件中读入一个结构体大 结构体大小从文件中读取到内小,并显示到内存 创建一百个结构体数组 将一 存,并显示 个结构体大小从文件中读取到返回主程序 文件是否到 查找学生信息模块(独立函数): 内存,并显示达最后 输入存放信息的文件夹的文 件名,并打开文件夹 输入要查找信息的学生名,
指针指向下一个结构
体
输出学生信息 返回主程序 判断学生信息与是否为要查2.6程序清单与运行结果 找的人的信息 #include
struct student { };
void show( ) { }
\\* 创建文件夹并存入信息模块: *\\ void credit(int n) {
printf(\请输入数字加回车键进行选择:\\n\
printf(\、学生信息录入功能(学生信息用文件保存)--输入\\n\printf(\、学生信息浏览功能--输出\\n\
printf(\、学生信息查询功能--按学号查询、按姓名查询\\n\printf(\、学生信息的删除与修改(可选项)\\n\printf(\按其他任意键加回车退出程序\\n\int number,age,tel[10];
char name[10],sex,address[20],E_mail[20]; struct birth birthday; struct student *link; int year,month,day;
FILE *fp; char fpname[20];
struct student *head,*next,*end; int i;
printf(\请输入用于存放文件的文件路劲及文件名:\scanf(\getchar();
fp=fopen(fpname,\
head=(struct student *)malloc(sizeof(struct student));
printf(\请输入学生 学号 姓名 性别 出生年 月 日 地址 电话 e_mail:\
scanf(\
ead).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head->tel,head->E_mail);
getchar();
fprintf(fp,\
*head).birthday.year,(*head).birthday.month,(*head).birthday.day,head->address,head->tel,head->E_mail);
scanf(\ext).birthday.year,&(*next).birthday.month,&(*next).birthday.day,next->address,next->tel,next->E_mail);
fprintf(fp,\*next).birthday.year,(*next).birthday.month,(*next).birthday.day,next->address,next->tel,next->E_mail); }
\\* 浏览信息模块: *\\ void show2(int n) {
FILE *fp; int i;
char fpname[20]; struct student *head; }
fclose(fp);
end->link=next; end=next; end->link=NULL; getchar(); end=head; for(i=1;i next=(struct student *)malloc(sizeof(struct student)); printf(\请输入学生 学号 姓名 性别 出生年 月 日 地址 电话 e_mail:\ head=(struct student *)malloc(sizeof(struct student)); printf(\请输入存放信息的文件路径以及文件名:\gets(fpname); fp=fopen(fpname,\for(i=0;i fscanf(fp,\ &(*head).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head->tel,head->E_mail); printf(\ad).birthday.year,(*head).birthday.month,(*head).birthday.day,head->address,head->tel,head->E_mail); } \\* 按学号查找学生信息模块: *\\ int search1(int n) { fscanf(fp,\&(*head).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head->tel,head->E_mail); printf(\ if(checkname==head->number) { int i,checkname; FILE *fp; char fpname[20]; struct student *head; head=(struct student *)malloc(sizeof(struct student)); printf(\请输入存放信息的文件路径以及文件名:\gets(fpname); fp=fopen(fpname,\ printf(\请输入要查询信息的学生学号:\scanf(\getchar(); for(i=0;i fclose(fp); ead).birthday.year,(*head).birthday.month,(*head).birthday.day,head->address,head->tel,head->E_mail); fclose(fp);