首页 > 其他分享 >假期第一周进度报告

假期第一周进度报告

时间:2023-06-25 23:25:16浏览次数:45  
标签:cout stc 假期 void 第一周 grade int CourseName 进度

     本周代码时间20多个小时,主要用于完成小学期的数据结构作业的第一阶段与第二阶段。

6月19日:试实现迪杰斯特拉最短路径算法。后可使用迪杰斯特拉算法进行最短路径的实现,对于每一点的初始化了解较深,但是对于v0到每一个顶点的最短路径的循环迭代,已经更新确实难以弄清。最后从网上进行代码查找,书上进行选择理解,书上有现成源代码以及注释,进行手动推算。

6月20日:将给定的一系列数字插入初始为空的AVL树,请你输出最后生成的AVL树的根结点的值。对于给定一系列数字,插入初始为空的AVL树,可以输出最后生成的AVL树的根结点的值。对于平衡化的四种方式,LL,RR,LR,RL的函数不知道怎么何时应用,以及实现的平衡化的方法。最后在网上搜索左旋转,右旋转,左右旋转,右左旋转的实现图,实现平衡的方法,以及RL,LR,LL,RR的应用场景。

6月21日:按词频从小到大的顺序给出各个字符(不超过30个)的词频,根据词频构造哈夫曼树,给出每个字符的哈夫曼编码,并对给出的语句进行译码。可实现可以按树的先序顺序输出所有字符的编码,最后一行给出需译码的原文,但遇到对于输入的存在问题,一直不能很好实现字符与double类型的分别提取,对于哈夫曼树的结构体的定义存在一些问题,对于先序输出无法很好衔接,最后通过从网上进行代码查找,用scanf(“%c%lf”,&a,&b);解决第一个问题,必须要getchar(),消除会车影响,第二个结构体中加入了一个char ch,字段,方便填写,以及先序输出进行输出,加入这个字段后进行先序输出可以直接输出,为NULL则不输出来解决。

6月22日:实现输入首先给出两个正整数N(≤106)和M(≤10)在一行内按非递增顺序输出资产排前M位的大富翁的个人资产值。数字间以空格分隔,但结尾不得有多余空格。题较为简单,对于vector容易的一些函数不清楚不能很好书写代码查找了关于vector的相关函数功能进行学习。

6月23日:将团队程序进行整合,完成第一阶段实验报报

6月24日:实现了学生课程成绩的录入管理。实现学生课程信息的管理;实现基于成绩的各类查询、汇总、排序;实现各类统计信息的输出到文件;实现基于成绩的、排序;利用函数将文件提取信息到结构体中,每一次对结构操作完后,对文件进行整体替换,来达到实时更新

6月25日:进行验收,补充各类成绩的排行,成绩修改的功能。

    第二阶段代码源码:

