C语言课程设计学生信息管理系统文档格式.docx

上传人:b****7 文档编号:22960930 上传时间:2023-02-06 格式:DOCX 页数:24 大小:293.29KB
下载 相关 举报
C语言课程设计学生信息管理系统文档格式.docx_第1页
第1页 / 共24页
C语言课程设计学生信息管理系统文档格式.docx_第2页
第2页 / 共24页
C语言课程设计学生信息管理系统文档格式.docx_第3页
第3页 / 共24页
C语言课程设计学生信息管理系统文档格式.docx_第4页
第4页 / 共24页
C语言课程设计学生信息管理系统文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言课程设计学生信息管理系统文档格式.docx

《C语言课程设计学生信息管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生信息管理系统文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

C语言课程设计学生信息管理系统文档格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1