C语言课程设计学生信息管理系统教学内容.docx

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

C语言课程设计学生信息管理系统教学内容.docx

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

C语言课程设计学生信息管理系统教学内容.docx

C语言课程设计学生信息管理系统教学内容

 

C语言课程设计学生信息管理系统

C语言课程设计实验报告

一、设计目的:

学生信息包括:

学号、姓名、性别、系名、班级名、出生年月、住址、电话号码。

设计一学生信息管理系统,使之能提供以下功能:

1.系统以菜单方式工作;

2.学生信息录入功能(输入);

3.学生信息浏览功能(输出);

4.学生信息检索功能;

5.学生信息的删除与修改功能;

二、总体设计思路:

1>程序设计组成框图

 

2>N-S流程图

 

三、详细设计说明:

1>头文件

#include

#include

#include

#include

2>数入口说明

main();主函数;

voidmenu();主菜单界面;

voidadd();添加新的学生信息;

voidprint(inti);打印学生信息;

voidscan();查找学生信息;

voidres();检索学生信息界面;

voidres_name();按姓名检索;

voidres_num();按学号检索;

voiddel(inti);删除学生信息;

voidmodify(inti);修改学生信息;

voidfileopen();打开文件;

voidfilesave();保存文件;

2>调用关系

 

 

4.调试与测试:

Ø编译工具

1.C/C++程序设计学习与实验系统

2.Tc

3.VC++6.0

均通过调试!

Ø主菜单

Ø添加新的学生信息

Ø浏览所有学生信息

Ø检索信息库

Ø继续查找下一条

 

Ø修改学生信息

Ø删除信息库所有记录

 

五、调试中所遇到的问题及解决方法

1>问题:

程序退出后,再次打开,上次输入的数据无法保存。

解决:

调用fileopen()与filesave()保存文件数据,方便第二次打开程序时仍能调用上次输入的数据。

2>问题:

跳出的界面与选择分支中的对应项不符合。

解决:

改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"

#include"string.h"

#include"stdlib.h"

#include"conio.h"

voidmenu();//声明所有函数;

voidadd();

voidprint(inti);

voidscan();

voidres();

voidres_name();

voidres_num();

voiddel(inti);

voidmodify(inti);

voidfileopen();

voidfilesave();

;//定义全局变量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("data","w+");

for(i=0;i<100;i++)//读取数据;

fread(&stu[i],sizeof(structstudent),1,fp);

fread(&n,4,1,fp);

fclose(fp);

}

voidmenu()//主菜单;

