青岛理工大学
《C 语言程序设计》
题目
学生信息管理程序
指导教师: 李 兰
姓名:
杨立禄
200807150
学号:
班级: 计算机工程学院 08 级 4 班
专业: 计算机科学与技术专业
地点: 2 号实验楼计算中心 401 室
时间: 2009-6-22 至 2009-6-26
一、内容(学生信息管理程序)
学生信息管理程序功能介绍:学生信息管理程序采用 C 语言编译,可以实现简单的学生
信息的输入、查找、删除、修改等功能。
使用说明:(1)双击打开学生信息管理程序,程序会自动进入主菜单。
2)进入主菜单后,屏幕上会出现 5 个选项:1 学生信息.输入 2.学生信息删除 3.学生信
息修改 4.学生信息查询 0.退出学生信息管理程序。根据您的需要完成相应功能
学生信息管理程序功能简介:
1 学生信息及成绩输入:输入学生信息,包括学生姓名、学号、地址、电话、班级、性别、
年龄和高数、英语、计算机、物理、体育的五门成绩,并自动计算五门课的总成绩、平均分;
2 学生信息查询:可以通过输入学生的学号,查找到相应的学生信息;
3 学生信息删除:可以通过这个功能,实现对某一个同学信息的删除;
4 学生信息修改:可以通过输入学号,修改学生的信息;
0 退出 :这个选项实现的功能是退出学生信息管理程序。
二、上机环境:
操作程序:windows xp
开发工具:VC6.0
三、函数调用关系图
main
学生信息输入
*creat( )
学 生 信 息 修 改
rework(head,del_name)
学生信息删除
del(head,del_name)
学 生 信 息 查 询
find(head,num)
四、各函数功能说明
1. main
2. struct student
3. struct student *creat( )
4.struct student *rework(struct student *head,char num[] )
5.struct student *find(struct student *head,char num[] )
6.struct student *del(struct student *head,char number[] )
主函数
声明新的类型名
学生信息的输入
学生信息修改
学生信息查询
学生信息删除
五 、算法描述或流程图
开始
head==NULL
n
y
输出
“ 无 此 人 信
息 ”return(hea
while(strcmp(number,p1->number)&&(p1->next!=NULL))
p2=p1; p1=p1->next
!strcmp(number,p1->number)
y
head==p1
n
无此人信息
head=p1->next
p2->next=p1->next
已被删除
结束
图 1 删除程序流程图
开始
head==NULL
n
p1=head
y
输出“无数据”
return head
while(strcmp(number,p1->number)&&(p1->next!=NULL))
p2=p1; p1=p1->next
strcmp(num,p1->number)==0
y
n
输出“找到学生信息”
无此学生信息
结束
图 2 查找程序流程图
六、程序运行效果图
图 1-1-主菜单
图 1-2 学生信息及成绩输入
图 1-3 学生信息修改图
图 1-4 学生信息查询图
1-5 学生信息删除
图 1-6 学生信息管理程序退出
七、体会
经过一学期的 C 语言的学习,原来对编程毫无了解的我,逐渐掌握了初步编程的方
法,提高了自己的思维能力和细心,而这将近一周的课程设计,让我对编程知识有了更深层
次的了解,以前上课学都是一些枯燥的东西,感觉没多大用处,但是通过课程设计把所学的
东西用在了实践上,设计出来一些有用的东西,尽管有好多次总是运行不了,找来找去总是
是一些小小的错误,深深地感到自己上机编程能力很不足,编的程序可读性不太好。但通过
上网查找资料,到图书馆借阅图书,解决了许多难题,最终编成了这个学生信息管理程序,
提高了程序的可读性。这个程序可以实现简单的学生信息的管理,包括输入、删除、修改、
查询等。然而程序仍然存在许多可以拓展的地方,比如可以增加安全密码设置,将性别相同
的同学或者所在省市相同的同学统计到一起等等。我会在今后用更多的知识去完善它。
许多自己掌握不牢的知识通过这次一个周的编程设计得到了提高,我了解到了编程的知
识无穷无尽,自己所掌握的只是皮毛,以后还需要查阅大量的资料来完善自己的程序,丰富
自己的头脑。再次还要感谢老师的悉心指导帮助,我才能顺利完成这个程序。
八、参考文献
[1] 李凤霞. C 语言程序设计教程. 北京理工大学出版社
[2] 谭浩强.C 程序设计(第三版). 清华大学出版,2005
[3] 谭浩强.C 程序设计题解与上机指导(第三版). 清华大学出版,2005
九\程序清单
#include
#include
#include "cstdlib"
#include
#define LEN sizeof(struct student)
struct student
{ char name[20],address[40],telephone[12],
classed[10],number[10],sex[10],age[4];
int math,English,Computer,physics,
PE,sum,aver,score[5];
struct student *next;
} stu[45];
struct student *creat( )
{int i,j;
int s;
struct student *p0,*p1,*p2,*head;
for (i=0;i<1;i++)
{ p0=(struct student*)malloc(LEN);
printf("请输入学生信息:\n");
printf("学号:");
scanf("%s",p0->number);
printf("姓名:");
scanf("%s",p0->name);
printf("地址:");
scanf("%s",p0->address);
printf("电话:");
scanf("%s",p0->telephone);
printf("班级:");
scanf("%s",p0->classed);
printf("性别:");
scanf("%s",p0->sex);
printf("年龄:");
scanf("%d",&p0->English);
printf("高数:");
scanf("%s",&p0->age);
printf("英语:");
scanf("%d",&p0->math);
printf("机算机:");
scanf("%d",&p0->computer);
printf("物理:");
scanf("%d",&p0->physics);
printf("体育:");
scanf("%d",&p0->PE);
printf("请再输一次学生成绩\n");
s=0;
for(j=0;j<5;j++)
{ scanf("%d",&p0->score[i]);
s+=p0->score[i]; }
p0->sum=s;
p0->aver=s/5;
if(i==0)
{head=p0;p0->next=NULL;}
else
{p1=p2=head;
while((p0->sumsum)>0&&(p1->next!=NULL))
{p2=p1;
p1=p1->next;}
if(p0->sum>=p1->sum)
{ if(head==p1)
{head=p0;
p0->next=p1;}
else
{p2->next=p0;
p0->next=p1; } }
else
{p1->next=p0;
p0->next=NULL;} } }
return head; }
struct student *del(struct student *head,char
number[])
{struct student *p1,*p2;
if(head==NULL)
{printf("\n 无此人信息\n");
return head;}
p1=head;
while(strcmp(number,p1->number)&&(p1->next!=N
ULL))
{ p2=p1;
p1=p1->next;}
if(!strcmp(number,p1->number))
{ if(head==p1)
head=p1->next;
else
p2->next=p1->next;