#include<iostream>
#include<fstream>
#include<set>
#include<map>
using namespace std;
struct Course
{
    string CourseName;
    string CourseCredit;
}course[100];
struct STC
{
    string StudentName;
    string CourseName;
    int grade;
}stc[1000];
int Coursecount;
int Studentcount;
void menu();
void manage_course();
void grade_In();
void grade_search();
void grade_Analyse();
void grade_Sort();
void write_Course(Course course[],int n);
int read_Course(Course course[]);
int read_STC(STC stc[]);
void write_STC(STC stc[],int n);
void updataSTC(string CourseName);
void  subject_sort(string CourseName);
void update_infor();
int main()
{
    menu();
    return 0;
}
void update_infor()
{
    cout<<"--------------成绩修改--------------"<<endl;
    cout<<"请输入学生姓名"<<endl;
    string StudentName;
    cin >> StudentName;
    for(int i = 0;i < Coursecount ;i++)
       {
           if(stc[i].StudentName == StudentName)
           {
            cout<<"修改"<<stc[i].CourseName<<"成绩"<<endl;
            int grade;
            cin >> grade;
            stc[i].grade = grade;
           }
       }
       write_STC(stc,Studentcount);
    menu();
}
void updataSTC(string CourseName)
{
    Studentcount = read_STC(stc);
    for(int i = 0;i<Studentcount;i++)
    {
        if(stc[i].CourseName == CourseName)
        {
            for(int j = i;j <= Studentcount-1;j++)
            {
                stc[j].StudentName= stc[j+1].StudentName;
                stc[j].CourseName= stc[j+1].CourseName;
                stc[j].grade= stc[j+1].grade;
            }
            Studentcount--;
        }
    }
    write_STC(stc,Studentcount);
}
void write_Course(Course course[],int n)
{
    fstream myFile;
	myFile.open("course.txt", ios::out | ios::binary);
	if (!myFile) {
		cout << "course.txt can't open!" << endl;
		abort();
	}
	int count = n;
	myFile << count << endl<<endl;
	for (int i = 0; i < count; i++) {
		myFile << course[i].CourseName << "\t"
			   << course[i].CourseCredit << endl;
	}
	myFile.close();
}
int read_Course(Course course[])
{
	fstream myFile;
	myFile.open("course.txt", ios::in | ios::binary);
	if (!myFile) {
		cout << "course.txt can't open!" << endl;
		abort();
	}
	int count;
	myFile.seekg(0);
	myFile >> count;
	for (int i = 0; i <= count; i++) {
		myFile >>  course[i].CourseName >> course[i].CourseCredit;
	}
	myFile.close();
	return count;
}
void write_STC(STC stc[],int n)
{
    fstream myFile;
	myFile.open("stc.txt", ios::out | ios::binary);
	if (!myFile) {
		cout << "stc.txt can't open!" << endl;
		abort();
	}
	int count = n;
	myFile << count << endl<<endl;
	for (int i = 0; i < count; i++) {
		myFile << stc[i].StudentName << "\t"
		       << stc[i].CourseName << "\t"
			   << stc[i].grade<< endl;
	}
	myFile.close();
}
int read_STC(STC stc[])
{
    fstream myFile;
	myFile.open("stc.txt", ios::in | ios::binary);
	if (!myFile) {
		cout << "stc.txt can't open!" << endl;
		abort();
	}
	int count;
	myFile.seekg(0);
	myFile >> count;
	for (int i = 0; i <= count; i++) {
		myFile >>  stc[i].StudentName >> stc[i].CourseName >> stc[i].grade;
	}
	myFile.close();
	return count;
}
void  subject_sort(string CourseName)
{
    cout<<endl;
    cout<<CourseName<<"的排名:"<<endl;
    map<double,string> maps;
    for(int i = 0;i<Studentcount;i++)
    {
        if(stc[i].CourseName == CourseName)
        {
            maps[stc[i].grade] = stc[i].StudentName;
        }
    }
    for(map<double,string>::reverse_iterator it=maps.rbegin();it!=maps.rend();it++)
    {
      cout<<it->second<<"\t\t";
      cout<<it ->first<<endl;
    }
   menu();
}
void manage_course()
{
    cout<<"--------------管理课程信息-------------"<<endl;
    cout<<"           1 查看课程信息"<<endl;
    cout<<"           2 添加课程信息"<<endl;
    cout<<"           3 删除课程信息"<<endl;
    cout<<"           4 修改课程信息"<<endl;
    cout<<"           5 退出"<<endl;
    cout<<"---------------------------------------"<<endl;
    int choose;
    cin >> choose;
    switch(choose)
    {
        case 1:
            {   cout<<"--------------查看课程信息-------------"<<endl;
                cout<<"课程名"<<"\t\t"<<"课程学分"<<endl;
                Coursecount = read_Course(course);
                for(int i = 0;i < Coursecount;i++)
                {
                    if(course[i].CourseName.length()<8)
                    {
                        cout<<course[i].CourseName<<"\t"<<"\t"<<course[i].CourseCredit<<endl;
                    }
                    else
                    {
                        cout<<course[i].CourseName<<"\t"<<course[i].CourseCredit<<endl;
                    }
                }

                manage_course();
            }
        case 2:
            {
                cout<<"--------------添加课程信息-------------"<<endl;
                int flag = 1;
                while(flag)
                {
                    cout<<"请输入课程名"<<endl;
                    string CourseName;
                    cin >> CourseName;
                    cout<<"请输入课程学分"<<endl;
                    string CourseCredit;
                    cin >> CourseCredit;
                    course[Coursecount].CourseName = CourseName;
                    course[Coursecount++].CourseCredit = CourseCredit;
                    cout<<"是否继续输入(y/n)"<<endl;
                    string c;
                    cin >> c;
                    if(c=="y")
                    {
                        flag = 1;
                    }else if(c=="n"){
                        flag = 0;
                    }else{
                    cout<<"选项不存在,退出"<<endl;
                    flag = 0;
                    }
                }
                write_Course(course,Coursecount);
                manage_course();
            }
        case 3:
            {

                cout<<"--------------删除课程信息-------------"<<endl;
                cout<<"请输入删除的课程的名称"<<endl;
                string CourseName;
                cin>>CourseName;
                for(int i = 0;i < Coursecount;i++)
                {
                    if(course[i].CourseName==CourseName)
                    {
                        if(i == Coursecount-1)
                        {
                            Coursecount--;
                            cout<<"删除"<<CourseName<<"成功"<<endl;
                            break;
                        }
                        for(int j = i;j < Coursecount-1;j++)
                        {
                            course[j].CourseName=course[j+1].CourseName;
                            course[j].CourseCredit=course[j+1].CourseCredit;
                        }
                        Coursecount--;
                        cout<<"删除"<<CourseName<<"成功"<<endl;
                        break;
                    }
                }
                write_Course(course,Coursecount);
                updataSTC(CourseName);
                manage_course();
            }
        case 4:
            {
                 cout<<"--------------修改课程信息-------------"<<endl;
                 cout<<"请输入修改的课程的名称"<<endl;
                 string CourseName;
                 cin>>CourseName;
                 cout<<"请输入修改的课程的学分"<<endl;
                 string CourseCredit;
                 cin >> CourseCredit;
                 for(int i = 0;i < Coursecount ;i++)
                 {
                    if(course[i].CourseName==CourseName)
                    {
                        course[i].CourseCredit=CourseCredit;
                        cout<<"修改"<<CourseName<<"成功"<<endl;
                        break;
                    }
                 }
                write_Course(course,Coursecount);
                 manage_course();

            }
        case 5:
            {
                menu();
                return ;
            }
            default: break;
    }
}
void menu()
{   Coursecount = read_Course(course);
    cout<<"------------学生成绩管理系统-----------"<<endl;
    cout<<"           1 管理课程信息"<<endl;
    cout<<"           2 学生课程成绩录入"<<endl;
    cout<<"           3 成绩查询"<<endl;
    cout<<"           4 成绩汇总"<<endl;
    cout<<"           5 成绩排序"<<endl;
    cout<<"           6 课程排序"<<endl;
    cout<<"           7 学生课程成绩修改"<<endl;
    cout<<"           8 退出"<<endl;
    cout<<"---------------------------------------"<<endl;
    int choose;
    cin >> choose;
    switch(choose)
    {
        case 1:
            {
                manage_course();
                break;
            }
        case 2:
            {

                grade_In();
                break;
            }
        case 3:
            { Studentcount = read_STC(stc);
                 grade_search();
                break;
            }
        case 4:
            { Studentcount = read_STC(stc);
                 grade_Analyse();
                break;
            }
        case 5:
            {
               Studentcount = read_STC(stc);
                grade_Sort();
                break;
            }
        case 6:
            {
            Studentcount = read_STC(stc);
            cout<<"--------------课程排序--------------"<<endl;
            cout<<"请输入查看的课程名称"<<endl;
            string CourseName;
            cin >> CourseName;
            subject_sort(CourseName);
            break;
            }
        case 7:
            {
            Studentcount = read_STC(stc);
            update_infor();
            break;
            }
        case 8:
            {
                 cout<<"欢迎下次使用"<<endl;
                 exit(0);
                 break;
            }
            default: break;
    }
}
/*
set 统计人名
map 进行汇总排序

*/
void  grade_Sort()
{
    cout<<"--------------成绩排序--------------"<<endl;
    set<string> s;
    map<double,string> maps;
     for(int i = 0;i<Studentcount;i++)
        {
           s.insert(stc[i].StudentName);
        }
    set<string>::iterator it;
    for(it=s.begin();it!=s.end();it++)
    {
         double temp = 0;
         for(int i = 0;i<Studentcount;i++)
         {
             if(*it == stc[i].StudentName)
             {
                 temp += stc[i].grade;
             }
         }
         maps[temp] = *it;
    }
        cout<<"成绩单\t\t";
    for(int i = 0;i < Coursecount;i++)
        {
            if(course[i].CourseName.length()<8)
            {
                        cout<<course[i].CourseName<<"\t"<<"\t";
            }
            else
            {
                        cout<<course[i].CourseName<<"\t";
            }
        }
            cout<<"平均分"<<endl;
    for(map<double,string>::reverse_iterator it=maps.rbegin();it!=maps.rend();it++)
    {
      cout<<it->second<<"\t\t";
       for(int i = 0;i<Studentcount;i++)
         {
             if(it->second == stc[i].StudentName)
             {
                 cout<<stc[i].grade<<"\t\t";

             }
         }
       cout<<(it->first)/Coursecount<<endl;
    }
   menu();
}
/*
set 统计人名
遍历统计
*/
void grade_Analyse()
{
    cout<<"--------------成绩汇总--------------"<<endl;
    cout<<endl;
    cout<<"--------学生成绩单---------"<<endl;
    set<string> s;
     for(int i = 0;i<Studentcount;i++)
        {
           s.insert(stc[i].StudentName);
        }
    set<string>::iterator it; //定义前向迭代器
    //中序遍历集合中的所有元素
    cout<<endl;
    cout<<"成绩单\t\t";
    for(int i = 0;i < Coursecount;i++)
        {
            if(course[i].CourseName.length()<8)
            {
                        cout<<course[i].CourseName<<"\t"<<"\t";
            }
            else
            {
                        cout<<course[i].CourseName<<"\t";
            }
        }
            cout<<"平均分"<<endl;
    for(it=s.begin();it!=s.end();it++)
    {    cout<<*it<<"\t\t";
         double temp = 0;
         for(int i = 0;i<Studentcount;i++)
         {
             if(*it == stc[i].StudentName)
             {
                 cout<<stc[i].grade<<"\t\t";
                 temp += stc[i].grade;
             }
         }
         cout<<temp/Coursecount<<endl;
    }

    menu();
}

