当前位置:文档之家› 学生信息管理系统 课程设计

学生信息管理系统 课程设计

学生信息管理系统学生姓名:学号:班级:指导老师:日期:2、课程设计正文格式:1 题目及要求学生信息管理系统此题目要求,使用结构体静态数组存储数据,并要求使用户输入的数据或者修改后的数据能够永久保存。

问题提出详细叙述本人所要实现的题目中的问题我编写一个学生信息管理系统,主要用来管理学生基本信息。

本系统涉及的知识点如:结构体、数组、循环、函数、分支、文件、字符串、指针;功能分析叙述本人所要实现的题目功能1、添加学生信息,每个学生的信息包括:学号、姓名、电话、生日、地址、班级;2、根据学号删除该学生信息或删除全部学生信息;3、根据学号、姓名查询学生信息;4、可以以表格形式输出所有学生信息;5、输入欲修改的那人的名字后,再次进行信息修改;6、保存此学生信息系统;2 功能设计画出模块层次结构图菜单设计各功能模块的算法设计增加学生信息模块:打开文件。

用scanf输入数据,保存再结构数组中。

用fwrite函数将结构体数组读入学生信息文件中,关闭文件。

显示学生信息模块:只读打开文件将文件的信息读入结构体数组中;将结构体的内容显示在窗口上。

关闭文件。

查询学生信息模块:打开文件,读出信息;输入要查询的学号或姓名;如有该学号或姓名,打印该学生的信息;关闭文件。

输入要修改的学生信息的学号。

若有此学号,则重新输入此学生信息。

覆盖原先的信息,读入文件;关闭文件。

删除学生信息模块:打开文件,读出信息,关闭文件。

选择要单个删除—,选择全部删除—;打开文件,输入要删除的学号;若有此学号,覆盖此条信息,已少一次数,读入文件,关闭文件;若无,返回;打开文件。

将空字符读入文件中,覆盖原先的信息,关闭文件。

3 程序代码设计(-)增加模块1)函数原形:void add(void)2)功能:利用for循环语句和scanf、getchar函数完成对结构数组的输入,再用再用fwrite函数将结构数组读入学生信息表中。

存放n个学生的信息(学号、姓名、电话、生日、地址、班级)。

3)输入输出:无。

(二)查询模块1)函数原形:void search(void)2)功能:打开文件后,根据strcmp函数进行对比,可以进行学号与姓名查询,用fread函数将文件中信息读到结构体数组中,相同就打印到窗口上。

3)输入输出:无。

(三)修改模块1)函数原形:void modi(void)2)功能:输入要修改的姓名,用fread函数将文件中信息读到结构体数组中,根据strcmp函数进行对比,然后根据fwrite函数进行修改覆盖,得到新文件。

3)输入输出:无。

(四)删除模块1)函数原形:void del (void)2)功能:用fread函数将文件中信息读到结构体数组中,依次将输入的学号根据strcmp函数进行对比,然后再进行选择性删除。

3)输入输出:无。

(五)显示模块1)函数原形:void print(void)2)功能:用freed函数打开存储的文件使其显示在屏幕上。

3)输入输出:无。

(六)源程序代码#include<>#include<>#include<>void print(void); delxt","a+"))==NULL) ame);printf("请输入学号:\n");scanf("%s",stu[i].num);printf("请输入班级:\n");scanf("%s",stu[i].ban);printf("请输入生日:\n");scanf("%s",stu[i].birthday);printf("请输入电话号码:\n");scanf("%s",stu[i].phone);printf("请输入地址:\n");scanf("%s",stu[i].address);fwrite(&stu[i],sizeof(STU),1,fp); xt","r"))==NULL) ame,stu[i].num,stu[i].ban,stu[i].phone,stu[i].birthday,stu[i].addres s);printf("--------------------------------------------------------\n");}fclose(fp); xt","r"))==NULL) 号查询\n");printf(" 2.姓名查询\n");printf("------------------------------------------------\n");printf("请选择: \n");scanf("%d",&xz);if (xz==1){printf("\n请输入要查找学生的学号: ");scanf("%s",number);for(i=0;i<n;i++){if(strcmp(number,stu[i].num)==0){printf("\n该学生已找到\n");printf("----------------------------------------\n"); printf("姓名:%s\n",stu[i].name);printf("学号:%s\n",stu[i].num);printf("班级:%s\n",stu[i].ban);printf("电话:%s\n",stu[i].phone);printf("出生日期:%s\n",stu[i].birthday);printf("地址:%s\n",stu[i].address);break;}elseprintf("\n没有你要找的学生!!!\n\n");}}elseif(xz=2){printf("请输入要查询者的姓名: ");scanf("%s",name);for(i=0;i<n;i++){if(strcmp(name,stu[i].name)==0){printf("该学生已找到\n");printf("----------------------------------------\n");printf("姓名:%s\n",stu[i].name);printf("学号:%s\n",stu[i].num);printf("班级:%s\n",stu[i].ban);printf("电话:%s\n",stu[i].phone);printf("出生日期:%s\n",stu[i].birthday);printf("地址:%s\n",stu[i].address);break;}elseprintf("\n没有你要找的学生!!!\n\n");}}fclose(fp); xt","r+"))==NULL) um)==0){printf("----------------------------------------\n");printf("请重新输入姓名:\n"); scanf("%s",stu[i].name);printf("请重新输入学号:\n"); scanf("%s",stu[i].num);printf("请重新输入班级:\n"); scanf("%s",stu[i].ban);printf("请重新输入电话:\n"); scanf("%s",stu[i].phone);printf("请重新输入生日:\n"); scanf("%s",stu[i].birthday);printf("请重新输入地址:\n"); scanf("%s",stu[i].address);}fclose(fp);if((fp=fopen("学生信息表.txt","w"))==NULL){} delxt","r"))==NULL) 个删除*****2.全部删除*********\n");printf("输入你的选择: ");scanf("%d",&ch);if(ch==1){loop:printf("输入要删除学生的学号: ");scanf("%s",number);for(i=0;i<n;i++)if(strcmp(stu[i].num,number)==0){flag=1;k=i;}printf("************是否确定删除*************\n");printf("************1--是**2--否***************\n");scanf("%d",&temp);if(temp==2)goto loop;if(flag==0){printf("**********列表中无此记录********\n");goto loop;}for(i=k;i<n-1;i++){strcpy(stu[i].name,stu[i+1].name);strcpy(stu[i].num,stu[i+1].num);strcpy(stu[i].ban,stu[i+1].ban);strcpy(stu[i].birthday,stu[i+1].birthday);strcpy(stu[i].phone,stu[i+1].phone);strcpy(stu[i].address,stu[i+1].address);}if((fp=fopen("学生信息表.txt","w"))==NULL) xt","w"))==NULL) 行结果测试。

相关主题