帮忙改代码 给高分 (28号结帖)

kakalong 2004-06-25 01:15:28
题目:



学生信息管理系统
至少有学号、姓名、性别、系名、班级名、出生年月、学院住址、电话号码
要求:至少有输入数据,显示数据,进一步可以设计编辑、修改、删除等功能。增加排序,查询数据等功能。
界面要求全屏设计,比较好看,所有功能可以反复使用,最好是用一个菜单管理起来。
数据类型至少要用到结构体和数组,进一步可以使用文件进行存储和管理。



设计的大致过程和步骤:
1,首先要明确,这个主要是对结构体数组进行操作!考虑学生信息主要分为这样几个变量,
学号, 姓名,性别,系名,班级名,出生年月,学院地址,电话号码!
2,排序: 排序是根据学号来排名次的,然后按降序方式排列记录到数组中!
3,插入,修改,删除: 在记录学生信息的数组中,第一,找到所要操作的记录,然后对相应的记录进行操作(寻找一条记录,可以根据,姓名,编号,成绩等来查找)
1>插入操作,输入一条




#include<conio.h>
#include<stdio.h>


#define N 10
int i=0;



void main()
{
struct student
{
int ClassNO; /*学号*/
char Name[8]; /*姓名*/
char Sex[2]; /*性别*/
char xiName; /*系名*/
char ClassName; /*班级名*/
int year,month,day; /*日期*/
char address[60]; /*学院地址*/
int PNO; /*电话号码*/
}stud[N];



int ch;

FILE *fp; /*定义文件指针*/



asm { mov ax,0x3; /*设置到全屏的文本模式*/
int 0x10;
}
clrscr();
printf( "\t*******************************************************\n" );
printf( "\t** 学生信息管理系统 **\n" );
printf( "\t*******************************************************\n" );
begin:
printf("select a number for your choise\n"); /*请输入数字进行选择*/
printf("\t 1.Input data\n"); /*输入数据*/
printf("\t 2.Read data\n"); /*读取数据*/
printf("\t 3. Exit "); /*退出*/
scanf("%d",&ch);
switch(ch)
{
case 1: i++;
printf(" Input ID:");scanf("%d",stud.ClassNO);/*输入学号*/
printf(" Name:");scanf("%s",stud.Name); /*名字*/
printf(" Sex:");scanf("%s",stud.Sex); /*性别*/
printf(" copulative:");scanf("%s",stud.xiName); /*系名*/
printf(" Class:");scanf("%s",stud.ClassName); /*班别号*/
printf(" date year:");scanf("%d",&stud.year); /*日期,年*/
printf(" month:");scanf("%d",&stud.month); /*月*/
printf(" day:");scanf("%d",&stud.day); /*日*/
printf(" address:");scanf("%s",stud.address);/*学院地址*/
printf(" phone number:");scanf("%d",stud.PNO); /*电话号码*/

clrscr();

printf("\t ID:%d\n",stud.ClassNO);
printf("\t Name:%s\n",stud.Name);
printf("\t Sex:%s\n",stud.Sex);
printf("\t copulative:%s\n",stud.xiName);
printf("\t Class:%s\n",stud.ClassName);
printf("\t date: %d year\n",stud.year);
printf("\t %d month\n",stud.month);
printf("\t %d day\n",stud.day);
printf("\t address:%s\n",stud.address);
printf("\t phone number:%d\n",stud.PNO);

getch();



printf("\n\n Save...");
sleep(1);

if((fp=fopen("class.txt","w+"))==NULL) /*打开文件并判断是否出错*/
{
printf("create file failed!!\n\n"); /*创建文件失败,打印出错提示*/
getch();
exit(1);
}
if(fwrite(&stud,sizeof(struct student),1,fp)!=1)
printf("file write error!\n");
fclose(fp); /*关闭文件*/
break;
case 2:
if((fp=fopen("class.txt","rb"))==NULL) /*打开文件,并判断是否出错*/
{
printf("cannot open file!"); /*打印出错提示*/
getch();
exit(1);
}
fscanf(fp,"%d",&m);
for(i=0;i<m;i++)
{
fread(&s,sizeof(air),1,fp); /*从文件中读取信息*/
}
fclose(fp); /*关闭文件*/
}
break;
case 3:printf("Exit...");
sleep(1);
exit(1);
break;
default:clrscr();
printf("请输入数字 1 ,2 ,3\n");
goto begin;
break;
}
}