void grade_search()
{
        cout<<"--------------成绩查询--------------"<<endl;
        cout<<"请输入学生姓名"<<endl;
        string StudentName;
        cin >> StudentName;
        int flag = 0;
        for(int i = 0;i<Studentcount;i++)
        {
            if(stc[i].StudentName == StudentName)
             {
                 flag = 1;
                 break;
             }

        }
        if(flag)
        {
            cout<<StudentName<<"的成绩单"<<endl;
        }else
        {
            cout<<"无该学生信息"<<endl;
            menu();
        }

        for(int i = 0;i<Studentcount;i++)
        {
            if(stc[i].StudentName == StudentName)
             {
                if(course[i%Coursecount].CourseName.length()<8)
                {
                    cout<<course[i%Coursecount].CourseName<<"\t"<<"\t"<<stc[i].grade<<endl;
                }
                else
                {
                    cout<<course[i%Coursecount].CourseName<<"\t"<<stc[i].grade<<endl;
                }
             }
        }

        menu();
}

 void grade_In()
 {
        cout<<"--------------学生课程成绩录入--------------"<<endl;
                int flag = 1;
                while(flag)
                {
                    cout<<"请输入学生姓名"<<endl;
                    string StudentName;
                    cin >> StudentName;
                    for(int i = 0;i<Coursecount;i++)
                    {   stc[Studentcount].StudentName = StudentName;
                        cout<<"请输入"<<course[i].CourseName<<"的成绩"<<endl;
                        stc[Studentcount].CourseName = course[i].CourseName;

                        int grade;
                        cin >> grade;
                        stc[Studentcount++].grade = grade;

                    }
                    cout<<"是否继续输入(y/n)"<<endl;
                    string c;
                    cin >> c;
                    if(c=="y")
                    {
                        flag = 1;
                    }else if(c=="n"){
                        flag = 0;
                    }else{
                    cout<<"选项不存在,退出"<<endl;
                    flag = 0;
                    }
                }
                /*
                cout<<"记录:"<<Studentcount<<endl;
                for(int i = 0;i<Studentcount;i++)
                    {
                      cout<<stc[i].StudentName<<"    "<<stc[i].CourseName<<"   "<<stc[i].grade<<endl;

                    }
                */
                write_STC(stc,Studentcount);
                menu();

 }

  

