| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 721 人关注过本帖
标题:毕业补考题目 实在不会 今天就要交了!求大神啊!
只看楼主 加入收藏
diy3344520
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2011-6-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:13 
毕业补考题目 实在不会 今天就要交了!求大神啊!
设计学生信息管理系统,使之完成如下功能,写出源程序并做出适当说明。
  学生信息包括:学好,姓名,性别,出生年月,专业,班级,家庭地址,电话等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能
(3)学生信息浏览功能
(4)查询、排序功能:可按学号、按姓名、按专业、按班级查询;
 (5)学生信息的删除与修改
搜索更多相关主题的帖子: 源程序 管理系统 姓名 电话 
2011-06-13 11:22
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:7 
貌似这种情况叫做不知悔改
2011-06-13 11:42
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:7 
最近做这个 学生信息系统的很多,随便找找就有
2011-06-13 11:45
diy3344520
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2011-6-13
收藏
得分:0 
··这个是选修课   大一的了   出去实习了一年多  回来补考  是真的不会啊!
2011-06-13 11:46
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>

typedef struct person       //通讯录结构中节点的定义
{
    char name[30];          //姓名
    char addr[30];          //地址
    char offphnum[15];      //办公电话
    char hmphnum[15];       //家庭电话
    char mbnub[15];         //移动电话
    struct person *next;
}listnode,*listlink;

struct add_person          //通讯录记录结构
{
    char name[30];
    char addr[30];
    char offphnum[15];
    char hmphnum[15];
    char mbnub[15];
};
listlink head=NULL,end=NULL;
listlink create();         //建立通讯录并将信息存入文件
listlink readfp();         //将文件的信息独处并转存如链表
void Show(listlink head);  //显示信息
listlink Delete(listlink head);//删除一条记录的信息
void Find(listlink head);  //查找记录
listlink Input(listlink head); //向通讯录加入一条记录
void Alter(listlink head); //修改一条记录的信息
void Save(listlink head);  //保存信息到文件

int main()
{ 
    int n;
    head=readfp();
    if(head==NULL)
        head=create(head);
    while(1)
    {
        printf("------------------------------------\n");
        printf("请选择操作:1 显示所有  2 删除记录  \n");
        printf("            3 查询记录  4 插入新记录\n");
        printf("            5 修改记录  0 保存退出  \n");
        printf("请选择操作:");
        scanf("%d",&n);
        switch(n)
        {
            case 1:Show(head);break;
            case 2:head=Delete(head);break;
            case 3:Find(head);break;
            case 4:head=Input(head);break;
            case 5:Alter(head);break;
            case 0:Save(head);return 0;
        }
    }
    return 0;
}

//----------------------------建立通讯录
listlink create()
{
    listlink s;
    printf("\n通讯录为空!\n");
    printf("请输入信息以创建通讯录(结束请在姓名处输入‘#’)\n\n");
    while(1)
    {
        s=(listlink)malloc(sizeof(listnode));
        printf("姓名:");
        scanf("%s",&s->name);
        if(strcmp(s->name,"#")==0) break;
        printf("地址:");
        scanf("%s",&s->addr);
        printf("办公电话:");
        scanf("%s",&s->offphnum);
        printf("家庭电话:");
        scanf("%s",&s->hmphnum);
        printf("移动电话:");
        scanf("%s",&s->mbnub);
        s->next=NULL;
        if(head==NULL)
            head=end=s;
        else
        {
            end->next=s;
            end=s;
        }
        printf("\n");
    }
    return (head);
}

//-----------------------------显示全部记录
void Show(listlink head)
{
    listlink p1;
    p1=head;
    printf("\n");
    if(p1==NULL)
    {
        printf("没有记录!\n");
        return ;
    }
    while(p1!=NULL)
    {
        printf("姓名:%s\n",p1->name);
        printf("地址:%s\n",p1->addr);
        printf("办公电话:%s\n",p1->offphnum);
        printf("家庭电话:%s\n",p1->hmphnum);
        printf("移动电话:%s\n",p1->mbnub);
        p1=p1->next;
        printf("\n");
    }
}
//----------------------------将文件的信息读出并转存如链表中
listlink readfp()
{
    FILE *fp;
    struct add_person persons;
    listlink s;
    fp=fopen("people.txt","r");
    if(fp==NULL)
    {
        printf("cannot open file!\n");
        return NULL;
    }
    printf("\n\n通讯录打开成功!                \n");
    fread(&persons,sizeof(struct add_person),1,fp);
    while(!feof(fp))
    {
        s=(listlink)malloc(sizeof(listnode));    //存入链表中
        strcpy(s->name,persons.name);
        strcpy(s->addr,persons.addr);
        strcpy(s->offphnum,persons.offphnum);
        strcpy(s->hmphnum,persons.hmphnum);
        strcpy(s->mbnub,persons.mbnub);
        s->next=NULL;
        if(head==NULL)                             //尾插法将其插入链表中
            head=end=s;
        else
        {
            end->next=s;
            end=s;
        }
        fread(&persons,sizeof(struct add_person),1,fp);
    }
    return head;
}

//-------------------------------------将信息保存到文件中
void Save(listlink head)
{
    FILE *fp;
    static struct add_person persons;
    listlink p;
    fp=fopen("people.txt","wb");
    p=head;
    while(p!=NULL)
    {
        strcpy(persons.name,p->name);
        strcpy(persons.addr,p->addr);
        strcpy(persons.offphnum,p->offphnum);
        strcpy(persons.hmphnum,p->hmphnum);
        strcpy(persons.mbnub,p->mbnub);
        fwrite(&persons,sizeof(struct add_person),1,fp);
        p=p->next;
    }
    fclose(fp);
}

//----------------------------------删除一条记录
listlink Delete(listlink head)
{
    listlink p1,p2;
    char Name[10],ch;
    int k=1;
    p1=p2=head;
    if(p1==NULL)
    {
        printf("没有记录!\n");
        return NULL;
    }
    while(k)
    {
        printf("请输入要删除人的姓名:");
        scanf("%s",&Name);
        while(p1!=NULL)
        {
            p2=p1;
            if(strcmp(p1->name,Name)==0)
            {
                if(p1==head)
                {
                    if(p1->next!=NULL)
                    head=p1->next;
                else
                    head=NULL;
                }
            else
                p2->next=p1->next;
            free(p1);
            printf("删除成功!\n");
            return head;
            }
        p1=p1->next;
    }
    printf("要删除的记录不存在!\n");
    printf("是否继续?(Y/N):");
        getchar();
        ch=getchar();
        if(ch=='Y'||ch=='y')
            k=1;
        else
            k=0;
    }
    return head;
}

//--------------------------------------查找指定记录
void Find(listlink head)
{
    listlink p1=head;
    char Name[10],ch;
    int k=1;
    if(p1==NULL)
    {
        printf("没有记录!\n");
        return ;
    }
    while(k)
    {
        p1=head;
        printf("请输入要查找人的姓名:");
        scanf("%s",&Name);
        while(strcmp(Name,p1->name)!=0&&p1->next!=NULL)
        {
            p1=p1->next;
        }
        if(strcmp(Name,p1->name)!=0)
            printf("要查找的记录不存在!\n");
        else
        {
            printf("姓名:%s\n",p1->name);
            printf("地址:%s\n",p1->addr);
            printf("办公电话:%s\n",p1->offphnum);
            printf("家庭电话:%s\n",p1->hmphnum);
            printf("移动电话:%s\n",p1->mbnub);
        }
        printf("是否继续?(Y/N):");
        getchar();
        ch=getchar();
        if(ch=='Y'||ch=='y')
            k=1;
        else
            k=0;
    }
}

//------------------------------------------向通讯录中插入新的记录
listlink Input(listlink head)
{
    int k=1;
    char ch;
    listlink s,p;
    p=head;
    while(k)
    {
        s=(listlink)malloc(sizeof(listnode));
        printf("姓名:");
        scanf("%s",&s->name);
        printf("地址:");
        scanf("%s",&s->addr);
        printf("办公电话:");
        scanf("%s",&s->offphnum);
        printf("家庭电话:");
        scanf("%s",&s->hmphnum);
        printf("移动电话:");
        scanf("%s",&s->mbnub);
        s->next=NULL;
        if(p==NULL)
            head=s;
        else
        {
            end->next=s;
            end=s;
        }
        printf("是否继续?(Y/N):");
        getchar();
        ch=getchar();
        if(ch=='Y'||ch=='y')
            k=1;
        else
            k=0;
    }
    return head;
}

//-----------------------------------------修改一条记录的信息
void Alter(listlink head)
{
    listlink p=head;
    char pname[10],ch;
    int k=1;
    if(p==NULL)
    {
        printf("没有记录!\n");
        return ;
    }
    while(k)
    {
        printf("请输入要修改人的姓名:");
        scanf("%s",&pname);
        while(p!=NULL)
        {
             if(strcmp(pname,p->name)==0)
             {
                 printf("请输入要修改的信息!\n");
                 printf("姓名:");
                 scanf("%s",&p->name);
                 printf("地址:");
                 scanf("%s",&p->addr);
                 printf("办公电话:");
                 scanf("%s",&p->offphnum);
                 printf("家庭电话:");
                 scanf("%s",&p->hmphnum);
                 printf("移动电话:");
                 scanf("%s",&p->mbnub);
                 break;
             }
             p=p->next;
        }
        if(p==NULL)
            printf("没有要修改人的记录!\n");
        printf("是否继续?(Y/N):");
        getchar();
        ch=getchar();
        if(ch=='Y'||ch=='y')
            k=1;
        else
            k=0;
    }
       
}


这个差不多了, 你自己加点功能,改一下应该可以了。
2011-06-13 11:50
diy3344520
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2011-6-13
收藏
得分:0 
能说下这个运行后的效果么?  是真的不懂     
2011-06-13 11:54
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:0 
回复 6楼 diy3344520
你把代码copy 下来运行 不就知道了啊?
我这里不好截图。
2011-06-13 12:00
diy3344520
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2011-6-13
收藏
得分:0 
试过了   运行后啥也没有  只说运行成功!
2011-06-13 12:05
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:0 
我这里运行没问题。
2011-06-13 12:09
diy3344520
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2011-6-13
收藏
得分:0 
能Q聊么 ?   870186273
2011-06-13 12:12
快速回复:毕业补考题目 实在不会 今天就要交了!求大神啊!
数据加载中...
 
   



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

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