C语言课程设计学生证管理系统课案Word文档格式.docx
《C语言课程设计学生证管理系统课案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生证管理系统课案Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
![C语言课程设计学生证管理系统课案Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/22/d348f818-250d-42a9-b817-e905a88d052b/d348f818-250d-42a9-b817-e905a88d052b1.gif)
灵活使用链表来储存学生信息。
8.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串
二、实验内容
学生证的管理程序。
该程序应该具有下列功能:
(1)录入某位学生的学生证信息;
(2)给定学号,显示某位学生的学生证信息;
(3)给定某个班级的班号,显示该班所有学生的学生证信息;
(4)给定某位学生的学号,修改该学生的学生证信息;
(5)给定某位学生的学号,删除该学生的学生证信息;
(6)提供一些统计各类信息的功能。
三、需求分析
系统功能:
1.显示全部的学生证信息;
2.给定某位学生的学号或姓名,查询或修改该学生的学生证信息;
3.给定某位学生的学号或姓名,删除该学生的学生证信息;
4.增加学生信息;
5.提供一些统计各类信息的功能。
例如统计学生数,班级数,每个班级的学生数;
6.能够对学号和班级进行升序和降序排序;
7.用文件的形式将录入的数据进行存储,并从其中读取数据。
性能描述:
各种功能都可以满足;
程序相对较小,因而运行时反应比较迅速,不存在响应不及时地问题。
四、概要设计
1.方案设计
2.数据结构说明
1、建立一个小型的学生证管理系统.可对学生的信息进行管理.
2、学生信息应包括学生的学号,姓名,性别,班级的信息..
3、数据必须以文件形式存放.
分析:
首先进入信息的录入和储存,录入学生基本信息,然后储存在文件中.其次做更新操作(插入,删除,修改).然后作查询,排序等操作。
3.模块功能说明
luru()
用于储存所输入的学生信息到指定文件
chaxunx()
用于按学号查找某个学生信息并打印该生信息
chaxunb()
用于按班级查找某个学生信息并打印该生信息
xiugai()
用于修改某个学号的学生信息
shanchu()
用于按学号删除某个学生的信息
tongji()
用于统计学生的信息
4.程序可以满足功能
1.各模块间通过菜单切换和调用
2.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。
3.程序能够保证各模块功能的独立和数据共享。
4.相近功能以级联菜单的形式集成。
五、详细设计
①主函数主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。
为了程序显示的清晰可读,应先清屏之后调用菜单函数。
[程序]
voidmain()
{
intn;
system("
cls"
);
//清屏
printf("
欢迎使用学生证管理系统\n"
1、录入学生信息\n"
2、查询学生信息\n"
3、查询班级信息\n"
4、修改学生信息\n"
5、删除学生信息\n"
6、统计学生信息\n"
7、退出\n"
请输入功能代码:
[1-5]"
scanf("
%d"
&
n);
switch(n)
{
case1:
luru();
break;
case2:
chaxunx();
case3:
chaxunb();
case4:
xiugai();
case5:
shanchu();
case6:
tongji();
case7:
exit
(1);
default:
printf("
error\n"
}
}
②输入模块用于输入学生的相关信息包括姓名、性别、学号、班级、单位,并将信息存储到stu_kard.txt文件中。
voidluru()
inti=0;
FILE*fp;
请输入学生信息(以空格隔开)\n姓名性别学号班号单位\n"
%s%s%d%d%s"
stud[i].name,&
stud[i].sex,&
stud[i].xuehao,&
stud[i].banhao,&
stud[i].danwei);
fp=fopen("
stu_kard.txt"
"
a"
//追加方式打开文本文件
if(fp==NULL)//打开失败
{
printf("
cannotopenfile\n"
return;
else//打开成功
if(fwrite(&
stud[i],sizeof(structstudent),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
//关闭文件
return;
③按学号查询模块用于按学号查询学生信息。
输入所要查询的学生学号,程序读取stu_kard.txt文件中的信息查找出相关的学生信息并将其显示出来。
voidchaxunx()//查询学生信息函数
{
charit;
intxuehao;
//以下是查询某个学生的个人信息
是要查询学生个人信息吗?
yes--yno--n请输入:
"
%s"
it);
if(it=='
y'
)//输入y表示要查询学生的个人信息
请输入学号:
xuehao);
r"
//只读方式打开文本文件
while(!
feof(fp))//循环从文件总读取记录,与输入学号相比,
fread(&
stud[i],sizeof(structstudent),1,fp);
if(xuehao==stud[i].xuehao)
查询信息如下:
姓名性别学号班号单位\n"
%17s%5s%6d%6d%8s\n"
stud[i].name,stud[i].sex,stud[i].xuehao,stud[i].banhao,stud[i].danwei);
break;
//查询到该学生信息后退出循环
if(stud[i].xuehao!
=xuehao)
查无此人!
elseif(it=='
n'
){printf("
取消查询\n"
else{printf("
输入错误!
\n"
④按班级查询模块用于按班级查询学生信息。
输入所要查询的班号,程序读取stu_kard.txt文件中的信息查找出对应班级下相关的学生信息并将其显示出来。
voidchaxunb()//查询班级信息函数
inti;
intbanhao;
i=0;
是要查询学生班级信息吗?
)//输入y表示要查询学生的班级信息
请输入班号:
banhao);
for(i=0;
!
feof(fp);
i++)//循环从文件总读取记录,与stud[i].banji相比,
if(banhao==stud[i].banhao)//如果banji号相同,显示该条记录
输入任意字符结束"
///////////////////////////////////////////////
voidxiugai()//修改函数
intxuehao,i;
请输入需要修改学生信息的学号:
r+a"
请输入新的学生信息(以空格隔开)\n姓名性别学号班号单位\n"
fseek(fp,sizeof(structstudent),1);
fwrite(&
}
⑤删除模块用于删除学生的信息。
输入想要删除的学生信息的学号,程序读取stu_kard.txt文件中的信息查找出相应的学生并将其信息删除。
voidshanchu()//删除函数
intj;
j=0;
请输入需要删除学生信息的学号:
if(xuehao==stud[i].xuehao)//查询到该学生信息后删除该学生信息
stud[i].xuehao=0;
stud[i].banhao=0;
strcpy(stud[i].danwei,"
"
strcpy(stud[i].name,"
strcpy(stud[i].sex,"
fwrite(&
删除成功!
break;
⑥修改模块用于修改学生信息。
输入想要修改的学生学号,程序会读取stu_kard.txt文件中的信息查找出相应的学生显示出来并且可以重新修改其学生信息。
[程序]
⑦统计模块用于统计所输入的学生信息,统计的信息包括学生总人数,男生、女生人数,并且可以选择是否显示当前所存储的所有学生的信息。
voidtongji()
charchr;
intren,nan,nv,i;
ren=0;
nan=nv=0;
\n-----统计学生信息----\n"
是否统计当前录入的学生人数?
(yes--yno--n)"
chr);
if(chr=='
)
rb"
i++)
{
if(stud[i].xuehao!
=0)
{
ren++;
if(strcmp(stud[i].sex,"
男"
)==0)
nan++;
elseif(strcmp(stud[i].sex,"
女"
nv++;
}
}
fclose(fp);
当前录入的学生总人数是:
%6d\n"
ren);
其中男生人数:
%6d"
nan);
女生人数:
nv);
else{printf("
取消操作\n"
/////////////////////////////////////////////////////////////////
\n\n\n是否显示所有录入学生信息?
六、调试情况,设计技巧及体会
1、运行该程序,其各个模块的界面图如下:
(1)主菜单函数:
(2)输入模块:
(3)查询学生信息模块:
(4)查询班级信息模块:
(5)修改学生信息模块:
(6)删除模块:
(7)统计模块:
2、对自己设计进行评价
我觉得我的程序比较成功,各个模块在运行中都很正常,基本满足了实习的基本要求,各个模块构成一个功能相对完整的的系统。
3、在设计过程中的感受
对这次实习的最大感受,便是做一个程序应该很细心,因为在编程过程中我很多地方的错误都是不细心,不认真而造成的,但在完成整个程序后,眼看各个功能模块完美的运行成功,又有一种很强的成就感。
7、源程序清单
#include<
iostream.h>
stdlib.h>
stdio.h>
time.h>
conio.h>
string.h>
#defineSIZE5
structstudent
charname[10];
charsex[4];
intxuehao;
chardanwei[10];
}stud[SIZE];
typedefstruct{
charname[10];
}stu;
voidmain();
voidluru();
voidchaxunx();
voidchaxunb();
voidxiugai();
voidshanchu();
voidtongji();
欢迎使用学生证管理系统\n"
***************************1、录入学生信息***********************************\n"
***************************2、查询学生信息***********************************\n"
***************************3、查询班级信息***********************************\n"
***************************4、修改学生信息***********************************\n"
***************************5、删除学生信息***********************************\n"
***************************6、统计学生信息***********************************\n"
***************************7、退出***********************************\n"
///////////////////