学生信息系统 课程设计文档格式.docx
《学生信息系统 课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《学生信息系统 课程设计文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
![学生信息系统 课程设计文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/28/36d5dea8-2232-4c4a-ae61-8000906e7161/36d5dea8-2232-4c4a-ae61-8000906e71611.gif)
画出模块层次结构图
2.1菜单设计
2.2各功能模块的算法设计
增加学生信息模块:
1.1打开文件。
1.2用scanf输入数据,保存再结构数组中。
1.3用fwrite函数将结构体数组读入学生信息文件中,关闭文件。
显示学生信息模块:
1.1只读打开文件
1.2将文件的信息读入结构体数组中;
1.3将结构体的内容显示在窗口上。
1.4关闭文件。
查询学生信息模块:
1.1打开文件,读出信息;
1.2输入要查询的学号或姓名;
1.3如有该学号或姓名,打印该学生的信息;
修改学生信息模块:
1.2输入要修改的学生信息的学号。
1.3若有此学号,则重新输入此学生信息。
1.4覆盖原先的信息,读入文件;
关闭文件。
删除学生信息模块:
1.1打开文件,读出信息,关闭文件。
1.2选择要单个删除—1.3,选择全部删除—1.5;
1.3打开文件,输入要删除的学号;
1.4若有此学号,覆盖此条信息,已少一次数,读入文件,关闭文件;
若无,返回1.3;
1.5打开文件。
将空字符读入文件中,覆盖原先的信息,关闭文件。
3程序代码设计
(-)增加模块
1)函数原形:
voidadd(void)
2)功能:
利用for循环语句和scanf、getchar函数完成对结构数组的输入,再用再用fwrite函数将结构数组读入学生信息表中。
存放n个学生的信息(学号、姓名、电话、生日、地址、班级)。
3)输入输出:
无。
(二)查询模块
voidsearch(void)
打开文件后,根据strcmp函数进行对比,可以进行学号与姓名查询,用fread函数将文件中信息读到结构体数组中,相同就打印到窗口上。
(三)修改模块
voidmodi(void)
输入要修改的姓名,用fread函数将文件中信息读到结构体数组中,根据strcmp函数进行对比,然后根据fwrite函数进行修改覆盖,得到新文件。
(四)删除模块
voiddel(void)
用fread函数将文件中信息读到结构体数组中,依次将输入的学号根据strcmp函数进行对比,然后再进行选择性删除。
(五)显示模块
voidprint(void)
用freed函数打开存储的文件使其显示在屏幕上。
(六)源程序代码
#include<
stdio.h>
stdlib.h>
string.h>
voidprint(void);
//显示函数
voidadd(void);
//增加函数
voidsearch(void);
//查找函数
voidmodi(void);
//修改函数
voiddel(void);
//删除函数
//定义结构体
typedefstructstudent
{
charname[20];
charnum[20];
charban[20];
charbirthday[20];
charphone[20];
charaddress[200];
}STU;
STUstu[2000];
FILE*fp;
//主函数
intmain(void)
inti;
do
{
printf("
|---------------------------------|\n"
);
|学生信息管理系统|\n"
|1--增加学生信息|\n"
|2--删除学生信息|\n"
|3--查询学生信息|\n"
|4--显示学生信息|\n"
|5--修改学生信息|\n"
|6--退出|\n"
请选择你的操作:
(1~6)\n"
scanf("
%d"
&
i);
if(i==1)add();
if(i==2)del();
if(i==3)search();
if(i==4)print();
if(i==5)modi();
if(i==6){
谢谢您的使用!
\n"
break;
}
}while(i>
0&
&
i<
7);
if(i>
6||i<
1)
你的输入错误\n"
return0;
}
/*增加函数*/
voidadd(void)
intm,i;
if((fp=fopen("
学生信息表.txt"
"
a+"
))==NULL)//为读写打开学生信息表文本文件
Cannotopenfilestrikeanykeyexit!
"
getchar();
exit
(1);
请输入要添加学生的人数:
m);
for(i=1;
=m;
i++)
请输入姓名:
%s"
stu[i].name);
请输入学号:
stu[i].num);
请输入班级:
stu[i].ban);
请输入生日:
stu[i].birthday);
请输入电话号码:
stu[i].phone);
请输入地址:
stu[i].address);
fwrite(&
stu[i],sizeof(STU),1,fp);
//把结构体的数据写入学生信息表中
fclose(fp);
//关闭学生信息表文本文件
/*显示函数*/
inti,n;
r"
))==NULL)//为输入打开学生信息表文本文件
exit(0);
for(i=0;
fread(&
stu[i],sizeof(STU),1,fp)!
=0;
i++);
//读出学生信息
n=i;
姓名学号班级电话生日地址\n"
-------------------------------------------------------\n"
n;
%s\t%s\t%s\t%s\t%s\t%s\n"
stu[i].name,stu[i].num,stu[i].ban,stu[i].phone,stu[i].birthday,stu[i].address);
printf("
--------------------------------------------------------\n"
/*查询函数*/
charnumber[20],name[20];
//读取学生信息表文本文件
intxz;
------------------------------------------------\n"
1.学号查询\n"
2.姓名查询\n"
请选择:
\n"
xz);
if(xz==1){
\n请输入要查找学生的学号:
"
number);
if(strcmp(number,stu[i].num)==0)
\n该学生已找到\n"
----------------------------------------\n"
姓名:
%s\n"
学号:
班级:
电话:
出生日期:
地址:
else
\n没有你要找的学生!
!
\n\n"
if(xz=2){
请输入要查询者的姓名:
name);
if(strcmp(name,stu[i].name)==0)
该学生已找到\n"
/*修改函数*/
r+"
请输入你要修改的学生的姓名:
if(strcmp(name,stu[i].num)==0){
请重新输入姓名:
请重新输入学号:
请重新输入班级:
请重新输入电话:
请重新输入生日:
请重新输入地址:
w"
))==NULL){}//为输出打开学生信息表文本文件
//覆盖要修改的学生信息
/*删除函数*/
voiddel(void)
charnumber[20],stud[300];
intflag=0,i,k,ch,n,temp;
//读出学生信息
********1.单个删除*****2.全部删除*********\n"
输入你的选择:
ch);
if(ch==1){
loop:
输入要删除学生的学号:
if(strcmp(stu[i].num,number)==0)
flag=1;
k=i;
************是否确定删除?
*************\n"
************1--是**2--否***************\n"
temp);
if(temp==2)
gotoloop;
if(flag==0)
**********列表中无此记录********\n"
for(i=k;
n-1;
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);
))==NULL)//为输出打开学生信息表文本文件
n=n-1;
//重新输出已修改的学生信息表
已删除成功\n"
if(ch==2)
************1--是**2--否***************"
if(temp==1);
fputs("
fp);
已全部删除\n"
4.运行结果测试