标签:cout,stc,假期,void,第一周,grade,int,CourseName,进度
From: https://www.cnblogs.com/JIANGzihao0222/p/17504233.html

相关文章

  • 第一周
    importtkinterastkfromtkinterimportfiledialogclassMyTextEditor:def__init__(self,master):self.master=masterself.master.title("我的文本编辑器")self.master.geometry('900x700')self.creat_menu()......
  • 大二暑假第一周总结
    这一周是数据结构的小学期,学了最小生成树的Prim算法,矩阵运算,链式基数排序等算法。第二阶段设计了渡船管理模拟系统,是用Python语言写的。Python语言强大且方便,有很多库和函数的功能都是意想不到的好用。课程设计工作日报表时间:2023年  6月16日序号工作分类工作......
  • 假期周进度报告1(6.18-6.24)
    6.18我已经分配了算法与数据结构的一阶段小组,和德民,垚基,旭彤我们分工明确,1. 7-2关键路径 2.7-5哈夫曼编码译码3.7-10寻找大富翁4. 7-11二路归并排序我分到了这四个题目在今天完成了关键路径的问题6.19今天尽力完成最终关键路径的问题,开始了哈夫曼编码译码的题目。创......
  • 暑期第一周总结
    这周完成了对Linux系统的学习,安装了vm虚拟机,配置了4个centos虚拟机,完成了虚拟机之间的免密登录等到一系列的操作,虚拟机配置了java环境,hadoop环境,创建了三台服务器,并且针对虚拟机和服务器都实现了ssh连接,对ssh连接的服务器进行了很多一系列的配置,创建了hadoophdfs集群总之,很麻烦,......
  • 第一周周记
    周一下午的高铁回家结果没有赶上,只能买了晚上九点的火车无座票,花60在餐车呆了一晚上,周二中午十一点到家,睡了一天。周三在网上购买了Java教程准备完成Java自学任务,周四周五都呆在家里面,周六书到了准备开始自学java......
  • 大二暑假第一周总结
    这周就开始了小学期,这周的小学期的是算法与数据结构综合训练,总共是分为两个阶段,第一阶段是基础算法训练,第二阶段是综合算法训练。第一阶段是基础算法演示,验收的时候非常顺利,同时参与了评优,成功评上。第二阶段我选的是导师双选系统,并且也在周五就已经完成,然后后面就是测试自己的......
  • 第一周
    周一:理发,中午开会,下午在哔哩哔哩上找了一个网课,跟着网课下载了JDK,但是设置的时候一直没找到jre文件,明天打算找到jre文件再设置一下。周二:去驾校报名,去地里摘李子,在抖音上找jre文件没有的解决视频,视频里的生成jre文件的命令报错,最后发现bin文件里的内容和视频里不一样,在别的文件......
  • 假期周进度报告1(6.18-6.24)
    本周(6.18-6.24)主要完成小学期的相关任务。下周准备继续进行小学期的任务。周日,进行算法与数据结构综合训练,基础算法设计,普里姆最小生成树算法,完成了普里姆最小生成树算法,遇到了节点未更新,导致输出结果都是第一个,解决方法是通过网络查询相关资料。周一,进行算法与数据结构综......
  • 假期周进度报告1(6.18-6.24)
    本周(6.18-6.24)主要完成小学期的相关任务。下周准备继续进行小学期的任务。周日,进行算法与数据结构综合训练,基础算法设计,先序和中序构造二叉树,老板的作息表,完成了先序和中序构造二叉树题目完成,老板的作息表题目完成,遇到了二叉树的先序和中序算法记忆模糊的问题,解决方法是通过百度......
  • 第一周
    6.19日: 一、打扫房间,收拾厨房,回家先营造良好的学习环境。二、配置好了idea的编译环境,并将其激活,并了解一下内容 JDK、JRE、JVM的关系:JDK:JavaDevelopmentKit,Java开发工具包JRE:JavaRuntimeEnvironment,Java运行环境JVM:JavaVirtualMachine,Java虚拟机JDK包含JRE,JRE包含J......