| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:这个程序为什么运行出问题
只看楼主 加入收藏
一个号ID
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-7-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
这个程序为什么运行出问题
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
#define LEN sizeof(struct student)
#define DAT_FILENAME "Information.txt"
/**********************定义数据结构********************/
struct date
{
int year;
int month;
int day;
};
struct student
{
int ID;                  //学号
char Name[8];            //姓名
int age;                 //年龄
char xb;                 //性别
char telephone[20];      //电话
char address[40];        //家庭地址
struct date birthday;    //出生日期
int Cyuyan;              //C语言成绩
int Math;                //高数成绩
int English;             //英语成绩
int average;           //平均分
struct student *next;
};
/*************************函数原型*********************/
void Menu();
struct student *InformationInput(struct student **head);
void DisplayInformation(struct student *head);
struct student *FindstudentID(struct student *head,int findID);
struct student *FindstudentName(struct student *head,char findname[]);
void QueryInformation(struct student *head);
struct student *EditInformation(struct student *head);
struct student *Insert(struct student *head,struct student *p);
void Save(struct student *head);
struct student *Read(struct student *head);
struct student *Delete(struct student *head,int findID);
struct student *Add(struct student *head);
struct student *BubbleSort(struct student*head);
void Help();
/************************显示主菜单***************************/
void Menu()
{
printf("*********************************学生信息管理系统******************************\n");
printf("\n");
printf("\t\t\t\t1--信息录入\n");
printf("\n");
printf("\t\t\t\t2--显示信息\n");
printf("\n");
printf("\t\t\t\t3--信息修改\n");
printf("\n");
printf("\t\t\t\t4--信息查询\n");
printf("\n");
printf("\t\t\t\t5--保存数据到文件\n");
printf("\n");
printf("\t\t\t\t6--打开数据文件\n");
printf("\n");
printf("\t\t\t\t7--文件补充\n");
printf("\n");
printf("\t\t\t\t8--对成绩进行排序\n");
printf("\n");
printf("\t\t\t\t9--帮助\n");
printf("\n");
printf("\t\t\t\t10--退出\n");
printf("\n");
printf("\3友情提示:初次使用请先阅读帮助\3\n");
printf("*******************************************************************************\n");
printf("请选择(1-10):");/*显示主菜单*/
}
/*************************************帮助**************************************************/
void Help()
{
printf("\n\t\t\t欢迎进入帮助系统!\n\n");
printf("\t1.请按照主菜单提示选择所需执行功能的数字代号!\n");
printf("\t2.所有文件请按照规范输入\n");
printf("\t3.刚开始执行程序时若需要文本文件里的数据,请先进行读取文件信息!\n");
printf("\t4.修改信息以后,请切记需要保存!\n");
printf("\n");
}
/********************学生信息录入**********************************/
struct student *InformationInput(struct student **head)
{
int number,i;
struct student *p;
p=(struct student *)malloc(LEN);
printf("\n请输入本次录入的学生人数:");
scanf("%d",&number);
for(i=0;i<number;i++)/*输入 number 个学生的信息*/
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&p->ID);
printf("姓名:\t");
scanf("%s",p->Name);
printf("年龄:\t");
scanf("%d",&p->age);
printf("性别(男M、女W):");
scanf("%s",&p->xb);
printf("电话:\t");
scanf("%s",p->telephone);
printf("地址:\t");
scanf("%s",p->address);
printf("出生年月:\t");
scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
printf("C语言:\t");
scanf("%d",&p->Cyuyan);
printf("高数:\t");
scanf("%d",&p->Math);
printf("英语: \t");
scanf("%d",&p->English);
p->average=((p->Cyuyan+p->Math+p->English)/3);
p=(struct student *)malloc(LEN);
}
return(p);
}
/***********************显示所有学生信息**********************/
void DisplayInformation(struct student *head)
{
struct student *p;
printf("*******************************************************************************");
printf("\n学号\t姓名\t年龄\t性别\t 电话\t\t地址\t 出生年月\t\n C语言成绩\t 高数成绩\t 英语成绩\t 平均分\n");
p=head;
if(p!=NULL)
{
for(p=head->next;p!=NULL;p=p->next)
{
printf("%d\t%s\t%d\t",p->ID,p->Name,p->age);
printf("%c\t%s\t%s\t",p->xb,p->telephone,p->address);
printf("%d %d %d",p->birthday.year,p->birthday.month,p->birthday.day);
printf("%d\t",p->Cyuyan);
printf("%d\t",p->Math);
printf("%d\t",p->English);
printf("%d\t",p->average);
printf("*******************************************************************************");
}
}
else
printf("无数据\n");
}
/**************************查找指定学号的学生信息******************************/
struct student *FindstudentID(struct student *head,int findID)
{
struct student *p;
p=(struct student *)malloc(LEN);
p=head;
if(p!=NULL)
while(p!=NULL)
{
if(p->ID==findID)
break;
p=p->next;
}
else
printf("无数据\n");
return p;
}
/***************************查找指定姓名的学生信息**********************/
struct student *FindstudentName(struct student *head,char findname[])
{
struct student *p;
p=(struct student *)malloc(LEN);
p=head;
if(p!=NULL)
while(p!=NULL)
{
if(strcmp(p->Name,findname)==0)
break;
p=p->next;
}
else
printf("无数据\n");
return p;
}
/**************************学生信息查询*************************/
void QueryInformation(struct student *head)
{
char select;
int findID;
char findname[8];
struct student *p;
printf("*********************请选择查询方式*************************\n");
printf("\t1--按学号查询;\t2--按姓名查询\n");
printf("************************************************************\n");
printf("请选择(1-2):");/*显示菜单信息*/
select=getche();
getch();
switch (select)
{
case'1':
printf("\n 按学号查询\n 请输入学生的学号:");
scanf("%d",&findID);
if((p=FindstudentID(head,findID))!=NULL) /*找到指定学号的学生*/ {
printf("\n 查找结果如下:\n");
printf("\n学号\t姓名\t年龄\t性别\t 电话\t\t地址\t 出生年月\t C语言成绩\t 高数成绩\t 英语成绩\t 平均分\n");
printf("%d\t%s\t%d\t",p->ID,p->Name,p->age);
printf("%c\t%s\t%s\t",p->xb,p->telephone,p->address);
printf("%d %d %d",p->birthday.year,p->birthday.month,p->birthday.day);
printf("%-d\t%-d\t%-d\t%-d\t",p->Cyuyan,p->Math,p->English,p->average);
}
else /*没有找到*/
printf("您输入的学号不存在!\n");
break;
case'2':
printf("\n 按姓名查询\n 请输入学生的姓名:");
scanf("%s",findname);
if((p=FindstudentName(head,findname))!=NULL) /*找到指定姓名的学生*/ {
printf("\n 查找结果如下:\n");
printf("\n 学号\t 姓名\t 年龄\t 性别\t 电话\t 地址\t 出生年月\t C语言成绩\t 高数成绩\t 英语成绩\t 平均分\n");
printf("%d\t%s\t%d\t",p->ID,p->Name,p->age);
printf("%c\t%s\t%s\t",p->xb,p->telephone,p->address);
printf("%d %d %d",p->birthday.year,p->birthday.month,p->birthday.day);
printf("%-d\t%-d\t%-d\t%-d\t",p->Cyuyan,p->Math,p->English,p->average);
}
else /*没有找到*/
printf("您输入的姓名不存在!\n");
break;
default:
printf("选择错误!\n");
}
}
/*********************************修改学生信息***********************/
struct student *EditInformation(struct student *head)
{
int findID;
char select;
struct student *p;
printf("\n 请输入学生的学号:");
scanf("%d",&findID);
if((p=FindstudentID(head,findID))!=NULL) /*找到指定学号的学生*/ {
printf("*********************请修改方式*************************\n");
printf("\t1--修改信息;\t2--删除信息\n");
printf("************************************************************\n");
printf("请选择(1-2):");
select=getche();
getch();
switch (select)
{
case'1': /*修改信息*/
printf("您选择的是修改信息!\n");
printf("姓 名:%s\n",p->Name);
printf("原信息:学号:%d\t 年龄:%d\t 性别:%c\n",p->ID,p->age,p->xb);
printf("\t 电话:%s\t 地址:%s\n",p->telephone,p->address);
printf("请输入新信息\n");
printf("学号\t");
scanf("%d",&p->ID);
printf("姓名:\t");
scanf("%s",p->Name);
printf("年龄:\t");
scanf("%d",&p->age);
printf("性别(男M、女W):");
scanf("%s",&p->xb);
printf("电话:\t");
scanf("%s",p->telephone);
printf("地址:\t");
scanf("%s",p->address);
printf("出生年月:\t");
scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
printf("C语言:\t高数:\t英语:\t平均分: \t");
scanf("%d %d %d %d",&p->Cyuyan,&p->Math,&p->English,&p->average);
break;
case'2': /*删除信息*/
printf("您选择的是删除信息!\n");
head=Delete(head,findID);
break;
}
}
else /*没有找到学号匹配的记录*/
printf("您输入的学号不存在!\n");
return (head);
}
/**************************信息插入***************************************/
struct student *Insert(struct student *head,struct student *p)
{
struct student *p0,*p1;
if(head==NULL)
{
head=p;
p->next=NULL;
return(head);
}
if(p->ID<head->ID)
{
p->next=head;
head=p;
return(head);
}
p1=head;
while((p->ID>p1->ID)&&(p1->next!=NULL))
{
p0=p1;
p1=p1->next;
}
if(p->ID<p1->ID)
{
p->next=p1;
p0->next=p;
}
else
{
if(p->ID==p1->ID)
;
else
{
p1->next=p;
p->next=NULL;
}
}
return(p);
}
/*******************************保存数据到文件**************************/
void Save(struct student *head)
{
FILE *fp;
struct student *p;
p=head;
if((fp=fopen(DAT_FILENAME,"w+"))!=NULL) /*以W+的方式打开文件*/
{
while(p!=NULL)
{
fprintf(fp,"%d\t",p->ID);
fprintf(fp,"%s\t",p->Name);
fprintf(fp,"%d\t",p->age);
fprintf(fp,"%c\t",p->xb);
fprintf(fp,"%s\t",p->telephone);
fprintf(fp,"%s\t",p->address);
fprintf(fp,"%d %d %d\t",p->birthday.year,p->birthday.month,p->birthday.day);
fprintf(fp,"%d %d %d %d\t",p->Cyuyan,p->Math,p->English,p->average);
p=p->next;
}
/*将链表的内容写入文件*/
fclose(fp);
}
else
printf("cannot open file\n");
}
/***************************打开数据文件************************/
struct student *Read(struct student *head)
{
struct student *p;
p=(struct student *)malloc(LEN);
FILE *fp;
if((fp=fopen(DAT_FILENAME,"r"))!=NULL)
{
/*读取文件中的内容到链表中*/
while(fscanf(fp,"%d\t",&p->ID)!=EOF)
{
fscanf(fp,"%s\t",p->Name);
fscanf(fp,"%d\t",&p->age);
fscanf(fp,"%c\t",&p->xb);
fscanf(fp,"%s\t",p->telephone);
fscanf(fp,"%s\t",p->address);
fscanf(fp,"%d %d %d\t",&p->birthday.year,&p->birthday.month,&p->birthday.day);
fscanf(fp,"%d %d %d %d\t",&p->Cyuyan,&p->Math,&p->English,&p->average);
head=Insert(head,p);
p=(struct student *)malloc(LEN);
}
fclose(fp);
}
else
printf("cannot open file\n");
return head;
}
/**************************文件内容补充************************/
struct student *Add(struct student *head)
{
head=Read(head);
return (head);
}
/**************************删除信息****************************/
struct student *Delete(struct student *head,int findID)
{
struct student *pre,*p;
if(head->ID==findID)
{
p=head;
head=head->next;
}
else
{
pre=head;
p=pre->next;
while(p!=NULL&&p->ID!=findID)
{
pre=p;
p=p->next;
}
if(p->ID==findID)
pre->next=p->next;
}
free(p);
return (p);
}
/**************************冒泡排序****************************/
struct student *BubbleSort(struct student*head)
{
     struct student* p;
     struct student* q;
     int temp;
     for(p=head;p!=NULL;p=p->next)
    {
         for(q=p->next;q!=NULL;q=q->next)
         {
              if(p->average>q->average)
              {
                    temp=q->average;
                    q->average=p->average;
                    p->average=temp;
               }
           }
      }
  return (p);
}
/*********************************主函数***************************/
int main()
{
    int a;
    struct student *L;
    printf("\n\t\t\t  欢迎进入学籍管理系统\n\t\t*******************************************\n");
    while(1)
    {
        Menu();
        printf("\n\n\t\t\t\t\21请输入相应的功能选项\20\n");
        scanf("%d",&a);
        switch(a)
        {
            case 1:InformationInput(&L);break;
            case 2:DisplayInformation(L);break;
            case 3:EditInformation(L);break;
            case 4:QueryInformation(L);break;
            case 5:Save(L);break;
            case 6:Read(L);break;
            case 7:Add(L);break;
            case 8:BubbleSort(L);break;
            case 9:Help();break;
            case 10:return 10;
        }
    }
}
搜索更多相关主题的帖子: telephone address include 电话 
2015-07-02 18:27
一个号ID
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-7-2
收藏
得分:0 
没人帮忙看下吗?
2015-07-02 18:50
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:20 
出什么问题?描述清楚,毕竟功能模块多