{

intflag=1;//定义标志标量flag;

system("cls");//清屏函数;

printf("┌────────────────────┐\n");//主界面;

printf("│☆欢迎登录学生信息管理系统★│\n");

printf("││\n");

printf("│1.添加新的学生信息│\n");

printf("│2.浏览所有学生信息│\n");

printf("│3.检索学生信息│\n");

printf("│4.保存并退出系统│\n");

printf("││\n");

printf("│byrlk│\n");

printf("└────────────────────┘\n");

while(flag)//防止用户误选导致退出;

switch(getch())//用switch分支选择语句;getch()获取用户键入值;

{

case'1':

flag=0;add();break;//当用户选择1时,调用add()函数,添加新的学生信息;

case'2':

flag=0;scan();break;//当用户选择2时,调用scan()函数,浏览所有学生信息;

case'3':

flag=0;res();break;//当用户选择3时,调用res()函数,检索学生信息;

case'4':

flag=0;printf("√保存成功!

");break;//当用户选择4时,调用flag()函数,退出系统;

default:

printf("※错误!

请重新输入..\n");//其它输入,提示错误;

}

}

voidadd()//信息添加函数;

{

intflag=1;

system("cls");//清屏函数;

printf("──────────%2d───────────\n",n+1);//逐一输入各项数据;

printf("*添加新的学生信息*\n");

printf("①学号:

");

scanf("%s",&stu[n].num);

printf("②姓名:

");

scanf("%s",&stu[n].name);

printf("③性别:

");

scanf("%s",&stu[n].sex);

printf("④系名:

");

scanf("%s",&stu[n].xi);

printf("⑤班级名:

");

scanf("%s",&stu[n].ban);

printf("⑥出生年月:

");

scanf("%s",&stu[n].birth);

printf("⑦住址:

");

scanf("%s",&stu[n].address);

printf("⑧电话号码:

");

scanf("%s",&stu[n].tel);

printf("──────────────────────\n");

printf("\n√添加成功!

\n\n☆请选择:

1.继续添加2.返回主菜单\n");

n++;//总信息量增加一项;

while(flag)

switch(getch())

{

case'1':

flag=0;add();break;//选择'1',重新调用add();

case'2':

flag=0;menu();break;//选择'2',调用menu(),返回主菜单;

default:

printf("※错误!

请重新输入..\n");//其它输入,提示错误;

}

}

voidprint(inti)//学生信息打印函数;

{

printf("──────────%2d──────────\n",i+1);

printf("①学号:

%s\n",stu[i].num);

printf("②姓名:

%s\n",stu[i].name);

printf("③性别:

%s\n",stu[i].sex);

printf("④系名:

%s\n",stu[i].xi);

printf("⑤班级名:

%s\n",stu[i].ban);

printf("⑥出生年月:

%s\n",stu[i].birth);

printf("⑦住址:

%s\n",stu[i].address);

printf("⑧电话号码:

%s\n",stu[i].tel);

printf("─────────────────────\n");

}

voidscan()//信息浏览函数;

{

inti,flag=1;

system("cls");

if(n==0)//当n==0时,信息库中无记录;

{

printf("──────────────────────\n");

printf("当前信息库记录为0!

\n");

printf("──────────────────────\n");

printf("☆请选择:

1.添加新的学生信息2.返回主菜单\n");

while(flag)

switch(getch())

{

case'1':

flag=0;add();break;

case'2':

flag=0;menu();break;

default:

printf("※错误!

请重新输入..\n");

}

}

else//当n不为0时,打印信息;

{

printf("**********目前信息库里共有%d条记录.*********\n",n);

for(i=0;i

printf("☆请选择:

1.检索信息库2.添加新的学生信息\n");

printf("3.删除所有记录4.返回主菜单\n");

while(flag)

switch(getch())

{

case'1':

flag=0;res();break;

case'2':

flag=0;add();break;

case'3':

flag=0;

printf("\n!

!

!

!

!

!

!

!

!

!

!

!

警告:

您将删除信息库所有记录!

!

!

!

!

!

!

!

!

!

!

!

\n");

printf("\n☆请选择:

1.确认删除2.返回\n");

flag=1;

while(flag)

switch(getch())

{

case'1':

flag=0;n=0;printf("√已删除!

\n");system("PAUSE");scan();break;

case'2':

flag=0;scan();

default:

printf("※错误!

请重新输入..\n");

}break;

case'4':

flag=0;menu();break;

default:

printf("※错误!

请重新输入..\n");

}

}

}

voidmodify(inti)//信息修改函数;

{

intflag=1;

printf("────────────────────────\n");//信息修改界面;

printf("☆请输入你想修改的内容:

\n");

printf("1.学号2.姓名3.性别4.系名\n");

printf("5.班级名6.出生年月7.住址8.电话号码\n");

printf("────────────────────────\n");

while(flag)

switch(getch())

{

case'1':

flag=0;printf("请重新输入学号:

");scanf("%s",&stu[i].num);break;

case'2':

flag=0;printf("请重新输入姓名:

");scanf("%s",&stu[i].name);break;

case'3':

flag=0;printf("请重新输入性别:

");scanf("%s",&stu[i].sex);break;

case'4':

flag=0;printf("请重新输入系名:

");scanf("%s",&stu[i].xi);break;

case'5':

flag=0;printf("请重新输入班级名:

");scanf("%s",&stu[i].ban);break;

case'6':

flag=0;printf("请重新输入出生年月:

");scanf("%s",&stu[i].birth);break;

case'7':

flag=0;printf("请重新输入住址:

");scanf("%s",&stu[i].address);break;

case'8':

flag=0;printf("请重新输入电话号码:

");scanf("%s",&stu[i].tel);break;

default:

printf("※错误!

请重新输入..");

}

printf("√修改成功!

\n修改后的学生信息:

\n");

print(i);

system("PAUSE");//暂停函数:

按任意键继续..;

printf("☆请选择:

1.继续修改此学生信息2.查看下一条相关信息3.返回主菜单\n");

flag=1;

while(flag)

switch(getch())

{

case'1':

flag=0;modify(i);break;

case'2':

flag=0;break;

case'3':

flag=0;menu();

default:

printf("※错误!

请重新输入..\n");

}

}

voiddel(inti)//信息删除函数;

{

inta,flag=1;

printf("\n!

!

!

!

!

!

!

!

!

!

!

!

警告:

您将删除此条学生信息!

!

!

!

!

!

!

!

!

!

!

!

");

printf("\n☆请输入:

1.继续删除");

printf("\n2.不删除,返回主菜单\n");

while(flag)

switch(getch())

{

case'1':

flag=0;

for(a=i;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--;

printf("√删除成功!

\n");//总信息量减少一项;

system("PAUSE");

menu();

break;

case'2':

flag=0;

system("PAUSE");//暂停函数:

按任意键继续..;

menu();//返回主菜单;

break;

default:

printf("※错误!

请重新输入..\n");

}

}

voidres_num()//按学号检索函数;

{

inti,j=0,flag=1,log[100];

charxh[15];

system("cls");

printf("******************************************\n");

printf("\n☆请输入要检索的学号:

");

scanf("%s",&xh);

for(i=0;i

if(!

strcmp(stu[i].num,xh))//字符串比较函数;

while(j<100){log[j]=i;j++;break;}//记录下相关的信息;

if(!

j)//信息库中没查找到所需信息;

{

printf("对不起,信息库里没要你想要查找的信息!

\n");

printf("\n******************************************\n");

printf("\n☆请选择:

1.继续查找2.返回主菜单\n");

while(flag)

switch(getch())

{

case'1':

flag=0;res();break;

case'2':

flag=0;menu();break;

default:

printf("※错误!

请重新输入..\n");

}

}

else

{

printf("\n在信息库中共找到%d条相关信息..\n",j);

for(i=0;i

{

flag=1;

printf("\n第%d条\n",i+1);

print(log[i]);

printf("\n******************************************\n");

printf("\n☆请选择:

1.修改此学生信息2.删除此学生信息\n");

printf("3.继续查找下一条4.返回主菜单\n");

while(flag)

switch(getch())

{

case'1':

flag=0;modify(log[i]);break;

case'2':

flag=0;del(log[i]);break;

case'3':

flag=0;break;

case'4':

flag=0;menu();break;

default:

printf("※错误!

请重新输入..\n");

}

}

printf("\n已到最后一条相关信息..\n");

system("PAUSE");//暂停函数:

按任意键继续..;

menu();

}

}

voidres_name()//按姓名检索函数;

{

inti,j=0,flag=1,log[100];

charmz[20];

system("cls");

printf("******************************************\n");

printf("\n☆请输入要检索的姓名:

");

scanf("%s",&mz);

for(i=0;i

if(!

strcmp(stu[i].name,mz))//字符串比较函数;

while(j<100){log[j]=i;j++;break;}//记录下相关的信息;

if(!

j)//信息库中没查找到所需信息;

{

printf("对不起,信息库里没要你想要查找的信息!

\n");

printf("\n******************************************\n");

printf("\n☆请选择:

1.继续查找2.返回主菜单\n");

while(flag)

switch(getch())

{

case'1':

flag=0;res();break;

case'2':

flag=0;menu();break;

default:

printf("※错误!

请重新输入..\n");

}

}

else

{

printf("\n在信息库中共找到%d条相关信息..\n",j);

for(i=0;i

{

flag=1;

printf("\n第%d条\n",i+1);

print(log[i]);

printf("\n******************************************\n");

printf("\n☆请选择:

1.修改此学生信息2.删除此学生信息\n");

printf("3.继续查找下一条4.返回主菜单\n");

while(flag)

switch(getch())

{

case'1':

flag=0;modify(log[i]);break;

case'2':

flag=0;del(log[i]);break;

case'3':

flag=0;break;

case'4':

flag=0;menu();break;

default:

printf("※错误!

请重新输入..\n");

}

}

printf("\n※已到最后一条相关信息..\n");

system("PAUSE");

menu();

}

}

voidres()//检索函数;

{

intflag=1;

system("cls");

printf("────────────────────\n");//检索界面;

printf("*检索模式选择*\n");

printf("1.按学号检索\n");

printf("2.按姓名检索\n");

printf("3.返回主菜单\n");

printf("────────────────────\n");

while(flag)

switch(getch())

{

case'1':

flag=0;res_num();break;//调用res_num()函数,按学号检索;

case'2':

flag=0;res_name();break;//调用res_name()函数,按姓名检索;

case'3':

flag=0;menu();bre

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

当前位置:首页 > 表格模板 > 合同协议

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

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