学生证管理系统课程设计报告Word格式文档下载.docx
- 文档编号:4289715
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:27
- 大小:228.56KB
学生证管理系统课程设计报告Word格式文档下载.docx
《学生证管理系统课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生证管理系统课程设计报告Word格式文档下载.docx(27页珍藏版)》请在冰点文库上搜索。
学号查询
文件输入
班级查询
删除记录
修改记录
3.详细设计。
本功能一共有16个函数,其中一个主函数,15个功能模块,每个功能模块都是由于主函数或其他功能模块调用,分别说明如下:
1.主函数main()。
Y
N
图1.2主程序流程图
(2)键盘输入函数。
键盘输入函数主要完成学生信息从屏幕输入数据,并将数据保存到文本文件中,以备后用。
流程图:
N
(3)文件输入函数。
文件输入函数主要完成学生信息从文件中读入数据。
开始
打开文件
读入学生证信息
是否继续
关闭文件
结束
图1.4文件输入流程图
(4)学号查询函数。
学号查询函数是完成由用户输入需要查询的学号,在现有学生信息中查询是否有此学生信息存在,查到输出学生全部信息,没查到则输出“此学生部存在”信息。
流程图如下:
输入查询学号
查到否
输出学生不存在信息
输入查到学生信息
图1.5学号查询流程图
(5)班级查询函数。
班级查询函数是完成由用户输入需要查询的班级,在现有学生信息中查询此班级的全部学生信息,查到输出全部信息,没差到则输出“此班级学生不存在”信息。
读入学生信息
输入查询班号
查到否?
输出此班级学生不存在信息
输出查到学生信息
(6)学号删除函数。
学号删除函数是完成由用户输入需要删除的学号,在现有学生信息中查询是否有该学生信息存在,查到则删除此学生全部信息,没查到则输出“此学生不存在”信息。
程序流程图如下:
输入删除学号
找到否?
输入此学生不存在信息
删除此学生信息
(7)修改函数。
修改函数主要是完成根据学号查找到学生信息,输出学生信息,然后修改学生信息。
程序流程如下:
读入学生学号
输入修改学号
找到否?
输出此学生不存在信息
修改此学生信息
图1.7学号修改流程图
4.测试结果。
(1)程序运行主菜单
1.9主菜单界面
(2)从文件输入并显示结果
(3)按学号查找。
(4)修改测试。
(5)按班号浏览。
(6)统计班级的人数。
(7)删除功能测试。
5.软件操作使用说明书。
本软件采用命令行对话方式进行操作,运行后出现主界面如图1.9所示,然后按菜单提示操作即可。
6.总结。
通过本次课程设计练习,我们学会了科学分析问题解决问题的方法,从问题分析下手,然后进行模块设计,详细设计,再进行代码编写和测试。
在调试程序过程中,学会了分模块进行,避免了以前那种将程序全部功能都放在main()函数中完成的弊病,使得调试过程更加顺利。
另外通过本次练习,在前面学习过程中碰到的诸如结构体使用.指针使用.函数之间参数传递等难点问题也迎刃而解了。
源代码:
//student.h
#include<
stdio.h>
//I/O函数
stdlib.h>
//标准库函数
string.h>
//字符串函数
ctype.h>
//字符操作函数
#defineM50//定义常数表示记录数
typedefstruct//定义数据结构
{
charno[20];
//学号
charname[20];
//姓名
charsex[5];
//性别
charclasses[20];
//班号
charsubject[20];
//学院专业
}STUDENTS;
//以下是函数原型
#include"
stufun.h"
//student.cpp
//菜单函数,函数返回值为整数,代表所选的菜单项................................
intmenu_select()
chars[80];
intc;
printf("
******************************主菜单*********************\n"
);
*0.输入学生证信息记录*\n"
*1.浏览学生证信息记录*\n"
*2.按学号查找*\n"
*3.按学号删除*\n"
*4.按学号修改*\n"
*5.插入学生记录*\n"
*6.保存记录到文件*\n"
*7.加载文件到内存*\n"
*8.按班号浏览*\n"
*9.统计班级人数*\n"
*10.程序退出*\n"
*********************************************************\n"
do
{
printf("
\n输入您的菜单选项编号(0-10):
"
//提示输入选项
scanf("
%s"
s);
//输入选择项
c=atoi(s);
//将输入的字符串转化为整型数
getchar();
}while(c<
0||c>
10);
//选择项不在0~10之间重输
returnc;
//返回选择项,主程序根据该数调用相应的函数
}
//输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度.......................
intenter(STUDENTSt[])
inti,n;
system("
cls"
\n请输入学生记录条数:
\n"
scanf("
%d"
&
n);
//输入记录数
请输入学生记录:
学号姓名性别班号学院专业\n"
------------------------------------------------------------------------\n"
for(i=0;
i<
n;
i++)
t[i].no);
//输入学号
t[i].name);
//输入姓名
t[i].sex);
//输入性别
t[i].classes);
//输入班号
t[i].subject);
//学院专业
}
getchar();
returnn;
//返回记录条数
}
//显示记录,参数为记录数组和记录条数.........................
voidlist(STUDENTSt[],intn)
inti;
\n********************学生清单************************\n"
for(i=0;
{
%-20s%-20s%-10s%-10s%-10s\n"
t[i].no,t[i].name,t[i].sex,t[i].classes,t[i].subject);
if((i+1)%10==0&
&
n%10>
0)//判断输出是否达到10条记录
{
printf("
每页显示10条学生记录,按回车键向后翻页...\n"
getchar();
system("
}
}
//查找记录..........................
voidsearch(STUDENTSt[],intn)
chars[20];
//保存待查找学号字符串
//保存查找到结点的序号
请输入查找的学号:
//输入待查找学号
i=find_no(t,n,s);
//调用find_no函数,得到一个整数
if(i>
n-1)//如果整数i值大于n-1,说明没找到
没有学号为%s的学生!
else
print(t[i]);
//找到,调用显示函数显示记录
//删除函数,参数为记录数组和记录条数...........................
intdel(STUDENTSt[],intn)
//要删除记录的学号
intch=0;
请输入要删除的学生学号:
//输入学号
//调用find_no函数
if(i==n)
没有找到学号为%s的学生!
else
正在删除中!
for(;
i++)//从删除位置开始依次前移学生记录
{
strcpy(t[i].name,t[i+1].name);
strcpy(t[i].no,t[i+1].no);
strcpy(t[i].sex,t[i+1].sex);
strcpy(t[i].classes,t[i+1].classes);
strcpy(t[i].subject,t[i+1].subject);
n--;
//删除后记录数减1
删除成功!
//返回记录数
//插入记录函数,参数为结构体数组和记录数.................................
intadd(STUDENTSt[],intn)
STUDENTStemp;
//新插入记录信息
inti,j;
//确定插入在哪个记录之前
请输入要插入的学生记录:
************************************************\n"
%s%s%s%s%s"
temp.no,temp.name,temp.sex,temp.classes,temp.subject);
//输入插入信息
if(n>
0)
请输入插入位置的姓名,将新记录插入在该名字前:
//输入插入位置的姓名
i=find_name(t,n,s);
//调用find_name,确定插入位置
i=0;
for(j=n-1;
j>
=i;
j--)//从最后一个结点开始向后移动一条
strcpy(t[j+1].no,t[j].no);
//当前记录的学号拷贝到后一条
strcpy(t[j+1].name,t[j].name);
//当前记录的姓名拷贝到后一条
strcpy(t[j+1].sex,t[j].sex);
//当前记录的性别拷贝到后一条
strcpy(t[j+1].classes,t[j].classes);
//当前记录的班号拷贝到后一条
strcpy(t[j+1].subject,t[j].subject);
//当前记录的学院专业拷贝到后一条
strcpy(t[i].no,temp.no);
//将新插入记录的学号拷贝到第i个位置
strcpy(t[i].name,temp.name);
//将新插入记录的姓名拷贝到第i个位置
strcpy(t[i].sex,temp.sex);
//将新插入记录的性别拷贝到第i个位置
strcpy(t[i].classes,temp.classes);
strcpy(t[i].subject,temp.subject);
//将新插入记录的年龄拷贝到第i个位置
n++;
//记录数加1
//返回记录数
//保存函数,参数为结构体数组和记录数..................................
voidsave(STUDENTSt[],intn)
FILE*fp;
//指向文件的指针
if((fp=fopen("
record.txt"
"
wb"
))==NULL)//打开文件,并判断打开是否正常
无法打开学生记录文件!
//打开失败
exit
(1);
//退出
\n正在保存中\n"
fprintf(fp,"
n);
//将记录数写入文件
\r\n"
//将换行符号写入文件
fprintf(fp,"
%-20s%-30s%-10s%-10s%-10s"
//格式写入记录
//将换行符号写入文件
fclose(fp);
//关闭文件
****保存成功***\n"
//显示保存成功
//读入函数,参数为结构体数组.............................
intload(STUDENTSt[])
//指向文件的指针
rb"
))==NULL)//打开文件
//退出
fscanf(fp,"
//读入记录数
fscanf(fp,"
%20s%30s%10s%10s%10s"
//按格式读入记录
//关闭文件
已经成功加载学生记录文件到内存!
//显示保存成功
//返回记录数
//按班号显示记录函数.................................
voiddisplay(STUDENTSt[],intn)
请输入班号:
//输入班号
i=find_classes(t,n,s);
n-1)
没有班号为%d的班级\n"
------------------------------------------------------------------------\n-"
i++)
{
if(strcmp(s,t[i].classes)==0)
{
}
}
//按班号统计人数........
voidclasscount(STUDENTSt[],intn)
intj=0;
i++)
j++;
该班一共有%d人\n"
j);
//显示指定的一条记录
voidprint(STUDENTStemp)
\n****************************************************\n"
//按姓名查找函数,参数为记录数组和记录条数以及姓名s...................................
intfind_name(STUDENTSt[],intn,char*s)
i++)//记录开始,直到最后一条
if(strcmp(s,t[i].name)==0)//记录中的姓名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生证 管理 系统 课程设计 报告