| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1774 人关注过本帖
标题:学了顺序表自己编了一个简单的学生管理系统,各位给点意见。
只看楼主 加入收藏
gun44
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-1
收藏
 问题点数:0 回复次数:3 
学了顺序表自己编了一个简单的学生管理系统,各位给点意见。

学了顺序表自己编了一个简单的学生管理系统,各位给点意见。
有什么不足还请各位指正。
#include"stdio.h"
#include"string.h"
#include "stdlib.h"
#define listsize 100
#define listup 10
struct student
{
int num;
char name[5];
int mark;
int length;
}stu[listsize];
void print()
{
printf("======要新输入学生数据请按N======\n");
printf("======要插入学生数据请按I========\n");
printf("======要删除学生数据请按D========\n");
printf("======要查询学生数据请按S========\n");
printf("======要退出学生管理系统请按x========\n");
}
void Init()
{
void list();
struct student *p;
p=stu;
int i,j;
printf("要输入多少个学生的数据?:");
scanf("%d",&i);

for(j=0;j<i;j++)
{
printf("学号 姓名 成绩\n");
scanf("%d ",&stu[j].num);
scanf("%s",&stu[j].name);
scanf("%d",&stu[j].mark);
p->length=j;
}
list();
}
void Insert()
{
struct student *p;
p=stu;
void list();
int i,j;
printf("请问要在第几个学生前插入数据?:");
scanf("%d",&i);
p->length++;
for(j=p->length;j>=i-1;j--)
{
stu[j+1].num=stu[j].num;
strcpy(stu[j+1].name,stu[j].name);
stu[j+1].mark=stu[j].mark;
}
printf("学号 姓名 成绩\n");
scanf("%d ",&stu[i-1].num);
scanf("%s",&stu[i-1].name);
scanf("%d",&stu[i-1].mark);
list();
}
void Delete()
{
struct student *p;
p=stu;
void list();
int i,j;
printf("请问要删除第几个学生的资料?:");
scanf("%d",&i);
for(j=i-1;j<=p->length;j++)
{
stu[j].num=stu[j+1].num;
strcpy(stu[j].name,stu[j+1].name);
stu[j].mark=stu[j+1].mark;
}
p->length--;
list();
}
void Serch()
{
struct student *p;
p=stu;
void list();
char xingming[5];
int xuehao,chengji,i,flag,shuru;
printf("=====要按学号查询请按'1'=====\n");
printf("=====要按姓名查询请按'2'=====\n");
printf("=====要按成绩查询请按'3'=====\n");
scanf("%d",&shuru);
switch(shuru)
{
case 1:
printf("请输入学生学号:");
scanf("%d",&xuehao);
flag=0;
for(i=0;i<=p->length;i++)
{
if (stu[i].num==xuehao)
{
printf("==学生清单==\n");
printf("学号 姓名 成绩\n");
printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].mark);
flag++;
}
else
flag=flag+0;
}
if(flag==0)
printf("找不到相关学生资料!");
break;
case 2:
printf("请输入学生姓名:");
scanf("%s",&xingming);
flag=0;
for(i=0;i<=p->length;i++)
{
if (strcmp(stu[i].name,xingming)==0)
{
printf("==学生清单==\n");
printf("学号 姓名 成绩\n");
printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].mark);
flag++;
}
else
flag=flag+0;
}
if(flag==0)
printf("找不到相关学生资料!");
break;
case 3:
printf("请输入学生成绩:");
scanf("%d",&chengji);
flag=0;
for(i=0;i<=p->length;i++)
{
if (stu[i].mark==chengji)
{
printf("==学生清单==\n");
printf("学号 姓名 成绩\n");
printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].mark);
flag++;
}
else
flag=flag+0;
}
if(flag==0)
printf("找不到相关学生资料!");
break;
default:break;
}
}
void Exit()
{
exit(-1);
}
void list()
{
int i;
struct student *p;
p=stu;
printf("==学生清单==\n");
printf("学号 姓名 成绩\n");
for(i=0;i<=p->length;i++)
{
printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].mark);
}
}
void main()
{
char ch;
print();
while((ch=getchar())!='X'||(ch=getchar())!='x')
{
switch (ch=getchar())
{
case 'N':Init();break;
case 'n':Init();break;
case 'I':Insert();break;
case 'i':Insert();break;
case 'D':Delete();break;
case 'd':Delete();break;
case 'S':Serch();break;
case 's':Serch();break;
case 'X':Exit();break;
case 'x':Exit();break;
default:break;
}
}
}

搜索更多相关主题的帖子: 顺序 系统 学生 意见 管理 
2006-08-01 19:50
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
太简陋了,没有写入文件和读取文件的功能,建议加上.这些最好都是用单链表做,插入删除的效率比顺序表高

c++/C + 汇编 = 天下无敌
2006-08-03 16:34
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 

现在没有编译器,所以代码有没有错不太清楚。
就现有的功能来说还很不完善,感觉不太好。
如果我输入一个链表,我只能对它操作一次,要么添加一个,要么插入一个,要么删除一个,要么查询一个。
但我如果要对同一个链表进行如上所有操作呢?
如果我要添加多个学生的资料呢?
如果我要插入多个学生的资料呢?
如果我要删除多个学生的资料呢?
如果我要对同一个链表进行所有的查询操作呢?
如果我要删除第9个学生资料但链表里只有8个学生呢?

如果我要删除查询出来的学生资料呢?
如果我输入错误要重新输入呢(如果那个学生的成绩变更了,系统需要更新,要求不删除该学生的资料)?

如果每个学生有5门成绩呢(相应的,按不同的科目成绩进行查询,修改,排序等)?

就顺序表而言,有没有文件读取和写入可以先放一边,当然有的话更好,但最好要有上面的全部的功能,越排前面的功能越重要。


我的征途是星辰大海
2006-08-03 21:11
wangdong1027
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-1-20
收藏
得分:0 

挺好的,支持一下,呵呵
继续努力,
有有关双链表的建立的程序没?
数据结构群:16373977

2007-01-20 22:23
快速回复:学了顺序表自己编了一个简单的学生管理系统,各位给点意见。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026531 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved