| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 485 人关注过本帖
标题:快快求租,帮帮看看,看看这个程序这么写,谢谢
只看楼主 加入收藏
GL38474912
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
快快求租,帮帮看看,看看这个程序这么写,谢谢
程序设计:  简单教师业绩考核系统
【问题描述】
用C/C++设计,能实现对全校教师的业绩进行考评,系统应该具备添加、修改、查询、排序等功能,能对考评的情况进行记录和管理。

【基本要求】
(1)    教师的业绩记录中的每一条信息包括:教师名、所属的院系、教学的考评、科研的考评、电子邮件。
(2)    将教师的业绩记录用一个文件存储,文件类型是文本文件。

【系统必须的基本数据结构和功能】
1. 数据结构
struct  date         /*  日期结构  */
{   int  year;       /*    */
int  month;      /*    */
int  day;        /*    */
};
struct  teacher                   /*  教师信息结构  */
{   char  no[10];                 /*  工号  */
char  name[9];                /*  姓名  */
char  sex[3];                 /*  性别  */
struct  date  birthday;       /*  出生日期  */
int  score[2];                /*教学和科研的考评值   */
}
struct  teacher  teach[N];     /*  结构体数组  */

void  readti();    /*  建立教师信息文件 teachf.txt并输入教师信息  */
2. 程序模块及函数功能
① 显示教师信息:void  printsi();
② 按学号排序(起泡法排序):void  sort_no();
③ 按考评值排序:void  sort_total();
④ 按工号查找教师的教学和科研的考评值,以及平均值:void  srch_no();
⑤ 按姓名查找教师的教学和科研的考评值,以及平均值:void  srch_name();
⑥ 按教师总考评值排序并插入新老师的业绩情况:void insert_total();
⑦ 查询全校老师的教学和科研的平均分数:void  find_ave();


附教师信息:
工号      姓名      性别    出生日期    教学考评值    科研考评值
10000    zhangwei   nan     1980.1.9        7                8
10001    chenwei    nv      1982.2.6        8                7
10002    wangwei   nv       1984.3.12       6               7
10003    liwei       nv      1979.7.7        7                8
10004    liuwei     nan      1981.9.15       7                8
10005    wuwei     nan      1981.10.1       9                8
10006    zhaowei    nv       1980.2.9        7                9
10007    qianwei    nan      1980.11.11      8                8
10008    sunwei     nv       1982.6.5        8                7
10009    linwei      nan      1977.3.2       7                8

搜索更多相关主题的帖子: 教师 记录 文本文件 管理 
2011-11-02 21:21
GL38474912
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-2
收藏
得分:0 
#include <stdio.h>
struct  date  
{   int  year;     
int  month;     
int  day;      
};
struct  teacher                  
{   char  no[10];               
char  name[9];               
char  sex[3];                 
struct  date  birthday;      
int  score[2];              
}
struct  teacher  teach[N];   

void  readti();