剑栈风樯各苦辛,别时冰雪到时春
2015-07-02 19:20
一个号ID
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-7-2
收藏
得分:0 
就是程序运行时 录入数据完成 无法显示 程序强制终止
2015-07-02 19:24
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
/********************学生信息录入**********************************/
struct student *InformationInput(struct student **head)
{
int number,i;
struct student *p;
p=(struct student *)malloc(LEN);
printf("\n请输入本次录入的学生人数:");
scanf("%d",&number);
for(i=0;i<number;i++)/*输入 number 个学生的信息*/
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&p->ID);
printf("姓名:\t");
scanf("%s",p->Name);
printf("年龄:\t");
scanf("%d",&p->age);
printf("性别(男M、女W):");
scanf("%s",&p->xb);
printf("电话:\t");
scanf("%s",p->telephone);
printf("地址:\t");
scanf("%s",p->address);
printf("出生年月:\t");
scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
printf("C语言:\t");
scanf("%d",&p->Cyuyan);
printf("高数:\t");
scanf("%d",&p->Math);
printf("英语: \t");
scanf("%d",&p->English);
p->average=((p->Cyuyan+p->Math+p->English)/3);
p=(struct student *)malloc(LEN);
}
return(p);遍历到结尾返回会是空值,而且前面也有问题,我再看看吧问题不少
}

剑栈风樯各苦辛,别时冰雪到时春
2015-07-02 19:45
一个号ID
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-7-2
收藏
得分:0 
好的  谢谢啊  
2015-07-02 19:46
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
#define LEN sizeof(struct student)
#define DAT_FILENAME "Information.txt"
/**********************定义数据结构********************/
struct date
{
int year;
int month;
int day;
};
struct student
{
int ID;                  //学号
char Name[8];            //姓名
int age;                 //年龄
char xb;                 //性别
char telephone[20];      //电话
char address[40];        //家庭地址
struct date birthday;    //出生日期
int Cyuyan;              //C语言成绩
int Math;                //高数成绩
int English;             //英语成绩
int average;           //平均分
struct student *next;
};
/*************************函数原型*********************/
void Menu();
struct student *InformationInput(struct student **head);
void DisplayInformation(struct student *head);
struct student *FindstudentID(struct student *head,int findID);
struct student *FindstudentName(struct student *head,char findname[]);
void QueryInformation(struct student *head);
struct student *EditInformation(struct student *head);
struct student *Insert(struct student *head,struct student *p);
void Save(struct student *head);
struct student *Read(struct student *head);
struct student *Delete(struct student *head,int findID);
struct student *Add(struct student *head);
struct student *BubbleSort(struct student*head);
void Help();
/************************显示主菜单***************************/
void Menu()
{
printf("*********************************学生信息管理系统******************************\n");
printf("\n");
printf("\t\t\t\t1--信息录入\n");
printf("\n");
printf("\t\t\t\t2--显示信息\n");
printf("\n");
printf("\t\t\t\t3--信息修改\n");
printf("\n");
printf("\t\t\t\t4--信息查询\n");
printf("\n");
printf("\t\t\t\t5--保存数据到文件\n");
printf("\n");
printf("\t\t\t\t6--打开数据文件\n");
printf("\n");
printf("\t\t\t\t7--文件补充\n");
printf("\n");
printf("\t\t\t\t8--对成绩进行排序\n");
printf("\n");
printf("\t\t\t\t9--帮助\n");
printf("\n");
printf("\t\t\t\t10--退出\n");
printf("\n");
printf("\3友情提示:初次使用请先阅读帮助\3\n");
printf("*******************************************************************************\n");
printf("请选择(1-10):");/*显示主菜单*/
}
/*************************************帮助**************************************************/
void Help()
{
printf("\n\t\t\t欢迎进入帮助系统!\n\n");
printf("\t1.请按照主菜单提示选择所需执行功能的数字代号!\n");
printf("\t2.所有文件请按照规范输入\n");
printf("\t3.刚开始执行程序时若需要文本文件里的数据,请先进行读取文件信息!\n");
printf("\t4.修改信息以后,请切记需要保存!\n");
printf("\n");
}
/********************学生信息录入**********************************/
struct student *InformationInput(struct student *head)
{
int number,i;
struct student *p=head;
p->next=(struct student *)malloc(LEN);
p=p->next;
printf("\n请输入本次录入的学生人数:");
scanf("%d",&number);
for(i=0;i<number-1;i++)/*输入 number 个学生的信息*/
{
p->next=(struct student *)malloc(LEN);
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&p->ID);
printf("姓名:\t");
scanf("%s",p->Name);
printf("年龄:\t");
scanf("%d",&p->age);
printf("性别(男M、女W):");
scanf("%s",&p->xb);
printf("电话:\t");
scanf("%s",p->telephone);
printf("地址:\t");
scanf("%s",p->address);
printf("出生年月:\t");
scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
printf("C语言:\t");
scanf("%d",&p->Cyuyan);
printf("高数:\t");
scanf("%d",&p->Math);
printf("英语: \t");
scanf("%d",&p->English);
p->average=((p->Cyuyan+p->Math+p->English)/3);
p=p->next;
}
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&p->ID);
printf("姓名:\t");
scanf("%s",p->Name);
printf("年龄:\t");
scanf("%d",&p->age);
printf("性别(男M、女W):");
scanf("%s",&p->xb);
printf("电话:\t");
scanf("%s",p->telephone);
printf("地址:\t");
scanf("%s",p->address);
printf("出生年月:\t");
scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
printf("C语言:\t");
scanf("%d",&p->Cyuyan);
printf("高数:\t");
scanf("%d",&p->Math);
printf("英语: \t");
scanf("%d",&p->English);
p->average=((p->Cyuyan+p->Math+p->English)/3);
p->next=NULL; 
return(head);
}
/***********************显示所有学生信息**********************/
void DisplayInformation(struct student *head)
{
struct student *p;
printf("*******************************************************************************");
printf("\n学号\t姓名\t年龄\t性别\t 电话\t\t地址\t 出生年月\t\n C语言成绩\t 高数成绩\t 英语成绩\t 平均分\n");
p=head;
if(p!=NULL)
{
for(p=head->next;p!=NULL;p=p->next)
{
printf("%d\t%s\t%d\t",p->ID,p->Name,p->age);
printf("%c\t%s\t%s\t",p->xb,p->telephone,p->address);
printf("%d %d %d",p->birthday.year,p->birthday.month,p->birthday.day);
printf("%d\t",p->Cyuyan);
printf("%d\t",p->Math);
printf("%d\t",p->English);
printf("%d\t",p->average);
printf("*******************************************************************************");
}
}
else
printf("无数据\n");
}
/**************************查找指定学号的学生信息******************************/
struct student *FindstudentID(struct student *head,int findID)
{
struct student *p;
p=(struct student *)malloc(LEN);
p=head;
if(p!=NULL)
while(p!=NULL)
{
if(p->ID==findID)
break;
p=p->next;
}
else
printf("无数据\n");
return p;
}
/***************************查找指定姓名的学生信息**********************/
struct student *FindstudentName(struct student *head,char findname[])
{
struct student *p;
p=(struct student *)malloc(LEN);
p=head;
if(p!=NULL)
while(p!=NULL)
{
if(strcmp(p->Name,findname)==0)
break;
p=p->next;
}
else
printf("无数据\n");
return p;
}
/**************************学生信息查询*************************/
void QueryInformation(struct student *head)
{
char select;
int findID;
char findname[8];
struct student *p;
printf("*********************请选择查询方式*************************\n");
printf("\t1--按学号查询;\t2--按姓名查询\n");
printf("************************************************************\n");
printf("请选择(1-2):");/*显示菜单信息*/
select=getche();
getch();
switch (select)
{
case'1':
printf("\n 按学号查询\n 请输入学生的学号:");
scanf("%d",&findID);
if((p=FindstudentID(head,findID))!=NULL) /*找到指定学号的学生*/ {
printf("\n 查找结果如下:\n");
printf("\n学号\t姓名\t年龄\t性别\t 电话\t\t地址\t 出生年月\t C语言成绩\t 高数成绩\t 英语成绩\t 平均分\n");
printf("%d\t%s\t%d\t",p->ID,p->Name,p->age);
printf("%c\t%s\t%s\t",p->xb,p->telephone,p->address);
printf("%d %d %d",p->birthday.year,p->birthday.month,p->birthday.day);
printf("%-d\t%-d\t%-d\t%-d\t",p->Cyuyan,p->Math,p->English,p->average);
}
else /*没有找到*/
printf("您输入的学号不存在!\n");
break;
case'2':
printf("\n 按姓名查询\n 请输入学生的姓名:");
scanf("%s",findname);
if((p=FindstudentName(head,findname))!=NULL) /*找到指定姓名的学生*/ {
printf("\n 查找结果如下:\n");
printf("\n 学号\t 姓名\t 年龄\t 性别\t 电话\t 地址\t 出生年月\t C语言成绩\t 高数成绩\t 英语成绩\t 平均分\n");
printf("%d\t%s\t%d\t",p->ID,p->Name,p->age);
printf("%c\t%s\t%s\t",p->xb,p->telephone,p->address);
printf("%d %d %d",p->birthday.year,p->birthday.month,p->birthday.day);
printf("%-d\t%-d\t%-d\t%-d\t",p->Cyuyan,p->Math,p->English,p->average);
}
else /*没有找到*/
printf("您输入的姓名不存在!\n");
break;
default:
printf("选择错误!\n");
}
}
/*********************************修改学生信息***********************/
struct student *EditInformation(struct student *head)
{
int findID;
char select;
struct student *p;
printf("\n 请输入学生的学号:");
scanf("%d",&findID);
if((p=FindstudentID(head,findID))!=NULL) /*找到指定学号的学生*/ {
printf("*********************请修改方式*************************\n");
printf("\t1--修改信息;\t2--删除信息\n");
printf("************************************************************\n");
printf("请选择(1-2):");
select=getche();
getch();
switch (select)
{
case'1': /*修改信息*/
printf("您选择的是修改信息!\n");
printf("姓 名:%s\n",p->Name);
printf("原信息:学号:%d\t 年龄:%d\t 性别:%c\n",p->ID,p->age,p->xb);
printf("\t 电话:%s\t 地址:%s\n",p->telephone,p->address);
printf("请输入新信息\n");
printf("学号\t");
scanf("%d",&p->ID);
printf("姓名:\t");
scanf("%s",p->Name);
printf("年龄:\t");
scanf("%d",&p->age);
printf("性别(男M、女W):");
scanf("%s",&p->xb);
printf("电话:\t");
scanf("%s",p->telephone);
printf("地址:\t");
scanf("%s",p->address);
printf("出生年月:\t");
scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
printf("C语言:\t高数:\t英语:\t平均分: \t");
scanf("%d %d %d %d",&p->Cyuyan,&p->Math,&p->English,&p->average);
break;
case'2': /*删除信息*/
printf("您选择的是删除信息!\n");
head=Delete(head,findID);
break;
}
}
else /*没有找到学号匹配的记录*/
printf("您输入的学号不存在!\n");
return (head);
}
/**************************信息插入***************************************/
struct student *Insert(struct student *head,struct student *p)
{
struct student *p0,*p1;
if(head==NULL)
{
head=p;
p->next=NULL;
return(head);
}
if(p->ID<head->ID)
{
p->next=head;
head=p;
return(head);
}
p1=head;
while((p->ID>p1->ID)&&(p1->next!=NULL))
{
p0=p1;
p1=p1->next;
}
if(p->ID<p1->ID)
{
p->next=p1;
p0->next=p;
}
else
{
if(p->ID==p1->ID)
;
else
{
p1->next=p;
p->next=NULL;
}
}
return(p);
}
/*******************************保存数据到文件**************************/
void Save(struct student *head)
{
FILE *fp;
struct student *p;
p=head;
if((fp=fopen(DAT_FILENAME,"w+"))!=NULL) /*以W+的方式打开文件*/
{
while(p!=NULL)
{
fprintf(fp,"%d\t",p->ID);
fprintf(fp,"%s\t",p->Name);
fprintf(fp,"%d\t",p->age);
fprintf(fp,"%c\t",p->xb);
fprintf(fp,"%s\t",p->telephone);
fprintf(fp,"%s\t",p->address);
fprintf(fp,"%d %d %d\t",p->birthday.year,p->birthday.month,p->birthday.day);
fprintf(fp,"%d %d %d %d\t",p->Cyuyan,p->Math,p->English,p->average);
p=p->next;
}
/*将链表的内容写入文件*/
fclose(fp);
}
else
printf("cannot open file\n");
}
/***************************打开数据文件************************/
struct student *Read(struct student *head)
{
struct student *p;
p=(struct student *)malloc(LEN);
FILE *fp;
if((fp=fopen(DAT_FILENAME,"r"))!=NULL)
{
/*读取文件中的内容到链表中*/
while(fscanf(fp,"%d\t",&p->ID)!=EOF)
{
fscanf(fp,"%s\t",p->Name);
fscanf(fp,"%d\t",&p->age);
fscanf(fp,"%c\t",&p->xb);
fscanf(fp,"%s\t",p->telephone);
fscanf(fp,"%s\t",p->address);
fscanf(fp,"%d %d %d\t",&p->birthday.year,&p->birthday.month,&p->birthday.day);
fscanf(fp,"%d %d %d %d\t",&p->Cyuyan,&p->Math,&p->English,&p->average);
head=Insert(head,p);
p=(struct student *)malloc(LEN);
}
fclose(fp);
}
else
printf("cannot open file\n");
return head;
}
/**************************文件内容补充************************/
struct student *Add(struct student *head)
{
head=Read(head);
return (head);
}
/**************************删除信息****************************/
struct student *Delete(struct student *head,int findID)
{
struct student *pre,*p;
if(head->ID==findID)
{
p=head;
head=head->next;
}
else
{
pre=head;
p=pre->next;
while(p!=NULL&&p->ID!=findID)
{
pre=p;
p=p->next;
}
if(p->ID==findID)
pre->next=p->next;
}
free(p);
return (p);
}
/**************************冒泡排序****************************/
struct student *BubbleSort(struct student*head)
{
     struct student* p;
     struct student* q;
     int temp;
     for(p=head;p!=NULL;p=p->next)
    {
         for(q=p->next;q!=NULL;q=q->next)
         {
              if(p->average>q->average)
              {
                    temp=q->average;
                    q->average=p->average;
                    p->average=temp;
               }
           }
      }
  return (p);
}
/*********************************主函数***************************/
int main()
{
    int a;
    struct student *L;
    L=(struct student*)malloc(sizeof(struct student));
    printf("\n\t\t\t  欢迎进入学籍管理系统\n\t\t*******************************************\n");
    while(1)
    {
        Menu();
        printf("\n\n\t\t\t\t\21请输入相应的功能选项\20\n");
        scanf("%d",&a);
        switch(a)
        {
            case 1:InformationInput(L);break;
            case 2:DisplayInformation(L);break;
            case 3:EditInformation(L);break;
            case 4:QueryInformation(L);break;
            case 5:Save(L);break;
            case 6:Read(L);break;
            case 7:Add(L);break;
            case 8:BubbleSort(L);break;
            case 9:Help();break;
            case 10:return 10;
        }
    }
}

还有其他问题就自己解决吧,说几句,排版不行,定义结构体可以用转义符,模块功能分布还好

剑栈风樯各苦辛,别时冰雪到时春
2015-07-02 19:51
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
这种问题涉及链表操作,放在数据结构算法比较好,话说楼主怎么会找我呢?我还有事先撤啦,白白!

剑栈风樯各苦辛,别时冰雪到时春
2015-07-02 19:53
一个号ID
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-7-2
收藏
得分:0 
这是我这周的课设 昨天才开始做 明天就要交 好难啊
2015-07-02 19:53
一个号ID
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-7-2
收藏
得分:0 
回复 7楼 林月儿
谢谢了啊
2015-07-02 19:54
快速回复:这个程序为什么运行出问题
数据加载中...
 
   



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

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