C语言程序设计与报告:学生信息管理系统设计
更新时间:2024-04-16 02:29:01 阅读量: 综合文库 文档下载
设计题目:学生信息管理系统设计
学号: 院校班级: 姓名: 指导老师:
目 录
一、设计题目----------------------------------------------------------3 二、概述系统----------------------------------------------------------3 三、设计大纲----------------------------------------------------------4 四、运行效果图-------------------------------------------------------5 五、设计流程图-------------------------------------------------------8 六、调试过程--------------------------------------------------------14 七、设计总结--------------------------------------------------------14 八、参考文献--------------------------------------------------------15 九、源程序清单-----------------------------------------------------15
学生信息管理系统设计
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 1、 系统以菜单方式工作。
2、 学生信息录入功能——输入。 3、 学生信息浏览功能——输出。 4、 学生信息查询功能——算法。
按学号查询; 按姓名查询。
5、 学生信息的删除与修改
概述系统
我主要设计一个能实现学生信息管理系统,让它来运行和管理学生信息。它在现实生活中运用方便的、管理方便。它能输入学生学号、年龄、性别、出生年月、地址电话E-mail。系统以菜单的方式进行工作,进入子菜单后,还可以返回主菜单。在子菜单中的各种操作都有
- 2 -
中文说明,操作简单、易懂。只要我们正确的操作系统,系统就无异常现在,当然系统也能对一些基本的错误做出提示,并能让使用者重新进行操作。
对各个操作的成功,如:添加学生信息、修改学生信息、删除学 生信息,系统都输出“…….的成功”的字样。系统对删除和修改前,还进行“确定”和“取消”。系统对不存在的学号和姓名系统能判断是否存在。对已存在的学号,操作者不能添加和这个学号一样的学生信息,同时系统还提示已有此学号。对于修改、删除和查询,系统遇到不存在的学生能提示没有这个信息。
设计大纲
分析题目,想想程序所用到的知识点,再进行分析程序的总体构思。对于用到得知识不太了解,先翻翻书,看一下这方面的知识。为了不让程序看起来乱乱的,把程序分成几个大函数,并有几个文字注释函数的作用。这样程序的各个功能就独自成为一个函数。这样有利于我们对程序错误的检查,及对程序的修改和优化。
做出菜单栏:1.添加学生信息
2.全部学生信息 3.修改学生信息 4.删除学生信息 5.查看学生信息 6.退出系统
由每一个子菜单做为一个函数。 设计大纲:
1:查看有关书籍 2:建立函数结构体 3:编程主函数
4:编程各子菜单函数
5:检查子函数与主函数之间的联系 6:运行程序,如有错误,仔细检查。 7:错误操作的捕获。
8:查看运行效果,如有以下情况(修改代码): (1)发现问题某功能未实现
- 3 -
(2)死循环 (3)运行无效
(4)没有操作提示信息 (5)内存错误
运行效果图
- 4 -
- 5 -
- 6 -
设计流程图
- 7 -
主函数 开始 0 输入语句 判断a值 选择语句switch(a) 添加信息函 数 全部学生信 息 修改学生信 息 删除学生信 息 查看学生信 息 退出系 统 1 2 3 4 5 添加信息1 - 8 -
输出提示, 输入学号 判断num值 num>100 Y 判断num是否已存在 N Y 提示输入,输入num N 提示重新输入num 提示输入,输入学生信息 判断num<100 是否继续添加信息 N 0 Y
- 9 -
输出全部信息2 输出一些文字 for(i=0;i<=100;i++) Y N 输出stu[i]的信息 0
- 10 -
修改信息3 提示输入,输入学号 判断num是否存在 N Y 输出修改信息,提问是否修改 Y 修改信息 提示num不存在,并提问是否继续修改 N Y 提问是否 继续修改 Y N 0
- 11 -
信息4 提示输入,输入删除学号 N 说明不判断是否存在此存在num 信息 Y 输出删除的信息 N 并提问是否删除 提问是否继续删除 Y stu[num-1].num=0 N 输出删除成功 0 - 12 -
Y
删除查看信息5 提示查询方式,并选择 按学号 按姓名 输入学号 输入姓名 num是否存在 N 提示,并重新输入num Y 输出查询信息 提示,并重新输入姓名 N 姓名是否存在 Y 输出查询信息 Y 提问是否继续查询 N N 提问是否继续查询 Y 0
- 13 -
调试过程
设计一个程序,错误是难免不了的。但我们可以根据编辑系统给
出的一些提示去查看程序错误。对不敢肯定正确的,翻翻书,看一下这一知识。对难度大的就和同学们一起讨论,问一问老师。
开发一个系统,耐心是必要的,认真也很重要,构思要明确。
认为是哪里错误的,有时用“/* */”注释起来进行,看看是否还有错误。
常错有以下几种情况:
1.使用变量,但未有定义,则先定义。 2.不该用分号的,用到了,把它去掉。
3.行最后若有分号则删除,中间若有分号则改成逗号
4.若错误行中有if、while、for则要特别注意条件表达式的错误。 5.若条件表达式中只有一个等于号,则改成两个等于号。 6.for中要用分号分隔表达式,而不是用逗号
7.缺少分号,若错误行中有语句没有用分号结束,则加上分号。
8.大小写不对,若错误行中有大写字母则一般都改成小写字母。 9.若有return语句则函数的类型必须与return后变量的类型一致。
设计总结
通过本次C程序课程设计,我觉得对自己提高很大:克服了的偷懒的毛病,这在我以后的学习和工作中的心理定位与调节有很大的帮助。我感受到了编程是一项非常烦琐周密的活动,他不但需要一个人周密的思考问题的能力,处理问题的能力,还需要有足够的耐心和严谨治学的作风,来不得半点马虎。
通过本次程序设计,我初步学会了程序设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理这些资料的能力,我上网和上图书馆查找资料,编写C语言原程序,然后是进行编译,这个环节是一个非常痛苦和艰难的,常常会因为一小点的错误而在编译失败与再次修改的漫漫循环之路中,但失败的越多,对人的考验就越多,在编译运行成功之后的享受成功的喜悦也就越多,另外在调试程序的过程中不断的思考和运用已经学到的知识,这对于自己是有很大的提高的。
- 14 -
参考文献
[1]谭浩强著. C语言程序设计(第三版). 清华大学出版社,2005
[2]谭浩强编著. C程序设计题解与上机指导(第二版)清华大学出版社,1999 [3]C编写组编. 常用C语言用法速查手册. 北京:龙门书局,1995
源程序清单
#include
struct student /*结构体*/ {int num;
char name[20]; //学号 char sex[5]; //姓名 int age; //性别 char bro[15]; //年龄 char add[30]; //住址 char phone[13]; //手机号 char em[20]; //E-mail }stu[100]; //结构体名
int looknum(int num) /*查看是否有这个学号的函数*/ { int i;
for(i=0;i<=100;i++)
if(stu[i].num==num) return(num); }
tiaojia() /*添加信息函数*/ { int num,num2,i,x;
G:printf(\请输入学号:\H:scanf(\V:if(num>100)
{printf(\这个学号太大了!\\n请输入1--100 的学号:\ scanf(\ if(num>100)goto V; printf(\ }
num2=looknum(num);
if(num==num2) /*判断这个学号是否存在*/
{printf(\这个学号已经存在,请重新输入另一个学号。 goto H; }
- 15 -
\
i=num-1;
stu[i].num=num;
printf(\请输入姓名:\ scanf(\ printf(\请输入性别:\ scanf(\ printf(\请输入年龄:\ scanf(\
printf(\请输入出生日期:\ scanf(\ printf(\请输入住址:\ scanf(\
printf(\请输入手机号:\ scanf(\ printf(\请输入E-maill:\ scanf(\
printf(\添加信息成功*>\\n\\n\ printf(\继续添加\\n\ printf(\退出添加\\n\ scanf(\ switch(x)
{case 1:goto G; default:break;} }
quanbu()/*输出全部信息函数*/ {int i;
printf(\全部学生信息如下\\n\\n\
printf(\学号\\t姓名\\t性别\\t年龄\\t出生日期\\t住址\\t手机号\\t\\tE-mail\\n\
for(i=0;i<=100;i++)
if(stu[i].num!=0)printf(\stu[i].name,stu[i].sex,stu[i].age,stu[i].bro,stu[i].add,stu[i].phone,stu[i].em); }
xiugai()/*修改信息函数*/ { int x,y,num,num2;
K:printf(\请输入要修改的学号:\ scanf(\ num2=looknum(num);
- 16 -
if(num==num2) /*判断这个学号是否存在*/ { printf(\这个学号信息如下\\n\\n\
printf(\学号\\t姓名\\t性别\\t年龄\\t出生日期\\t住址\\t手机号\\t\\tE-mail\\n\
printf(\.name,stu[num-1].sex,stu[num-1].age,stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em); printf(\确认修改\ printf(\取消修改\\n\ scanf(\ if(x==1)
{stu[num-1].num=num; printf(\请输入姓名:\ scanf(\ printf(\请输入性别:\ scanf(\ printf(\请输入年龄:\ scanf(\ printf(\请输入出生日期:\ scanf(\ printf(\请输入住址:\ scanf(\ printf(\请输入手机号:\ scanf(\ printf(\请输入E-maill:\ scanf(\
printf(\修改信息成功*>\\n\ goto P; }
else goto P; } else
{printf(\没有这个学号,你可能记错了!\\n\ P:printf(\继续修改\\n\ printf(\退出修改\\n\ scanf(\ switch(y)
{case 1:goto K; default:break; }
- 17 -
} }
void shanchu()/*删除信息函数*/ {int x=2,y=2,num,num2;
L:printf(\请输入要删除的学号:\ scanf(\ num2=looknum(num);
if(num==num2) /*判断这个学号是否存在*/ {printf(\这个学号信息如下\\n\\n\
printf(\学号\\t姓名\\t性别\\t年龄\\t出生日期\\t住址\\t手机号\\t\\tE-mail\\n\
printf(\.name,stu[num-1].sex,stu[num-1].age,stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em); printf(\确认删除\ printf(\取消删除\\n\ scanf(\ switch(x)
{case 1:{stu[num-1].num=0;
printf(\删除信息成功*>\\n\ default:break; }
goto D; } else
{printf(\没有这个学号,你可能记错了!\\n\ D:printf(\继续删除\\n\ printf(\退出删除\\n\ scanf(\ switch(y)
{case 1:goto L; default:break;} } }
void chakan()/*查看信息函数*/ {
int x=1,y=2,z=2,i,num,num2; char name,name2;
- 18 -
printf(\按学号查询\\n\\t2.按姓名查询\\n\ scanf(\ /*输入查看方式*/ if(x==1) /*学号查询*/ {
M:printf(\请输入查看的学号:\ scanf(\ num2=looknum(num);
if(num==num2) /*判断这个学号是否存在*/ {printf(\这个学号信息如下\\n\\n\
printf(\学号\\t姓名\\t性别\\t年龄\\t出生日期\\t住址\\t手机号\\t\\tE-mail\\n\
printf(\.name,stu[num-1].sex,stu[num-1].age,stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em); goto J; } else
{printf(\没有这个学号,你可能记错了!\\n\ J: printf(\继续查看\\n\ printf(\退出查看\\n\ scanf(\ switch(y)
{case 1:goto M; default:break; } } }
if(x==2) /*姓名查询*/ {
U:printf(\请输入查看的姓名:\ scanf(\ for(i=0;i<=100;i++)
{if(strcmp(&stu[i].name,&name)==0)/*字符串比较*/ if(stu[i].num!=0) /*判断这个学号是否存在*/ {printf(\这个姓名信息如下\\n\\n\
printf(\学号\\t姓名\\t性别\\t年龄\\t出生日期\\t住址\\t手机号\\t\\tE-mail\\n\
printf(\.sex,stu[i].age,stu[i].bro,stu[i].add,stu[i].phone,stu[i].em);
- 19 -
goto Q; } }
if(i==101)
{printf(\没有这个姓名,你可能记错了!\\n\Q: printf(\继续查看\\n\ printf(\退出查看\\n\ scanf(\ switch(z)
{case 1:goto U; default:break;} } } }
main()/*主函数*/ { int a;
printf(\编辑系统--XXXX*\\n\\n\ printf(\未经允许,不得使用\\n\ printf(\
T:printf(\添加学生信息\\n\\t 2.全部学生信息\\n\\t 3.修改学生信息\\n\\t 4.删除学生信息\\n\\t 5.查看学生信息\\n\\t 6.退出系统\\n\ scanf(\ switch(a)
{case 1:tiaojia();goto T; case 2:quanbu();goto T; case 3:xiugai();goto T; case 4:shanchu();goto T; case 5:chakan();goto T; case 6:break;
default: printf(\你的输入不正确,请再次输入:\\n\ }
printf(\谢谢您对本系统的支持和使用\\n\\n\
printf(\年4月29日\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\ }
- 20 -
正在阅读:
衬里方案05-30
机械回填土技术交底08-13
智能配用电网通信技术应用分析12-24
关于深入开展我的中国梦主题教育活动的通知06-18
《2018年高考全国卷考试大纲的说明》题型示例 - 图文09-22
机关事务局2020年党支部书记抓基层党建工作述职报告08-31
《毕业赠言》教学设计03-30
1998年考研英语真题及详解04-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 管理系统
- 语言
- 报告
- 学生
- 设计
- 信息