C语言课程设计学生信息管理系统文档格式.docx
《C语言课程设计学生信息管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生信息管理系统文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
voidres_name();
按检索;
voidres_num();
按学号检索;
voiddel(inti);
删除学生信息;
voidmodify(inti);
修改学生信息;
voidfileopen();
打开文件;
voidfilesave();
保存文件;
调用关系
4.调试与测试:
Ø
编译工具
1.C/C++程序设计学习与实验系统
2.Tc
3.VC++6.0
均通过调试!
主菜单
添加新的学生信息
浏览所有学生信息
检索信息库
继续查找下一条
修改学生信息
删除信息库所有记录
五、调试中所遇到的问题及解决方法
问题:
程序退出后,再次打开,上次输入的数据无法保存。
解决:
调用fileopen()与filesave()保存文件数据,方便第二次打开程序时仍能调用上次输入的数据。
跳出的界面与选择分支中的对应项不符合。
改getchar()为getch(),头文件中加”conio.h”.因为getchar()从输入输出流中一次只能读取一个字符,而且需要以回车来确认输入。
本文件中多次用到getchar(),键盘缓冲区的’\n’会被下次调用getchar()时接收。
而getch()则不会,从键盘上读入一个数据,不给回显,不需要回车确认,按下键就实现了函数。
3>
误输入X,导致退出。
加标志变量flag=1,用while(flag)循环switch语句,当正确输入时,flag=1,跳出循环。
4>
检索时只能查到第一个学生信息。
定义数组log(100)记录符合的结构体数组。
循环打印。
5>
不能刷新界面。
调用system(“cls”)清屏函数。
6>
删除某项信息,返回主函数时不能暂停。
调用system(“PAUSE”)暂停函数。
六、程序源码
#include"
stdio.h"
string.h"
stdlib.h"
conio.h"
//声明所有函数;
;
//定义全局变量x,减少代码量;
intn=0;
//定义全局变量n,代表信息条数;
structstudent//定义结构体数组stu[100];
{
charnum[15];
charname[30];
charsex[2];
charxi[30];
charban[10];
charbirth[10];
charaddress[30];
chartel[20];
}stu[100];
voidmain()//主函数;
fileopen();
menu();
//调用menu()函数,打开主界面;
filesave();
}
voidfileopen()//打开data文件;
FILE*fp;
inti;
if((fp=fopen("
data"
"
r+"
))==NULL)//若无data文件,则新建;
fp=fopen("
w+"
);
for(i=0;
i<
100;
i++)//读取数据;
fread(&
stu[i],sizeof(structstudent),1,fp);
n,4,1,fp);
fclose(fp);
voidmenu()//主菜单;
intflag=1;
//定义标志标量flag;
system("
cls"
//清屏函数;
printf("
┌────────────────────┐\n"
//主界面;
│☆欢迎登录学生信息管理系统★│\n"
││\n"
│1.添加新的学生信息│\n"
│2.浏览所有学生信息│\n"
│3.检索学生信息│\n"
│4.保存并退出系统│\n"
│byrlk│\n"
└────────────────────┘\n"
while(flag)//防止用户误选导致退出;
switch(getch())//用switch分支选择语句;
getch()获取用户键入值;
{
case'
1'
:
flag=0;
add();
break;
//当用户选择1时,调用add()函数,添加新的学生信息;
2'
scan();
//当用户选择2时,调用scan()函数,浏览所有学生信息;
case'
3'
res();
//当用户选择3时,调用res()函数,检索学生信息;
4'
printf("
√保存成功!
"
//当用户选择4时,调用flag()函数,退出系统;
default:
※错误!
请重新输入..\n"
//其它输入,提示错误;
}
}
voidadd()//信息添加函数;
──────────%2d───────────\n"
n+1);
//逐一输入各项数据;
*添加新的学生信息*\n"
①学号:
scanf("
%s"
&
stu[n].num);
②:
stu[n].name);
③性别:
stu[n].sex);
④系名:
stu[n].xi);
⑤班级名:
stu[n].ban);
⑥出生年月:
stu[n].birth);
⑦住址:
stu[n].address);
⑧:
stu[n].tel);
──────────────────────\n"
\n√添加成功!
\n\n☆请选择:
1.继续添加2.返回主菜单\n"
n++;
//总信息量增加一项;
while(flag)
switch(getch())
case'
//选择'
,重新调用add();
menu();
,调用menu(),返回主菜单;
default:
}
voidprint(inti)//学生信息打印函数;
──────────%2d──────────\n"
i+1);
%s\n"
stu[i].num);
stu[i].name);
stu[i].sex);
stu[i].xi);
stu[i].ban);
stu[i].birth);
stu[i].address);
stu[i].tel);
─────────────────────\n"
voidscan()//信息浏览函数;
inti,flag=1;
system("
if(n==0)//当n==0时,信息库中无记录;
{
当前信息库记录为0!
\n"
☆请选择:
1.添加新的学生信息2.返回主菜单\n"
switch(getch())
case'
default:
}
else//当n不为0时,打印信息;
**********目前信息库里共有%d条记录.*********\n"
n);
for(i=0;
n;
i++)print(i);
printf("
1.检索信息库2.添加新的学生信息\n"
3.删除所有记录4.返回主菜单\n"
while(flag)
flag=0;
printf("
\n!
!
警告:
您将删除信息库所有记录!
\n☆请选择:
1.确认删除2.返回\n"
flag=1;
while(flag)
switch(getch())
n=0;
√已删除!
system("
PAUSE"
}break;
voidmodify(inti)//信息修改函数;
────────────────────────\n"
//信息修改界面;
☆请输入你想修改的容:
1.学号2.3.性别4.系名\n"
5.班级名6.出生年月7.住址8.\n"
请重新输入学号:
scanf("
stu[i].num);
请重新输入:
stu[i].name);
请重新输入性别:
stu[i].sex);
请重新输入系名:
stu[i].xi);
5'
请重新输入班级名:
stu[i].ban);
6'
请重新输入出生年月:
stu[i].birth);
7'
请重新输入住址:
stu[i].address);
8'
stu[i].tel);
请重新输入.."
√修改成功!
\n修改后的学生信息:
print(i);
//暂停函数:
按任意键继续..;
1.继续修改此学生信息2.查看下一条相关信息3.返回主菜单\n"
flag=1;
modify(i);
voiddel(inti)//信息删除函数;
inta,flag=1;
您将删除此条学生信息!
\n☆请输入:
1.继续删除"
\n2.不删除,返回主菜单\n"
flag=0;
for(a=i;
a<
n-1;
a++)//拷贝后一个学生信息到前一个人上。
strcpy(stu[a].num,stu[a+1].num);
strcpy(stu[a].name,stu[a+1].name);
strcpy(stu[a].sex,stu[a+1].sex);
strcpy(stu[a].xi,stu[a+1].xi);
strcpy(stu[a].ban,stu[a+1].ban);
strcpy(stu[a].birth,stu[a+1].birth);
strcpy(stu[a].address,stu[a+1].address);
strcpy(stu[a].tel,stu[a+1].tel);
n--;
√删除成功!
//总信息量减少一项;
menu();
break;
flag=0;
//返回主菜单;
voidres_num()//按学号检索函数;
inti,j=0,flag=1,log[100];
charxh[15];
******************************************\n"
\n☆请输入要检索的学号:
xh);
i++)
if(!
strcmp(stu[i].num,xh))//字符串比较函数;
while(j<
100){log[j]=i;
j++;
}//记录下相关的信息;
j)//信息库中没查找到所需信息;
对不起,信息库里没要你想要查找的信息!
\n******************************************\n"
\n☆请选择:
1.继续查找2.返回主菜单\n"
else
\n在信息库中共找到%d条相关信息..\n"
j);
j;
\n第%d条\n"
print(log[i]);
1.修改此学生信息2.删除此学生信息\n"
3.继续查找下一条4.返回主菜单\n"
modify(log[i]);
del(log[i]);
\n已到最后一条相关信息..\n"
voidres_name()//按检索函数;
charmz[20];
\n☆请输入要检索的:
mz);
strcmp(stu[i].name,mz))//字符串比较函数;
\n※已到最后一条相关信息..\n"
voidres()//检索函数;
────────────────────\n"
//检索界面;
*检索模式选择*\n"
1.按学号检索\n"
2.按检索\n"
3.返回主菜单\n"
res_num();
//调用res_num()函数,按学号检索;
res_name();
//调用res_name()函数,按检索;
//调用menu()函数,返回主菜单;
v