void  printsi();
{for(i=0;i<10:i++)
cout<<"}
 
void sort_no();
{
    int i,j;
    char k[10];
    for(i=1;i<N-1;i++)      
 {
    for(j=1;j<N-1-i;j++)  
   {
     if(teach[j].no[10]>teach[j+1].no[10])
     {
       k[10]= teach[j].no[10];
      teach[j].no[10]=teach[j+1].no[10];
        teach[j+1].no[10]=k[10];
      }
   }
 }
}

void  sort_total();
{
    int i,j,k;
    for(i=1;i<N-1;i++)
    if(teach[j].score[1]>teach[j+1].score[1])

   
}

 void  srch_no()
int search(char filename[], int way)
{
    FILE *fp;
    teacher score;
    int teach[N].score[0];
    int teach[N].score[1];
   

    if((fp = fopen(filename, "r")) == NULL){
        printf("\nCannot open %s file. ", filename);
        return 0;        
    }

    if(way == 1){
        printf("please input the tescher score[1]: ");
        scanf("%s", &name);
    }
    if(way == 2){
        printf("please input the teacher score[2]: ");
        scanf("%s", &author);
    }

    while(!feof(fp)){
        fscanf(fp, "\n", &teacher.no, &teacher.name, &teacher.sex,&teacher.date, &teacher.birthday,
                           &teacher.score[0], &teacher.score[1]     
            );
        if(way == 1){
            if(strcmp(name, book.name) == 0){
                printf("\n%d %s %s %s %1.1f %d/%d/%d",  &teacher.no, &teacher.name, &teacher.sex,&teacher.date, &teacher.birthday,
                           &teacher.score[0], &teacher.score[1])
            }
        }
        if(way == 2){
            if(strcmp(author, book.author) == 0){
                printf("\n%d %s %s %s %1.1f %d/%d/%d",  &teacher.no, &teacher.name, &teacher.sex,&teacher.date, &teacher.birthday,
                           &teacher.score[0], &teacher.score[1]  )  ;
            }
        }
    }
    printf("\n");
    fclose(fp);
    return 1;
}

 
void  srch_name();


void insert_total();



void  find_ave();
2011-11-02 21:23
GL38474912
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-2
收藏
得分:0 
写的对不对,大家帮忙看看,谢谢
2011-11-02 21:24
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10//根据实际教师人数更改(要大于实际教师人数);
struct  date 
    {   int  year;    
        int  month;    
        int  day;      
    };

struct  teacher                  
    {   char  no[10];               
        char  name[9];               
        char  sex[3];                
        struct  date  birthday;      
        int   score[2];             
    };

void  writeti(struct teacher *teach, int *n)
{
    //从键盘输入数据并写入文本中,并返回结构体实际长度;
    FILE *fp1;
    int i=0;
    char ch;
    if((fp1=fopen("text.txt","wb"))==NULL)
    {
        printf("can not open file");
        return;
    }
    printf("请输入教师工号,姓名,性别,出生日期(**.**.**),教学分,科研分\n");
    printf("例子:123456 小王 男 1987.02.23 87 96 \n");
    do
    {
        printf("是否继续Y/N?\n");
        fflush(stdin); //清空键盘缓冲区;
        ch=getchar();
        if(ch=='N')break;
        else
        {
            printf("请输入教师工号,姓名,性别,出生日期(**.**.**),教学分,科研分\n");

            scanf("%s %s %s %d.%d.%d %d %d",teach[i].no,teach[i].name,teach[i].sex,
            &teach[i].birthday.year,&teach[i].birthday.month,&teach[i].birthday.day,&teach[i].score[0],&teach[i].score[1]);
            fwrite(&teach[i],sizeof(struct teacher),1,fp1);
            (*n)++; i++;
        }
       
    }while(1);
   
    fclose(fp1);
}

void  readti(struct teacher *teach,int n)
{
    //从文本中读出数据;
    FILE *fp1;
    int i;
    if((fp1=fopen("text.txt","rb"))==NULL)
    {
        printf("can not open file");
        exit(0);
    }
    printf("output from file:\n");
    fread(teach,sizeof(teach),n,fp1);
    for(i=0; i<n; i++)
    {
       
        printf("%s%10s%10s     %d.%d.%d%10d%10d\n",teach[i].no,teach[i].name,teach[i].sex,
            teach[i].birthday.year,teach[i].birthday.month,teach[i].birthday.day,teach[i].score[0],teach[i].score[1]);
    }
    fclose(fp1);
}

void  printsi(struct teacher *teach, int n)
    {
        //输出教师的信息;
        int i;
        for(i=0; i<n; i++)
        {
            printf("教师工号");
            printf("%10s,%10s,%10s,%d.%d.%d,%10d\n",teach[i].no,teach[i].name,teach[i].sex,
            teach[i].birthday.year,teach[i].birthday.month,teach[i].birthday.day,teach[i].score[0],teach[i].score[1]);
        }
    }

void sort_no(struct teacher *teach, int n)
{
    //按照教师工号排序;
    int  i,j;
    struct teacher k;
    for(i=0; i<n-1; i++)     
         for(j=i; j<n-1; j++) 
                if(strcmp(teach[j].no,teach[j+1].no)>0)
                    {
                        k= teach[j];
                        teach[j]=teach[j+1];
                        teach[j+1]=k;
                    }
}

void  sort_total(struct teacher *teach, int n)
{
    //按照科研和教学总分排序;
    int i, j;
    struct teacher k;
    for(i=0;i<n-1;i++)
    {
        teach[i].score[2]=teach[i].score[0]+teach[i].score[1];
    }
    for(i=0; i<n-1; i++)
        for(j=i; j<n; j++)
            if(teach[j].score[2]<teach[j+1].score[2])
            {
                k=teach[j];
                teach[j]=teach[j+1];
                teach[j+1]=k;
            }
   
}

void  srch_no(struct teacher *teach, int n)
{
    //通过教师工号查询教师信息;
    char k[10];
    printf("请输入教师工号:");
    scanf("%s",k);
    for(int i=0; i<n; i++)
    {
        if(strcmp(teach[i].no,k)==0)
            printf("%s, %d, %d, %d\n",teach[i].no,teach[i].score[0],teach[i].score[1],(teach[i].score[0]+teach[i].score[1])/2);
    }
}

void  srch_name(struct teacher *teach, int n)
{
    //通过教师姓名查询教师信息;
    char k[10];
    printf("请输入教师姓名:");
    scanf("%s",k);
    for(int i=0; i<n; i++)
    {
        if(strcmp(teach[i].name,k)==0)
            printf("%s, %d, %d, %d\n",teach[i].name,teach[i].score[0],teach[i].score[1],(teach[i].score[0]+teach[i].score[1])/2);
    }
}

void  insert_total(struct teacher *teach,int n)
{
    //插入新的教师信息;
    char  a[10],b[9],c[3];
    int   d,e,f,g,h;
    sort_total(teach,n);
    printf("请输入新教师的工号,姓名,性别,出生日期,教学考评值,科研考评值中间用空格分隔");
    scanf("%s %s %s %d %d %d %d %d %d",a,b,c,d,e,f,g,h);
    if(n>=N)
    {
        printf("结构体数组长度不够,不能插入!");
        return;
    }
    for(int j=n; j>=0; j--)
    {
        if(strcmp(teach[j].no,a)<0)
        {
            teach[j+1]=teach[j];
        }
        else
        {
            strcpy(teach[j].no,a);
            strcpy(teach[j].name,b);
            strcpy(teach[j].sex,c);
            teach[j].birthday.year=d;
            teach[j].birthday.month=e;
            teach[j].birthday.day=f;
            teach[j].score[0]=g;
            teach[j].score[1]=h;
            teach[j].score[2]=g+h;
        }
    }
}

void  find_ave(struct teacher *teach, int n)
{
    //求全校老师教学和科研平均分;
    int sum;
    for(int i=0; i<n; i++)
    {
   
        sum += teach[i].score[2];
    }
    printf("全校老师教学和科研平均分:%d",sum/N);
}

int main()
{
    struct teacher teach[N];
    int length=0;//结构体数组插入数据实际长度;
    writeti(teach,&length);//从键盘读入数据写入文件,并通过指针返回实际长度;
    readti(teach,length);//从文件中读出数据;
    //下面的函数自己调用;

    return 0;
}


[ 本帖最后由 liao06550107 于 2011-11-3 20:35 编辑 ]

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2011-11-03 20:27
快速回复:快快求租,帮帮看看,看看这个程序这么写,谢谢
数据加载中...
 
   



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

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