学了顺序表后自己编的一个学生管理系统,请各位大哥都来给点意见。

gun44 2006-08-01 07:35:56
学了顺序表后自己编的一个学生管理系统,请各位大哥都来给点意见。
有不足的请大家都指出来,小弟不胜感激!
#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;
}
}
}
...全文
246 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
技术既原罪 2006-08-18
  • 打赏
  • 举报
回复
printf("=====要按学号查询请按'1'=====\n");
printf("=====要按姓名查询请按'2'=====\n");
printf("=====要按成绩查询请按'3'=====\n");

?????????????????
我有点不是很明白,在c里还可以用中文么?
Bennyatt 2006-08-18
  • 打赏
  • 举报
回复
新分我的电脑,我这上没有 C一类环境,就不多说了。
刚才一位朋友说的很重要,你现在的编程属于纯 动态编程,一切操作都是在内存里。
程序一旦关闭,什么东西都没了。这个东东貌似一个数据库吧。
要有个静态的磁盘文件来存储你的记录。等你启动这个动态程序的时候自动调用数据库文件。
当你修改/输入新记录是 也会写入相对的磁盘文件。
相关的函数什么的就 找 fopen fputs fgetc.... fscan....fprint...
哦了 8多说了。。以后联系
Bennyatt 2006-08-18
  • 打赏
  • 举报
回复
首先那个#include 的 stido.h stdlib.h ...建议你用 < >
这些头文件是在标准库里有的 你用 <> 的话,编译的时候直接在标准库搜索。
节省编译效率,用 这个 ""是在 你的用户编程目录里搜索,这个浪费时间。
高级编程里都有这些讲究的。相对来说呢<>是狭义搜索。。。
//我先说这些,我快下班了,等一会有空再往下看
iambtk 2006-08-18
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
全中国大学,学完C语言之后的课程设计题目,鉴定完毕。
Love_maker 2006-08-18
  • 打赏
  • 举报
回复
如果是windows下cmd控制台支持中文。
teacher1998 2006-08-03
  • 打赏
  • 举报
回复
看看
gun44 2006-08-02
  • 打赏
  • 举报
回复
哦,我改进一下。
wenbinzndx 2006-08-01
  • 打赏
  • 举报
回复
最好把数据存在.txt文件中,进行文件的操作,应用性更强些!
chenhu_doc 2006-08-01
  • 打赏
  • 举报
回复
所以学完链表表示后,有必要做一次系统升级 =_=!
Dong 2006-08-01
  • 打赏
  • 举报
回复
使用数组让操作不灵活,因为要插入,删除等操作的,这比较费时,
对函数的理解不够!
chenhu_doc 2006-08-01
  • 打赏
  • 举报
回复
可以把功能再扩展一下,同时把switch ,case里面的长段可以抽象出来成为各个函数,方便代码的阅读
如果对数据库比较感兴趣的话,连个数据库看看!!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