学生学籍管理系统课程设计1文档格式.docx
《学生学籍管理系统课程设计1文档格式.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统课程设计1文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
直到编译成功为止。
(3)执行运行操作,逐一对每个模块进行调试。
直到全部程序运行成功为止。
(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。
三、需求分析
1.该学生学籍管理系统,添加用户密码登陆功能,能够完成学生基本信息的录入、修改、添加、查询、删除、排序、输出、退出操作。
每个模块的功能如下:
A、录入模块能够完成学生学号、姓名、性别、年龄、出生年月、所在院系专业、学制、班级的输入。
B、更新模块中可以对学生信息进行添加、删除、修改。
C、查询模块能按学号或姓名查询一个学生的全部信息,并能显示该学生的全部信息,可以查询所有已经录入的学生信息。
D、排序模块将按照学生学号的顺序进行所有学生基本信息的排序并显示。
E、退出模块可直接退出此程序,结束操作。
2.创建该学生学籍管理系统目的就是能够对学生基本信息进行创建(录入)、修改、添加、查询、删除、排序等功能,这样可以简化许多人工做起来很复杂的问题。
譬如:
“排序”,有了此程序只需将信息输入,计算机就可自动执行,省时、省力。
另外,它还可以重复使用,方便、快捷。
3.该学生信息管理系统是在VC++6.0环境下运行。
方法:
1、添加学生信息:
选择添加输入学生信息。
2、删除学生信息:
可选择按学号进行删除,如要删除某学生的信息,按学号删除,输入该学生的学号,核对屏幕上的信息,确认删除即可。
3、修改学生信息:
输入要修改学生的学号,显示该生所有信息,可按屏幕所显示的提示操作,修改其任意信息,如选择修改年龄,再输入,显示出修改后的信息,然后询问是否继续。
Y则继续,N则退回主界面。
4、查询模块:
按姓名或学号选择对应的选项进行查询。
5、排序模块:
选择按学号排序
四、概要设计
1.系统结构图(功能模块图)
对系统进行分析,给出系统结构图:
主函数
1.删除模块:
删除一个学生的信息。
del()
2.修改模块:
对一个学生的信息中错误的部分进行修改。
Change()
3.添加模块:
添加一个学生的信息。
insert_message()
1.按姓名查询
2.按学号查询。
1.升序排列
2.降序排列
退出系统
2.功能模块说明
对各个模块进行功能的描述:
(1).输入模块:
Input()
实现学生基本信息的基本输入如学号、姓名、性别、年龄、出生年月、所在院系专业、学制、班级。
(2).排序模块:
voidsort(structstudent_typestudents[],intsum)
根据统计信息将住宿人员按某因素进行排序。
(3).更新模块:
A.修改模块:
voidmodify(structstudent_typestudents[],intsum)
B.添加模块:
voidadd(structstudent_typestudents[],int*sum)
C.删除模块:
intdel(structstudent_typestudents[],intsum)
处理各种可能出现的意外情况如想插入新数据,修改某学生信息,删除错误信息等。
(4).查询模块:
按照学号进行查询并显示学生的信息:
voidreserch(structstudent_typestudents[],intsum)
根据一定规则排序好的数据,输入一定信息后显示该信息的其他信息。
(5).输出模块:
Output(),将查询结果输出。
五、详细设计及运行结果
流程图,函数之间相互调用的图示,程序设计及编码,运行结果。
六、调试情况,设计技巧及体会
1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
通过两周的编程,我完成了学生证管理这个小系统。
进一步理解并掌握了C语言中的精华指针和结构体。
程序可以流畅运行,实现对数据的录入、修改、插入、删除、排序、查询、统计等基本功能。
程序开始时从文件中读取数据,结束时对新数据或更新的数据进行保存,以便下次再次调用。
但不足之处在于我没有用链表。
2、在设计过程中的感受。
本次课程设计我感受颇深,对我无疑是一次巨大大的挑战,实习过程中我深刻感受到我C语言编程方面的不足,尤其是链表的使用,我虽然完成了本次设计,但没能使用链表是我最大的遗憾,今后我会在此方面多下工夫,熟练掌握他。
还有此次实习对我函数,结构体,指针,文件,等各方面的知识来了一次系统的复习,是我明白自己还存在很多很多的不足,以后还需多下工夫,真正实现很完整优秀的编程。
七、参考文献
1.《C语言程序设计》王曙燕曹锰科学出版社2005年2月
2.《C语言程序设计》谭浩强清华大学出版社1999年12月
八、附录:
源代码
(略,详见电子版实验报告)
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
#defineMAX100
intm=3;
structday_type/*日期结构体类型*/
{
intyear;
intmonth;
};
structstudent_type
charnum[10];
/*学号*/
charname[10];
/*姓名*/
charsex[4];
/*性别(男为m,女为w)*/
intage;
/*年龄*/
structday_typebirthday;
/*出生年月*/
charaa[20];
/*所在院系专业*/
intxue[10];
/*学制*/
intclas;
/*班级*/
};
intnumber;
intread_file(structstudent_typestudents[])
{FILE*fp;
inti=0;
if((fp=fopen("
student.txt"
"
rt"
))==NULL)
{printf("
\n库存文件不存在,请创建!
\n"
);
return0;
}
while(!
feof(fp))
{fread(&
students[i],sizeof(structstudent_type),1,fp);
if(students[i].num==0)
break;
else
i++;
fclose(fp);
returni;
}
voidsave_file(structstudent_typestudents[],intsum)
inti;
wt"
{printf("
读文件错误\n"
return;
for(i=0;
i<
sum;
i++)
if(fwrite(&
students[i],sizeof(structstudent_type),1,fp)!
=1)
printf("
写文件错误\n"
voidmima(void)
{
intj;
charmima[4];
printf("
请输入密码:
"
for(j=0;
j<
6;
j++)
{
intt;
for(t=0;
t<
3;
t++)
{
mima[t]=getch();
putch('
*'
}
mima[3]='
\0'
;
getch();
if(strcmp(mima,"
123"
)==0)
printf("
成功登陆!
\t欢迎您的到来!
break;
if(m==0)
inti;
密码错误,请您停止输入!
由于您设置了密码提示,按任意键进入下一步操作!
getch();
\t\t1:
找回密码;
\n\t\t2:
退出系统!
!
scanf("
%d"
&
i);
while
(1)
{
if(i==1)
break;
if(i==2)
exit(0);
}
if(m!
=4)
\n\t\t密码错误!
\n\t\t\t你还有%d次输入机会!
m);
m--;
请重新输入密码:
/*输入模块*/
intinput(structstudent_typestudents[])
system("
cls"
\n请输入要录入的学生的个数(最多%d个):
MAX);
scanf("
number);
\n\n录入学生学生证信息(最多录入%d个)\n"
number);
---------------------------------------\n"
while(i<
number)
{
\n第%d个学生"
i+1);
\n学生学号:
%s"
students[i].num);
if(students[i].num==0)break;
\n学生姓名:
students[i].name);
\n学生性别(男为m,女为w):
students[i].sex);
\n学生年龄:
students[i].age);
\n学生出生年月(xxxx-yy):
%d-%d"
students[i].birthday.year,&
students[i].birthday.month);
\n所在院系专业: