| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:求助】关于c的一个入门级程序的问题
只看楼主 加入收藏
eason0972
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-7-2
收藏
 问题点数:0 回复次数:0 
求助】关于c的一个入门级程序的问题
要求是这样的
 可读写方式打开文本类型的数据文件,此文件默认为c:\students.dat。若该文件不存在,则新建此文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,并进行按键判断。
 在判断键值时,有效输入为0~12之间的任意整数,其他输入都被视为错误按键:
 若输入0,则会判断在对记录进行了更新操作之后是否进行了存盘操作。若未存盘,系统会提示用户是否需要进行数据存盘,用户输入Y或y,系统会进行存盘操作。左后系统执行推出电话簿管理系统的操作。
 若输入1,则录入学生信息;
 若输入2,则显示所有学生信息
 若输入3,则按学号查询学生信息
 若输入4,则按姓名查询学生信息(支持模糊查询)
 若输入5,则按年龄查询学生信息
 若输入6,则查询指定学生的所在系的信息(包括系名、系主任、系的办公地点)
 若输入7,则修改学生信息
 若输入8,则删除学生信息
 若输入9,则追加学生信息
 若输入10,则保存学生信息到文件
 若输入11,则从文件载入学生信息
 若输入12,则按成绩从高到低显示所有学生信息
 1)学生信息(struct student)用链表表示;
 2)系信息(struct department)用结构数组表示;
 我自己编写出来如下:
#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <conio.h>
 struct student            /*学生信息*/
 {
char num[20];     /*学号*/
char name[20];    /*姓名*/
char sex;         /* 性别,'1'->男, '0'->女*/
short age;        /*年龄*/
short score[3];   /*三门课程的成绩*/
short sum;        /*总成绩*/
short deptid;     /*所在系的系号*/
struct student *next;
 };
 
/*创建一个新的链表*/
 struct students *create()
 {
 struct * students; p, *q, *head=NULL;
 int k, m=1;
 char tmp[20];
 printf("输入结点的个数:");
gets(tmp);
 k=atoi(tmp);
 while(k)
 {
 p=(struct students *)malloc(sizeof(struct) students);
 printf("\n======请输入第%d个结点的信息======\n", m);
 printf("学号:");
gets(p->num);
 printf("姓名:");
gets(p->name);
     printf("性别:");
gets(p->sex); /* 性别,'1'->男, '0'->女*/
printf("年龄:");
gets(p->age);
 printf("三门课的成绩:");
gets(p->score);
 printf("总成绩:");
gets(p->sum:");
 printf("所在的系号:");
gets(p->deptid);
 if(m==1)
 head=p;
 else
 q->next=p;
 q=p;
 p->next=NULL;
 k--;
m++;
 }
 return head;
 }
 struct department           /*系信息,假设总共有3个系*/
 {
short id;           /*系号*/
char name[30];      /*系名*/
char dean[20];      /*系主任*/
char location[30];  /*系的办公地点*/
 };
 int main()
 {
 struct department emp[3];
 int i;
 for(1=0;i<3;i++)
 {
 printf("系号:");scanf("%d",&emp[i].id)'
 printf("系名:");scanf("%d",&emp[i].name)'
 printf("系主任:");scanf("%d",&emp[i].dean)'
 printf("系的办公地点:");scanf("%d",&emp[i].location)'
 /*主菜单*/
 int menu()
 {
 int c=0;
 char s[3];
 system("cls");
 printf("   学生信息管理系统\n");
 printf("=====================\n");
 printf(" 1. 录入学生信息\n");
 printf(" 2. 显示所有学生信息\n");
         printf(" 3. 按学号查询学生信息\n");
         printf(" 4.按姓名查询学生信息 \n");
         printf(" 5. 按年龄查询学生信息\n");
 printf(" 10. 追加人员信息(在起始处)\n");
 printf(" 9. 追加人员信息(在末尾处)\n");
 printf(" 8. 删除人员信息\n");
 printf(" 7. 修改人员信息\n");
 printf(" 13. 按关键字升序插入到链表\n");
 printf(" 11. 保存人员信息到文件\n");
 printf(" 12. 从文件载入人员信息\n");
 printf(" 0. 退出系统\n");
 
do{
 printf("\n请选择功能(0-13): ");    /*在菜单窗口外显示提示信息*/
gets(s);           /*输入选择项*/
c=atoi(s);            /*将输入的字符串转化为整形数*/
 }while(c<0||c>13);    /*选择项不在0~14之间重输*/
return c;
 }
 
void enterToContinue() /*按回车继续*/
 {
printf("\n按 Enter 继续...\n");
 getchar();
 return;
 }
 
/*退出系统,判断是否真的退出*/
 void exitSys()
 {
 char x;
 printf("你真的要退出系统吗?(Y/N)");
 while(1)
 {
 x=getche();
 if(x=='y' || x=='Y' || x=='n' || x=='N' )
 break;
 printf("\b");
 }
 if(x=='y' || x=='Y')
 {
 printf("\n");
 exit(0);
 }
 return;
 }
 
void main()
 {
 struct students *h=NULL;
 int choice=0;
 while(1)
 {
 choice=menu();
 switch (choice)
 {
 case 1: h=create(); enterToContinue(); break;
 case 2: display(h); enterToContinue(); break;
 case 3: h=insertAtBegin(h); enterToContinue(); break;
 case 4: h=insertAtEnd(h); enterToContinue(); break;
 case 5: h=deleteOnName(h); enterToContinue(); break;
 case 6: h=updateOnName(h); enterToContinue(); break;
 case 7: h=insertOnName(h); enterToContinue(); break;
 case 8: saveNode(h); break;
 case 9: h=loadNode(); break;
                         case 10:h=insertOnName(h); enterToContinue(); break;
                         case 11:h=insertOnName(h); enterToContinue(); break;
                         case 12:h=insertOnName(h); enterToContinue(); break;
 case 0: exitSys();
 }
 }
 return;
 }
 
};
 但是出现了很多问题,一时解决不了,求指导,谢谢大神们了。
搜索更多相关主题的帖子: 管理系统 电话簿 记录 新建 
2013-07-02 15:59
快速回复:求助】关于c的一个入门级程序的问题
数据加载中...
 
   



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

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