错误好多,帮帮忙改成和题目一样的 给高分
谢谢
...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
siriue 2004-06-27
  • 打赏
  • 举报
回复
行有点不太对齐,复制下来就好了。
9是后来改的,case‘9’那里注释应为查询。
也希望有高手给我的程序提提意见~:)
siriue 2004-06-27
  • 打赏
  • 举报
回复
case '5' : //选择插入
if(pFirstData==0)
{
printf("无数值,无法插入");
break;
}
p = pFirstData;
for(i=0;;i++)
{
if(p->Next==0)
break;
p = p->Next;
}
p = new _DATA;
printf("请输入希望插于“”序号之后:");
scanf("%d",&Number);
printf("请输入你要插入的名字:");
scanf("%s",p->Name);
printf("请输入你要插入的号码:");
scanf("%s",p->Number);
p->Head = 0;
p->Next = 0;
pPrvData = pFirstData;
if(Number==0)
{
pPrvData->Head = p;
p->Next = pPrvData;
p->Head = 0;
pFirstData = p;
break;
}
for(i=1;;i++)
{
if(pPrvData->Next==0&&(Number!=i))
{
printf("无法找到相符数据,请重新输入:\n");
break;
}
if(pPrvData->Next==0&&(Number==i))
{
pPrvData->Next = p;
p->Head = pPrvData;
p->Next = 0;
break;
}
if(i==Number)
{
pNext = pPrvData->Next;
pNext->Head = 0;
pPrvData->Next = 0;
p->Head = pPrvData;
pPrvData->Next = p;
pNext->Head = p;
p->Next = pNext;
break;
}
pPrvData = pPrvData->Next;
}
break;
case '6' : //序号删除
printf("请输入你要删除的序号:");
scanf("%d",&Number);
pPrvData = pFirstData;
p = pPrvData;
for(i=1;;i++)
{
if(Number==1)
{
pNext = pPrvData->Next;
pNext->Head = 0;
pFirstData = pNext;
delete pPrvData;
printf("删除成功\n");
break;
}
if(Number==i)
{
pNext = pPrvData->Next;
pNext->Head = 0;
p = pPrvData->Head;
p->Next = 0;
p->Next = pNext;
pNext->Head = p;
delete pPrvData;
printf("删除成功\n");
break;
}
if(pPrvData->Next==0&&Number!=0)
{
printf("找不到所删除序号\n");
break;
}
if(pPrvData->Next==0&&(Number==i))
{
pNext = pPrvData->Head;
pNext->Next = 0;
delete pPrvData;
printf("删除成功\n");
break;
}
pPrvData = pPrvData->Next;
}
break;
case '7' : //储存
FILE *fp;
if((fp=fopen("D:\\lianbiao1\\Lianbiao.txt","w+"))==NULL)
{
printf("打开文件有错,请检查:\n");
break;
}
pPrvData = pFirstData;
while(pPrvData)
{
fwrite(pPrvData,sizeof(_DATA),1,fp);
pPrvData = pPrvData->Next;
}
fclose(fp);
printf("成功存储\n");
break;
case '8' : //读取
if((fp=fopen("D:\\lianbiao1\\Lianbiao.txt","r"))==NULL)
{
printf("打开文件有错,请检查:\n");
break;
}
for(i=1;;i++)
{
PDATA p;
p = new _DATA;
if(fread(p,sizeof(_DATA),1,fp)==1)
{

if(i==1)
{
pFirstData = p;
pFirstData->Head = 0;
pFirstData->Next = 0;
pPrvData = pFirstData;
continue ;
}
else
{
pPrvData->Next = p;
p->Head = pPrvData;
p->Next = 0;
pPrvData = p;
continue;
}

}
else
{
delete p;
break;
}
}
fclose(fp);
printf("成功读取\n");
break;
case '9' : //结束
p = pFirstData;
if(p==0)
{
printf("无数据,无法查询\n");
break;
}
printf("请输入你要查询的名字:\n");
scanf("%s",&j);
for(i=1;;i++)
{
if(0==strcmp(j,p->Name)||0==strcmp(j,p->Number))
{
printf("\n序号%d:\t名字%s:号码%s:\n",i,p->Name,p->Number);

}
if(p->Next==0)break;
p = p->Next;
}
break;
default :printf("error\n");
}
}while(Input[0]!='10');
}
siriue 2004-06-27
  • 打赏
  • 举报
