C语言课程设计学生信息管理系统.docx
- 文档编号:7552056
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:18
- 大小:336.25KB
C语言课程设计学生信息管理系统.docx
《C语言课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生信息管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
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.调试与测试:
编译工具
C++程序设计学习与实验系统
++
均通过调试!
主菜单
添加新的学生信息
浏览所有学生信息
检索信息库
继续查找下一条
修改学生信息
删除信息库所有记录
五、调试中所遇到的问题及解决方法
1>问题:
程序退出后,再次打开,上次输入的数据无法保存。
解决:
调用fileopen()与filesave()保存文件数据,方便第二次打开程序时仍能调用上次输入的数据。
2>问题:
跳出的界面与选择分支中的对应项不符合。
解决:
改getchar()为getch(),头文件中加””.因为getchar()从输入输出流中一次只能读取一个字符,而且需要以回车来确认输入。
本文件中多次用到getchar(),键盘缓冲区的’\n’会被下次调用getchar()时接收。
而getch()则不会,从键盘上读入一个数据,不给回显,不需要回车确认,按下键就实现了函数。
3>问题:
误输入X,导致退出。
解决:
加标志变量flag=1,用while(flag)循环switch语句,当正确输入时,flag=1,跳出循环。
4>问题:
检索时只能查到第一个学生信息。
解决:
定义数组log(100)记录符合的结构体数组。
循环打印。
5>问题:
不能刷新界面。
解决:
调用system(“cls”)清屏函数。
6>问题:
删除某项信息,返回主函数时不能暂停。
解决:
调用system(“PAUSE”)暂停函数。
六、程序源码
#include""
#include""
#include""
#include""
voidmenu();加新的学生信息│\n");
printf("│2.浏览所有学生信息│\n");
printf("│3.检索学生信息│\n");
printf("│4.保存并退出系统│\n");
printf("││\n");
printf("│byrlk│\n");
printf("└────────────────────┘\n");
while(flag)\n");um);
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++;\n");um);
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()加新的学生信息2.返回主菜单\n");
while(flag)
switch(getch())
{
case'1':
flag=0;add();break;
case'2':
flag=0;menu();break;
default:
printf("※错误!
请重新输入..\n");
}
}
else********\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)号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)续删除"); printf("\n2.不删除,返回主菜单\n"); while(flag) switch(getch()) { case'1': flag=0; for(a=i;a 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");; menu();\n"); } } voidres_num()um,xh))续查找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()ame,mz))续查找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()学号检索\n"); printf("2.按姓名检索\n"); printf("3.返回主菜单\n"); printf("────────────────────\n"); while(flag) switch(getch()) { case'1': flag=0;res_num();break;\n"); } } voidfilesave()//保存data文件; { inti; FILE*fp; fp=fopen("data","r+"); for(i=0;i<100;i++) fwrite(&stu[i],sizeof(structstudent),1,fp); fwrite(&n,4,1,fp); fclose(fp); } 七、心得体会 通过这次C程序课程设计,我感受到了编程是一项非常烦琐周密的活动,它不但需要一个人周密的思考问题的能力,处理问题的能力,还需要有足够的耐心和严谨治学的作风,来不得半点马虎,一点小的错误就可能导致整个程序不能运行。 我初步学会了课程设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理这些资料的能力,使我收益最大的是享受到了一种成功的喜悦。 因为C语言底子比较差,我选择的是相对容易的学生信息管理系统。 先开始,比较快速的把大体程序代码写出来了,然后是进行编译,这个环节是一个非常痛苦和艰难的,常常会因为一小点的错误而在编译失败与再次修改的漫漫循环之路中,但失败的越多,对人的考验就越多,在编译运行成功之后的享受成功的喜悦也就越多,另外在调试程序的过程中不断的思考和运用已经学到的知识,这对于自己是有很大的提高的。 由于所学的知识不多,自己的编程经验不足,仍存在一些问题,如不能实现模糊查找等功能。 按现有的知识水平有些东西暂时还无法解决,还有待于在以后的学习中不断提高和改进!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 信息管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)