资源描述
设计题目:学生信息管理系统设计
学号:
院校班级:
姓名:
指导老师:
目 录
一、设计题目----------------------------------------------------------3
二、概述系统----------------------------------------------------------3
三、设计纲领----------------------------------------------------------4
四、运行效果图-------------------------------------------------------5
五、设计步骤图-------------------------------------------------------8
六、调试过程--------------------------------------------------------14
七、设计总结--------------------------------------------------------14
八、参考文件--------------------------------------------------------15
九、源程序清单-----------------------------------------------------15
学生信息管理系统设计
学生信息包含:学号,姓名,年纪,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功效:
1、 系统以菜单方法工作。
2、 学生信息录入功效——输入。
3、 学生信息浏览功效——输出。
4、 学生信息查询功效——算法。
按学号查询;
按姓名查询。
5、 学生信息删除和修改
概述系统
我关键设计一个能实现学生信息管理系统,让它来运行和管理学生信息。它在现实生活中利用方便、管理方便。它能输入学生学号、年纪、性别、出生年月、地址电话E-mail。系统以菜单方法进行工作,进入子菜单后,还能够返回主菜单。在子菜单中多种操作全部有汉字说明,操作简单、易懂。只要我们正确操作系统,系统就无异常现在,当然系统也能对部分基础错误做出提醒,并能让使用者重新进行操作。
对各个操作成功,如:添加学生信息、修改学生信息、删除学
生信息,系统全部输出“…….成功”字样。系统对删除和修改前,还进行“确定”和“取消”。系统对不存在学号和姓名系统能判定是否存在。对已存在学号,操作者不能添加和这个学号一样学生信息,同时系统还提醒已经有此学号。对于修改、删除和查询,系统碰到不存在学生能提醒没有这个信息。
设计纲领
分析题目,想想程序所用到知识点,再进行分析程序总体构思。对于用到得悉识不太了解,先翻翻书,看一下这方面知识。为了不让程序看起来乱乱,把程序分成多个大函数,并有多个文字注释函数作用。这么程序各个功效就独自成为一个函数。这么有利于我们对程序错误检验,及对程序修改和优化。
做出菜单栏:1.添加学生信息
2.全部学生信息
3.修改学生信息
4.删除学生信息
5.查看学生信息
6.退出系统
由每一个子菜单做为一个函数。
设计纲领:
1:查看相关书籍
2:建立函数结构体
3:编程主函数
4:编程各子菜单函数
5:检验子函数和主函数之间联络
6:运行程序,如有错误,仔细检验。
7:错误操作捕捉。
8:查看运行效果,如有以下情况(修改代码):
(1)发觉问题某功效未实现
(2)死循环
(3)运行无效
(4)没有操作提醒信息
(5)内存错误
运行效果图
设计步骤图
开始
0
主函数
输入语句
判定a值
选择语句switch(a)
退出系 统
查看学生信 息
删除学生信 息
修改学生信 息
全部学生信 息
添加信息函 数
1
5
4
3
2
1
添加信息函数
0<num<100
输出提醒,
输入学号
num>100
判定num值
N
Y
N
Y
Y
N
0
判定num是否已存在
判定num<100
提醒输入,输入num
提醒重新输入num
提醒输入,输入学生信息
是否继续添加信息
2
输出部分文字
for(i=0;i<=100;i++)
Y
输出stu[i]信息
0
N
输出全部信息函数
3
修改信息函数
提醒输入,输入学号
Y
Y
修改信息
Y
Y
N
0
N
N
判定num是否存在
输出修改信息,提问是否修改
提醒num不存在,并提问是否继续修改
提问是否
继续修改
删除信息函数
4
提醒输入,输入删除学号
说明不存在此信息
判定是否存在num
N
输出删除信息
并提问是否删除
Y
Y
N
提问是否继续删除
Y
stu[num-1].num=0
N
输出删除成功
0
5
提醒查询方法,并选择
按学号
按姓名
输入学号
num是否存在
输出查询信息
提问是否继续查询
Y
输入姓名
姓名是否存在
提醒,并重新输入num
N
Y
提醒,并重新输入姓名
输出查询信息
N
Y
提问是否继续查询
Y
0
N
N
查看信息函数
调试过程
设计一个程序,错误是难免不了。但我们能够依据编辑系统给出部分提醒去查看程序错误。对不敢肯定正确,翻翻书,看一下这一知识。对难度大就和同学们一起讨论,问一问老师。
开发一个系统,耐心是必需,认真也很关键,构思要明确。
认为是哪里错误,有时用“/* */”注释起来进行,看看是否还有错误。
常错有以下多个情况:
1.使用变量,但未有定义,则先定义。
2.不该用分号,用到了,把它去掉。
3.行最终若有分号则删除,中间若有分号则改成逗号
4.若错误行中有if、while、for则要尤其注意条件表示式错误。
5.若条件表示式中只有一个等于号,则改成两个等于号。
6.for中要用分号分隔表示式,而不是用逗号
7.缺乏分号,若错误行中有语句没有用分号结束,则加上分号。
8.大小写不对,若错误行中有大写字母则通常全部改成小写字母。
9.若有return语句则函数类型必需和return后变量类型一致。
设计总结
经过此次C程序课程设计,我认为对自己提升很大:克服了偷懒毛病,这在我以后学习和工作中心理定位和调整有很大帮助。我感受到了编程是一项很烦琐周密活动,她不仅需要一个人周密思索问题能力,处理问题能力,还需要有足够耐心和严谨治学作风,来不得半点马虎。
经过此次程序设计,我初步学会了程序设计基础方法,学会了怎样去借鉴她人方法和经验,知道怎样去查找资料和整合处理这些资料能力,我上网和上图书馆查找资料,编写C语言原程序,然后是进行编译,这个步骤是一个很痛苦和艰苦,常常会因为一小点错误而在编译失败和再次修改漫漫循环之路中,但失败越多,对人考验就越多,在编译运行成功以后享受成功喜悦也就越多,另外在调试程序过程中不停思索和利用已经学到知识,这对于自己是有很大提升。
参考文件
[1]谭浩强著. C语言程序设计(第三版). 清华大学出版社,
[2]谭浩强编著. C程序设计题解和上机指导(第二版)清华大学出版社,1999
[3]C编写组编. 常见C语言使用方法速查手册. 北京:龙门书局,1995
源程序清单
#include<stdio.h>
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("\t请输入学号:");
H:scanf("%d",&num);
V:if(num>100)
{printf("\n这个学号太大了!\n请输入1--100 学号:");
scanf("%d",&num);
if(num>100)goto V;
printf("\n");
}
num2=looknum(num);
if(num==num2) /*判定这个学号是否存在*/
{printf("\n这个学号已经存在,请重新输入另一个学号。");
goto H;
}
i=num-1;
stu[i].num=num;
printf("\t请输入姓名:");
scanf("%s",stu[i].name);
printf("\t请输入性别:");
scanf("%s",stu[i].sex);
printf("\t请输入年纪:");
scanf("%d",&stu[i].age);
printf("\t请输入出生日期:");
scanf("%s",stu[i].bro);
printf("\t请输入住址:");
scanf("%s",stu[i].add);
printf("\t请输入手机号:");
scanf("%s",stu[i].phone);
printf("\t请输入E-maill:");
scanf("%s",stu[i].em);
printf("\n\t<*添加信息成功*>\n\n");
printf("\t1.继续添加\n");
printf("\t2.退出添加\n");
scanf("%d",&x);
switch(x)
{case 1:goto G;
default:break;}
}
quanbu()/*输出全部信息函数*/
{int i;
printf("\t\t全部学生信息以下\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("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[i].num,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("\t请输入要修改学号:");
scanf("%d",&num);
num2=looknum(num);
if(num==num2) /*判定这个学号是否存在*/
{ printf("\n\t这个学号信息以下\n\n");
printf("学号\t姓名\t性别\t年纪\t出生日期\t住址\t手机号\t\tE-mail\n");
printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,stu[num-1].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("\n\t1.确定修改");
printf("\n\t2.取消修改\n");
scanf("%d",&x);
if(x==1)
{stu[num-1].num=num;
printf("\t请输入姓名:");
scanf("%s",stu[num-1].name);
printf("\t请输入性别:");
scanf("%s",stu[num-1].sex);
printf("\t请输入年纪:");
scanf("%d",&stu[num-1].age);
printf("\t请输入出生日期:");
scanf("%s",stu[num-1].bro);
printf("\t请输入住址:");
scanf("%s",stu[num-1].add);
printf("\t请输入手机号:");
scanf("%s",stu[num-1].phone);
printf("\t请输入E-maill:");
scanf("%s",stu[num-1].em);
printf("\n\t<*修改信息成功*>\n");
goto P;
}
else goto P;
}
else
{printf("\n\t没有这个学号,你可能记错了!\n");
P:printf("\n\t1.继续修改\n");
printf("\t2.退出修改\n");
scanf("%d",&y);
switch(y)
{case 1:goto K;
default:break;
}
}
}
void shanchu()/*删除信息函数*/
{int x=2,y=2,num,num2;
L:printf("\t请输入要删除学号:");
scanf("%d",&num);
num2=looknum(num);
if(num==num2) /*判定这个学号是否存在*/
{printf("\n\t这个学号信息以下\n\n");
printf("学号\t姓名\t性别\t年纪\t出生日期\t住址\t手机号\t\tE-mail\n");
printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,stu[num-1].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("\n\t1.确定删除");
printf("\n\t2.取消删除\n");
scanf("%d",&x);
switch(x)
{case 1:{stu[num-1].num=0;
printf("\t<*删除信息成功*>\n");}
default:break;
}
goto D;
}
else
{printf("\n\t没有这个学号,你可能记错了!\n");
D:printf("\n\t1.继续删除\n");
printf("\t2.退出删除\n");
scanf("%d",&y);
switch(y)
{case 1:goto L;
default:break;}
}
}
void chakan()/*查看信息函数*/
{
int x=1,y=2,z=2,i,num,num2;
char name,name2;
printf("\t1.按学号查询\n\t2.按姓名查询\n");
scanf("%d",&x); /*输入查看方法*/
if(x==1) /*学号查询*/
{
M:printf("\t请输入查看学号:");
scanf("%d",&num);
num2=looknum(num);
if(num==num2) /*判定这个学号是否存在*/
{printf("\t这个学号信息以下\n\n");
printf("学号\t姓名\t性别\t年纪\t出生日期\t住址\t手机号\t\tE-mail\n");
printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,stu[num-1].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\t没有这个学号,你可能记错了!\n");
J: printf("\n\t1.继续查看\n");
printf("\t2.退出查看\n");
scanf("%d",&y);
switch(y)
{case 1:goto M;
default:break;
}
}
}
if(x==2) /*姓名查询*/
{
U:printf("\t请输入查看姓名:");
scanf("%s",&name);
for(i=0;i<=100;i++)
{if(strcmp(&stu[i].name,&name)==0)/*字符串比较*/
if(stu[i].num!=0) /*判定这个学号是否存在*/
{printf("\t这个姓名信息以下\n\n");
printf("学号\t姓名\t性别\t年纪\t出生日期\t住址\t手机号\t\tE-mail\n");
printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bro,stu[i].add,stu[i].phone,stu[i].em);
goto Q;
}
}
if(i==101)
{printf("\n\t没有这个姓名,你可能记错了!\n");
Q: printf("\n\t1.继续查看\n");
printf("\t2.退出查看\n");
scanf("%d",&z);
switch(z)
{case 1:goto U;
default:break;}
}
}
}
main()/*主函数*/
{ int a;
printf("\n\t*编辑系统--XXXX*\n\n");
printf("\t 未经许可,不得使用\n");
printf("\t\n");
T:printf("\n\n\t 1.添加学生信息\n\t 2.全部学生信息\n\t 3.修改学生信息\n\t 4.删除学生信息\n\t 5.查看学生信息\n\t 6.退出系统\n");
scanf("%d",&a);
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("\t你输入不正确,请再次输入:\n");goto T;
}
printf("\t谢谢您对本系统支持和使用\n\n");
printf("\t4月29日\n\n\n\n\n\n\n\n\n\n\n\n\n");
}
展开阅读全文