回复
我复制下来运行了一下,错误太多了。
以下是我自己写的一个小程序,你可以参考一下。我也是初学的:)
#include "stdafx.h"

typedef struct _DATA
{
struct _DATA *Head;
char Name[20];
char Number[20];
struct _DATA *Next;
}DATA,*PDATA;

PDATA pFirstData,pNext,p,pPrvData;



int main(int argc, char* argv[])
{
CHAR i;
char u;
CHAR Input[5];
char j[20];
int Number;
do
{
printf("0排序:\t\t1输入:\t\t2删除:\n3显示:\t\t4自动插入:\t5选择插入:\n6序号删除:\t7储存:\t\t8读取:\n9查询:\t\t请输入:");
scanf("%s",Input);
switch(Input[0])

{
case '0': //排序
if(pFirstData==0)
{
printf("无法排序");
break;
}
PDATA pH,pN,ph,pn;
p = 0;
pH = pFirstData;
pN = pFirstData->Next;
for(i=0;;i++)
{
pPrvData = pH;
pN = pH->Next;
if(pN==0)break;
for(u=i+1;;u++)
{
pNext = pN;
if(strcmp(pPrvData->Name,pNext->Name)>0) //小于
{
ph = pPrvData->Head;
pn = pPrvData->Next;

pNext->Head->Next = pPrvData;
if(pNext->Next!=0)
pNext->Next->Head = pPrvData;

if(pPrvData->Head!=0)
ph->Next = pNext;
pn->Head = pNext;

pPrvData->Head = pNext->Head;
pPrvData->Next = pNext->Next;

pNext->Head = ph;
if(pNext==pn)
pNext->Next = pPrvData;
else
pNext->Next = pn;

pPrvData = pNext;
if(pPrvData->Head==0)
pFirstData = pPrvData;
if(pNext->Head==0)
pFirstData = pNext;
pPrvData = pNext;
pH = pNext;
}
if(pN->Next==0)
break;
pN = pN->Next;
}
if(pH->Next==0)
break;
pH = pH->Next;
}
break;
case '1' : //输入
if(pFirstData==0)
{
pFirstData = new _DATA;
p = pFirstData;
printf("请输入名字:");
scanf("%s",p->Name);
printf("请输入号码:");
scanf("%s",p->Number);
p->Head = 0;
p->Next = 0;
}
else
{
p = pFirstData;
for(i=0;;i++)
{
if(p->Next==0)
break;
p = p->Next;
}
pPrvData = p;
p = new _DATA;
printf("请输入名字:");
scanf("%s",p->Name);
printf("请输入号码:");
scanf("%s",p->Number);
p->Head = pPrvData;
pPrvData->Next = p;
p->Next = 0;
}
break;
case '2' : //删除
printf("请输入你要删除的名字:");
scanf("%s",&j);
p = pFirstData;
for(i=0;;i++)
{
if(strcmp(p->Name,j)&&p->Next==0)
{
printf("找不到你所要删除的名字:\n");
break;
}
if(strcmp(p->Name,j)==0)
{
if(p->Head==0&&p->Next==0)
{
printf("已经是最后一组数据,无法删除\n");
break;
}
if(p->Head!=0&&p->Next==0)
{
p->Head->Next = 0;
delete p;
printf("删除成功:\n");
break;
}
if(p->Head==0&&p->Next!=0)
{
p->Next->Head = 0;
pFirstData = p->Next;
delete p;
printf("删除成功:\n");
break;
}
if(p->Head!=0&&p->Next!=0)
{
p->Head->Next = p->Next;
p->Next->Head = p->Head;
delete p;
printf("删除成功:\n");
break;
}

}
p = p->Next;
}
break;
case '3' : //显示
p = pFirstData;
for(i=1;;i++)
{
printf("\n序号%d:\t名字%s:号码%s:",i,p->Name,p->Number);
if(p->Next==0)
{
printf("\n");
break;
}
p = p->Next;
}

break;
case '4' : //自动插入
if(pFirstData==0)
{
printf("无数值,无法插入");
break;
}
p = pFirstData;
for(i=0;;i++)
{
if(p->Next==0)
break;
p = p->Next;
}
p = new _DATA;
printf("请输入要插入的名字:");
scanf("%s",p->Name);
printf("请输入要插入的号码:");
scanf("%s",p->Number);
p->Head = 0;
p->Next = 0;
pPrvData = pFirstData;
if(pFirstData->Next==0)
{
if(strcmp(p->Name,pFirstData->Name)>0) //大于
{
pFirstData->Next = p;
p->Head = pFirstData;
p->Next = 0;
printf("插入成功:\n");
break;
}
else
{
pPrvData->Head = p;
p->Next = pPrvData;
pFirstData = p;
printf("插入成功:\n");
break;
}
}
for(i=0;;i++)
{
if(strcmp(p->Name,pPrvData->Name)==0)
{
pPrvData->Next = pNext;
pNext->Next = 0;
p->Head = pPrvData;
pPrvData->Next = p;
p->Next = pNext;
pNext->Head = p;
printf("插入成功:\n");
break;
}
if(strcmp(p->Name,pPrvData->Name)>0) //大于
{
pPrvData = pPrvData->Next;
if(strcmp(p->Name,pPrvData->Name)>0)
{
if(pPrvData->Next==0)
{
pPrvData->Next = p;
p->Head = pPrvData;
printf("插入成功:\n");
break;
}
else continue;
}
else
{
pPrvData = pPrvData->Head;
pNext = pPrvData->Next;
pNext->Head = 0;
p->Head = pPrvData;
pPrvData->Next = p;
p->Next = pNext;
pNext->Head = p;
printf("成功插入:\n");
break;
}

}

if(strcmp(p->Name,pPrvData->Name)<0) //小于
{
p->Next = pPrvData;
pPrvData->Head = p;
pFirstData = p;
printf("插入成功:\n");
break;
}
// pPrvData = pPrvData->Next;
}
break;
hcj2002 2004-06-26
  • 打赏
  • 举报
回复
up
kakalong 2004-06-26
  • 打赏
  • 举报
回复
有做得更好的吗 谢谢
o1n 2004-06-25
  • 打赏
  • 举报
回复
eronic(偶拾莱血洗德) 已经改的差不多了.我UP一下.
xjp6688 2004-06-25
  • 打赏
  • 举报
回复
up
eronic 2004-06-25
  • 打赏
  • 举报
回复
#include<conio.h>
#include<stdio.h>


#define N 10
int i=0;



void main()
{
struct student
{
int ClassNO; /*学号*/
char Name[8]; /*姓名*/
char Sex[8]; /*性别*/
char xiName[8]; /*系名*/
char ClassName[8]; /*班级名*/
int year,month,day; /*日期*/
char address[60]; /*学院地址*/
int PNO; /*电话号码*/
}stud[N];
int ch,j,m;
FILE *fp; /*定义文件指针*/
asm { mov ax,0x3; /*设置到全屏的文本模式*/
int 0x10;
}
clrscr();
printf( "\t*******************************************************\n" );
printf( "\t** 学生信息管理系统 **\n" );
printf( "\t*******************************************************\n" );
begin:
printf("select a number for your choise\n"); /*请输入数字进行选择*/
printf("\t 1.Input data\n"); /*输入数据*/
printf("\t 2.Read data\n"); /*读取数据*/
printf("\t 3. Exit "); /*退出*/
scanf("%d",&ch);
switch(ch)
{
case 1:
{
i++;
printf(" Input ID:");scanf("%d",stud[i].ClassNO);/*输入学号*/
printf(" Name:");scanf("%s",stud[i].Name); /*名字*/
printf(" Sex(female or male):");scanf("%s",stud[i].Sex); /*性别*/
printf(" copulative:");scanf("%s",stud[i].xiName); /*系名*/
printf(" Class:");scanf("%s",stud[i].ClassName); /*班别号*/
printf(" date year:");scanf("%d",&stud[i].year); /*日期,年*/
printf(" month:");scanf("%d",&stud[i].month); /*月*/
printf(" day:");scanf("%d",&stud[i].day); /*日*/
printf(" address:");scanf("%s",stud[i].address);/*学院地址*/
printf(" phone number:");scanf("%d",&stud[i].PNO); /*电话号码*/

clrscr();

printf("\t ID:%d\n",stud[i].ClassNO);
printf("\t Name:%s\n",stud[i].Name);
printf("\t Sex:%s\n",stud[i].Sex);
printf("\t copulative:%s\n",stud[i].xiName);
printf("\t Class:%s\n",stud[i].ClassName);
printf("\t date: %d year\n",stud[i].year);
printf("\t %d month\n",stud[i].month);
printf("\t %d day\n",stud[i].day);
printf("\t address:%s\n",stud[i].address);
printf("\t phone number:%d\n",stud[i]d.PNO);

getch();



printf("\n\n Save...");
sleep(1);

if((fp=fopen("class.txt","w+"))==NULL) /*打开文件并判断是否出错*/
{
printf("create file failed!!\n\n"); /*创建文件失败,打印出错提示*/
getch();
exit(1);
}
if(fwrite(&stud,sizeof(struct student),1,fp)!=1)
printf("file write error!\n");
fclose(fp); /*关闭文件*/
}
break;
case 2:
{
if((fp=fopen("class.txt","rb"))==NULL) /*打开文件,并判断是否出错*/
{
printf("cannot open file!"); /*打印出错提示*/
getch();
exit(1);
}
m = i;
for(j=0;j<m;j++)
{
fread(&stud[j],sizeof(struct student),1,fp); /*从文件中读取信息*/
printf("\t ID:%d\n",stud[i].ClassNO);
printf("\t Name:%s\n",stud[i].Name);
printf("\t Sex:%s\n",stud[i].Sex);
printf("\t copulative:%s\n",stud[i].xiName);
printf("\t Class:%s\n",stud[i].ClassName);
printf("\t date: %d year\n",stud[i].year);
printf("\t %d month\n",stud[i].month);
printf("\t %d day\n",stud[i].day);
printf("\t address:%s\n",stud[i].address);
printf("\t phone number:%d\n",stud[i]d.PNO);
}
fclose(fp); /*关闭文件*/
}
break;
case 3:printf("Exit...");
sleep(1);
exit(1);
break;
default:clrscr();
printf("请输入数字 1 ,2 ,3\n");
goto begin;
break;
}
}
按你的思路,帮你改了改,不过你这个也太简单乐

69,382

社区成员

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

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