成绩记录簿
学生成绩记录簿管理系统课程设计[1]
![学生成绩记录簿管理系统课程设计[1]](https://img.taocdn.com/s3/m/04a0824cc850ad02de804102.png)
1需求分析1.1研究背景教育信息化必将涉及许多具体的技术和机器在教育中的应用,它使得一些人往往以技术论,机器论的观点来认识教育信息化的目的,认为教育信息化就是以机器代替教师讲课,代替教育写板书,就是以电子教材代替印刷教材,就是实现网上学习……,并以代替性、省力性、顺利性、效率性作为评价教育信息化的尺度。
而成绩管理系统将大大的提高老师的管理效率,使得老师可以针对学生的具体情况进行深入教育,培养跨世纪的创新人才,是实现教育的现代化。
教育信息化应以新的教育思想、教育观念指导信息技术在教育的各个部门、各个领域广泛应用,应根据创新人才培养的要求,利用信息技术,探索新的教育模式,促进教育现代化。
只有在这样的基础上指导信息技术的教育应用,才是我们所需要的教育信息化。
也就相应产生了对学生成绩的高效管理。
1.2课题研究的目的及意义现在我国各院高校的学生成绩管理水平普遍不高,有的还停留在纸质基础上,这种管理手段已不能适应时代的发展,因为它浪费了许多的人力和物力。
在当今信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替。
成绩管理系统提供了强大的管理功能,方便管理员对考试成绩等信息的添加、修改、删除、查询、分类等操作。
本系统将提高管理人员的工作效率和工作质量。
如今,计算机网络带动了全球信息化得进程。
在高校中,信息化带来的传统教学、科研模式的变化,需要新的管理机制:以信息技术为手段的校务管理,也需要新的机制,即需要一个数字化的校园(Digital Campus)。
数字校园的建设也是高校信息化的重要组成部分。
成绩管理是学校管理中的异常重要的一个环节,作为学校,除了育人,就是与育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,在于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着重要的分量。
运用成绩管理系统可以减轻学院教学人员的工作量,加快查询速度,加强管理,以及国家各部门关于信息化的步伐,是各项管理更加规范化。
Excel实现成绩自动统计功能

Excel实现成绩自动统计功能.总体设计新建空白Excel工作簿,将自动建立的Sheet1、Sheet2和 Sheet3工作表重命名为成绩分析表、TSCJ和Teacher,其中TSCJ工作表用于输入各科成绩,Teacher工作表用于输入教师信息。
(一)、定制TSCJ工作表在TSCJ工作表第一行中输入统计名称,如“XX中学2013——2014学年上期各科成绩统计”,在第二行从A1单元格开始顺序输入记录字段名:学号、姓名、考号、班级、语文、数学、外语、政治、历史、地理、生物和总分。
(二)、定制成绩统计和分析工作表对成绩统计和分析工作表的定制多而复杂,下面就以语文科统计表定制为例进行描述,其它科的统计类比操作。
1、定制语文科统计表基本框架将单位格A1:N1合并,并在单位格中输入=”TSCJ!A1”得到统计名称。
再合并单位格A2:G2,在单位格输入“=TSCJ!D1”得到统计科目,即“语文”。
参考上图,定制其它单位格。
2、求语文科各班参考人数首先在B4单元格中输入“=COUNTIF(TSCJ!$C$2: TSCJ!$C$1501,"=" & A4)”,其中COUNTIF函数用于计算给定区域内满足特定条件的单元格的数目,通过COUNTIF函数求出1班的参考人数。
然后选中B4单元格,拖动B4单元格右下角的小“十”字图标至B7单元格(这种操作本文统称为向下自动填充操作),这样,就能自动得到B5至B7单元格的公式。
最后在B8单元格中输入“=SUM(B4:B8)”,用于统计全年级参考总人数。
3、求语文科各班平均分首先在C4单元格中输入“=IF(B4=0,0,SUMIF(TSCJ!$C$2: TSCJ!$C$1501,"=" & A4, TSCJ!$E$2: TSCJ!$E$1501)/B4) ”,其中SUMIF函数功能是根据指定条件对若干单元格求和。
为了避免分母为0的错误产生,单元格中用到了IF函数。
六年级数学培优辅差记录簿表

福泉市马场坪鱼酉小学2015-2016学年第二学期培优补差辅导记录六年级数学2015年3月六年级数学培优辅差计划一、本班情况分析六年级共有学生23人,其中男生11人,女生12人。
结合上学期年级期末成绩,大部分学生能独立的学习,认真地完成作业,还有少数学生学习积极性不高,不能按时完成作业。
在平时的课堂教学中,让优秀生带动中等生,另外,教师要对待优生加强辅导,使中等生转化为优秀生,提高学生的及格率和优秀率。
二、存在问题分析差生在学习上总的特点是智力一般,学习依赖思想严重,没有独立思考勇于创新的意识,遇到较难的题便等老师的答案等。
具体表现如下:1、上课精神不集中。
2、练习、作业书写不规范,连简单的符号和数字也写不好。
3、平时不认真审题,读不懂题目的要求。
4、缴交作业不按时或作业没完成。
5、基础知识不扎实。
6、答题速度缓慢。
三、思想方面的培优补差。
1、做好学生的思想工作,经常和学生谈心,关心他们,关爱他们,让学生觉得老师是重视他们的,激发他们学习的积极性。
了解学生们的学习态度、学习习惯、学习方法等。
从而根据学生的思想心态进行相应的辅导。
2、定期与学生家长、进一步了解学生的家庭、生活、思想、课堂等各方面的情况。
四、培优补差措施。
利用课余时间,“因材施教、对症下药”,根据学生的素质采取相应的方法辅导。
具体方法如下:1、课上差生板演,中等生订正,优等生解决难题。
2、安排座位时坚持“好差同桌”结为学习对子。
即“兵教兵”。
3、课堂练习分成三个层次:第一层“必做题”—基础题,第二层:“选做题”—中等题,第三层“思考题”--拓广题。
满足不同层次学生的需要。
4、培优补差过程必须优化备课,功在课前,效在课上,成果巩固在课后培优补差。
5、每周进行简单测评,了解学生情况,建立学生学习档案。
五、在培优补差中注意几点:1、不歧视学习有困难的学生,不纵容优秀的学生,一视同仁。
2、根据优差生的实际情况制定学习方案,比如优秀生可以给他们一定难度的题目让他们进行练习,学困生则根据他们的程度给与相应的题目进行练习和讲解,已达到循序渐进的目的。
c语言程序设计课程设计选题 (1)

《C语言程序设计》课程设计课题表一、A类1.职工信息管理系统设计2.职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:3.1、职工信息录入功能(职工信息用文件保存)--输入4.2、职工信息浏览功能--输出5.3、职工信息查询功能--算法6.查询方式:按学历查询、按职工号查询、条件组合查询7.职工信息删除、修改功能(可选项)8.图书信息管理系统设计9.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
10.试设计一图书信息管理系统,使之能提供以下功能:11.1、图书信息录入功能(图书信息用文件保存)--输入12.2、图书信息浏览功能--输出13.3、图书信息查询功能--算法14.查询方式:按书名查询、按作者名查询、条件组合查询15.图书信息的删除与修改(可选项)16.图书管理系统设计17.图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等18.功能描述:19.1、新进图书基本信息的输入。
20.2、图书基本信息的查询。
21.3、对撤消图书信息的删除。
22.4、为借书人办理注册。
23.5、办理借书手续。
24.6、办理还书手续25.要求:使用文件方式存储数据。
26.实验设备管理系统设计27.实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
28.主要功能:29.1、能够完成对设备的录入和修改30.2、对设备进行分类统计31.3、设备的破损耗费和遗损处理32.4、设备的查询33.要求:使用文件方式存储数据。
34.学生信息管理系统设计35.学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:36.1、系统以菜单方式工作37.2、学生信息录入功能(学生信息用文件保存)--输入38.3、学生信息浏览功能--输出39.4、学生信息查询功能--按学号查询、按姓名查询、40.5、学生信息的删除与修改(可选项)41.要求:使用文件方式存储数据。
用EXCEL轻松处理学生成绩的方法

用EXCEL轻松处理学生成绩期末考试结束后,主任要求班主任自已统计本班成绩,尽快上报教导处。
流程包括录入各科成绩→计算总分、平均分并排定名次→统计各科分数段人数、及格率、优秀率及综合指数→打印各种统计报表→制作各科统计分析图表等。
有了EXCEL,我们可用不着躬着身、驼着背、拿着计算器一个一个算着学生的成绩了!我迅速地打开电脑,启动EXCEL2000,录入学生的考试成绩,如图1所示。
然后在J2单元格处输入公式"=sum(c2:i2)",然后拖动填充柄向下填充,便得到了每人的总分。
接着在k2单元格处输入公式"=average(c2:i2)",然后拖动填充柄向下填充,便得到了每人的平均分。
平均分只需保留一位小数,多了没用。
所以选中第k列,用鼠标右键单击,从弹出的快捷菜单中选"设置单元格格式(F)…",如图2所示,在数字标签中选中"数值",小数位数设置为1位。
下面按总分给学生排出名次。
在L2单元格处输入公式"RANK(J2,J$2:J$77,0)",然后拖动填充柄向下填充,即可得到每人在班中的名次(请参考图1)。
说明:此处排名次用到了RANK函数,它的语法为:RANK(number,ref,order)其中number为需要找到排位的数字。
Ref为包含一组数字的数组或引用。
Ref 中的非数值型参数将被忽略。
Order为一数字,指明排位的方式。
·如果order 为0 或省略,Microsoft Excel 将ref 当作按降序排列的数据清单进行排位。
·如果order 不为零,Microsoft Excel 将ref 当作按升序排列的数据清单进行排位。
最后,单击L1单元格,然后在“工具”菜单中选“排序”->“升序”,即可按照名次顺序显示各学生成绩。
另外,我们还希望把不及格的学科突出显示,最好用红色显示。
综合实践题目

1、题目:编写一个银行ATM自动取款机模拟程序。
要求:实现ATM取款机的基本功能,如给用户提供查询余额、取款、修改密码、吃卡、退出系统等服务,可根据实际情况添加(如缴费、转账等服务)。
(1)对于用户要求输入相应的帐号和密码,如果三次出错则将卡吃掉并打印出相应凭条。
(2)若输入的取款金额超出账户余额,则提示用户输入有误并提供更正功能2题目:制作一个简易评分系统,要求:(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)在评委所打的分数中,去掉一个最高分,去掉一个最低分,得出各选手的平均分,然后按平均分进行排序,得出各选手的名次。
(3)设计出菜单,使用户能够设置评委的人数并输入姓名,设置选手的人数,并能将最后的得分及名次情况能够保存到文件中记录下来。
(4)参考所给出的程序,其它未说明功能可自行添加设计。
3、题目:设计一个宿舍电话查询系统要求:(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)进入系统的用户可以浏览所有用户的电话号码及相关资料;(3)参考所给出的程序,自行设定数据库(要求至少包括:宿舍号、班级、电话号码三个字段,其它字段可选),系统菜单及其未说明功能可自行添加设计。
4题目:简单文件管理系统功能要求:能够实现命令dir、rename、del、move,完成对文件的查看、重命名、删除和移动。
5题目:银行账户信息管理系统功能要求:1、具有查询帐户余额的功能2、具有简单的存取款功能3、能够实现帐户的插入、删除和修改4、具有帐户信息的保存功能6题目:通信录的设计[设计要求]一、定义人员(person)类,其中至少包括姓名、性别、电话、地址、邮政编码、邮箱、QQ号和类别(例如:同学、朋友等)。
二、实现下面的功能1、设计菜单实现功能选择;2、输入功能:输入人员信息,并保存到文件中;3、查询功能:1)能够根据姓名、电话精确查询人员信息;2)能够根据地址进行模糊查询人员信息;3)根据人员类别查询人员信息4、根据姓名对人员信息排序输出5、能根据姓名、电话修改人员信息6、能根据姓名、电话删除人员信息7 题目:职工信息管理一、定义职工(employee )类,其中至少包括姓名、性别、工号、电话、所在科室和工资。
程序清单

程序清单 1.仓库类#include<iostream> #include<string> #include<iomanip> using namespace std; int k = 0; class warehouse { public: warehouse() {}void scanf() //输入仓库的信息 { cout <<"请输入仓库名称:"; cin >> warename;cout <<"请输入仓库的物品数:"; cin >> n; cout <<"请输入仓库中的物品名称,价格,数量:"<< endl; for (int i = 0; i<n; i++) { cin >> s[i].name; cin >> s[i].price; cin >> s[i].number;}}warehouse operator +(warehouse &w2) //重载+操作 { warehouse w3;w3.warename = warename + w2.warename; for (int i = 0; i < n; i++) { w3.s[k].name = s[i].name; w3.s[k].price = s[i].price; w3.s[k].number = s[i].number; k++;}for (int i = 0; i < w2.n; i++) { int flag = 0;for (int j = 0; j < n;j++) {if (w2.s[i].name == s[j].name)//如果物品名相同,数量合并 { flag = 1;w3.s[j].number=w2.s[i].number + w3.s[j].number; break;}}if(flag==0)//如果物品名不相同,添加到末尾 { w3.s[k].name = w2.s[i].name; w3.s[k].price = w2.s[i].price;w3.s[k].number=w2.s[i].number;k++;}} return w3;}void print() //打印合并后仓库的信息 {cout <<"合并后仓库名称:"<< warename <<endl;cout <<"合并后仓库的物品信息:"<< endl; for (int i = 0; i<k; i++) {cout << s[i].name << setw(8) <<s[i].price << setw(8) << s[i].number << endl; }}void find(int x) //输入物品序号查找合并后仓库的物品信息 { if (x>k) { cout <<"没有该编号的物品!"<< endl;}elseelsecout << s[x-1].name << setw(8) <<s[x-1].price << setw(8) << s[x-1].number << endl;}private:string warename;int n;struct thing{string name;double price;int number;}s[10];};int main(){warehouse w1;w1.scanf();warehouse w2;w2.scanf();warehouse w3;w3 = w1 + w2;cout <<"合并后仓库的情况:"<< endl;w3.print();cout <<"输入你想查询的合并后仓库物品信息的编号:";int x;cin >> x;w3.find(x);return 0;}2.交通工具#include<iostream>#include<stdio.h>using namespace std;class vehicle //抽象类{public:vehicle(){}virtual void getname() = 0; //纯虚函数,获得交通工具的名称virtual void run(int personnumber) = 0; //纯虚函数,判断是否超载private:};class car:public vehicle{public:car(){}void scanf() //输入该交通工具所载人数{cout <<"请输入本次汽车所载人数"<< endl;cin >> personnumber;}void getname() //获得该交通工具名称{cout <<"汽车"<< endl;}int getnumber(){return personnumber;}void run1(int x){if (x >= 40)throw"小汽车超载了!"; //抛出异常}void run(int personnumber){try{run1(personnumber);//捕获异常}catch (char *message){cout << message << endl; //处理异常}}private:int personnumber;};class train :public vehicle{public:train(){}void scanf(){cout <<"请输入本次火车所载人数"<< endl;cin >> personnumber;}void getname(){cout <<"火车"<< endl;}int getnumber(){return personnumber;}void run1(int x){if (x >= 2000)throw"火车超载了!";}void run(int personnumber){try{run1(personnumber);}catch (char *message){cout << message << endl;}}private:int personnumber;};class plane:public vehicle{public:plane(){}void scanf() {cout <<"请输入本次飞机所载人数"<< endl;cin >> personnumber;}void getname(){cout <<"飞机"<< endl;}int getnumber(){return personnumber;}void run1(int x){if (x >= 400)throw"飞机超载了!";}void run(int personnumber){try{run1(personnumber);}catch (char *message){cout << message << endl;}}private:int personnumber;};int main(){car c1;c1.scanf();c1.getname();c1.run(c1.getnumber());train t1;t1.scanf();t1.getname();t1.run(t1.getnumber());plane p1;p1.scanf();p1.getname();p1.run(p1.getnumber());return 0;}3.职工信息#include<iostream>#include<fstream>#include<string>#include<stdio.h>using namespace std;fstream iofile;class worker{public:void login() //登陆界面{cout <<"****************************************"<< endl;cout <<"* 录入职工信息请按1 *"<< endl;cout <<"* 浏览职工信息请按2 *"<< endl;cout <<"* 按工资查询职工信息请按3 *"<< endl;cout <<"* 按学历查询职工信息请按4 *"<< endl;cout <<"* 删除职工信息请按5 *"<< endl;cout <<"* 修改职工信息请按6 *"<< endl;cout <<"* 退出请按0 *"<< endl;cout <<"****************************************"<< endl;}void scanf() //输入信息{cout <<"请输入职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话:"<< endl;cin >> number;cin >> name;cin >> sex;cin >> age;cin >> education;cin >> salary;cin >> home;cin >> telephone;}int enter() //将输入的信息录入到文件中{iofile.open("date.txt", ios::in | ios::out | ios::app);if (!iofile){cout <<"打开文件失败"<< endl;return -1;}this->scanf();iofile << number << ' ';iofile << name << ' ';iofile << sex << ' ';iofile << age << ' ';iofile << education << ' ';iofile << salary << ' ';iofile << home << ' ';iofile << telephone << ' ';iofile.close();return 1;}friend int look(); //友元函数声明int findbysalary(string salary) //通过工资查询职工信息{iofile.open("date.txt", ios::in);if (!iofile){cout <<"打开文件失败"<< endl;return -1;}worker w[10];for (int i = 0; i < 10; i++) //将职工信息从文件中录出到对象数组中{iofile >> w[i].number;iofile >> w[i].name;iofile >> w[i].sex;iofile >> w[i].age;iofile >> w[i].education;iofile >> w[i].salary;iofile >> w[i].home;iofile >> w[i].telephone;}iofile.close();for (int i = 0; i < 10; i++){if (w[i].salary == salary){cout << w[i].number << ' ' << w[i].name << ' ' << w[i].sex << ' ' << w[i].age << ' ' << w[i].education<< ' ' << w[i].salary << ' ' << w[i].home << ' ' << w[i].telephone << endl;}}return 1;}int findbyedu(string edu) //通过学历查询职工信息{iofile.open("date.txt", ios::in);if (!iofile){cout <<"打开文件失败"<< endl;return -1;}worker w[10];for (int i = 0; i < 10; i++){iofile >> w[i].number;iofile >> w[i].name;iofile >> w[i].sex;iofile >> w[i].age;iofile >> w[i].education;iofile >> w[i].salary;iofile >> w[i].home;iofile >> w[i].telephone;}iofile.close();for (int i = 0; i < 10; i++){if (w[i].education == edu){cout << w[i].number << ' ' << w[i].name<< ' ' << w[i].sex << ' ' << w[i].age << ' ' << w[i].education<< ' ' << w[i].salary << ' ' << w[i].home<< ' ' << w[i].telephone << endl;}}return 1;}int deleter(int num) //删除一条职工信息记录{iofile.open("date.txt", ios::in);if (!iofile){cout <<"打开文件失败"<< endl;return -1;}worker w[10];for (int i = 0; i < 10; i++) //将职工信息从文件中录出到对象数组{iofile >> w[i].number;iofile >> w[i].name;iofile >> w[i].sex;iofile >> w[i].age;iofile >> w[i].education;iofile >> w[i].salary;iofile >> w[i].home;iofile >> w[i].telephone;}iofile.close();iofile.open("date.txt", ios::out); //清空文件再添加记录if (!iofile){cout <<"打开文件失败"<< endl;return -1;}for (int i = 0; i < 10; i++) //录入职工信息,跳过所删除的记录。
利用EXCEL对学生成绩进行分析与制作学生成绩条

利用EXCEL对学生成绩进行分析与制作学生成绩条每到学期结束时,教师的一项重要工作就是要统计学生的成绩,在电脑逐步普及的今天,我们就把这项繁杂的工作交给Excel去自动完成吧。
本节任务:制作一个学生成绩自动统计表,可以自动统计最高分、最低分、总分、平均分、名次、三率等数据信息,还可以根据自定条件以不同的颜色显示分数。
自动统计表做好以后还可以保存成模板,以便以后使用。
涉及术语:单元格、工作表、工作薄、引用(相对/绝对)、自动填充、排序、条件格式等。
涉及函数:AVERAGE、COUNTIF 、MAX、MIN、RANK、SUM任务一:统计最高分、最低分、总分、平均分、名次、三率等数据信息。
1、启动Excel,同时选中A1至L1单元格,按“格式”工具条上的“合并及居中”按钮,将其合并成一个单元格,然后输入统计表的标题“高一(1)班期末成绩统计表2、根据统计表的格式,将有关列标题及相关内容输入到相应的单元格中。
提示:其中学号的输入可通过“填充柄”快速完成。
3、选中K3单元格,输入公式:=SUM(C3:J3),用于计算第一位学生的总分。
!4、选中L3单元格,输入公式:=RANK(K3,$K$3:$K$12),计算出第一位学生总分成绩的名次(此处,假定共有10位学生)。
5、同时选中K3和L3单元格,将鼠标移至L3单元格右下角的成“细十字”状时(通常称这种状态为“填充柄”状态),按住左键向下拖拉至L12单元格,完成其他学生的总分及名次的统计处理工作。
6、分别选中C16、C17单元格,输入公式:=MAX(C3:C12)和=MIN(C3:C12),用于统计“语文”学科的最高分和最低分。
7、选中C18单元格,输入公式:=AVERAGE(C3:C12),用于统计“语文”学科的平均分。
注意:如果成绩表中没有输入成绩时,这一公式将显示出一个错误的值“#DIV/0!”,这个错误代码将在数据输入后消失。
8、选中C19单元格,输入公式:=SUM(C3:C12),用于统计“语文”学科的总分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++课程设计试验报告制作学生成绩簿学院:信息科学与技术班级:07级电子信息工程2班学号:2007082067姓名:刘玲丽指导老师:常耀辉C++课程设计实验报告一、设计目的用Visual C++编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。
设计报告格式:二、总体设计(程序设计组成框图、流程图)三、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)1、定义结构体类型student 、sqlis,结构体中存放各种数据。
2、声明函数原型。
Initlist函数的功能是顺序表初始化creat函数的功能是顺序表的建立insertlist函数的功能是顺序表的插入操作search函数的功能是按指定位置删除dele_elem1函数的功能是顺序表的按位置删除操作dele_elem2函数的功能是顺序表的按学号删除out_list函数的功能是顺序表的输出操作out_coun函数的功能是输出各分数段的学生信息3、调用Initlist函数,初始化顺序表。
Initlist函数的形参是sqlist类型的引用,分配空间,初始化顺序表。
4、在主函数中用while语句循环执行,在while语句中嵌套if语句,对执行何种操作进行判断,并调用其函数,执行操作。
(1)定义整型变量n(2)若n=0,退出循环,程序运行结束。
(3)若n=1,调用Initlist函数,Initlist函数的形参是sqlist类型的引用,分配空间,顺序表初始化,并用if语句判断。
(4)若n=2, 调用creat函数,顺序表的建立,并用if语句判断。
creat函数的形参是sqlist 类型的引用,定义整型变量m,表示输入多少组学生数据,用for循环,输入m组学生的数据,sl.length用于记住组数。
(5)若n=3,输入要插入学生的学号姓名,调用insertlist函数,插入数据。
insertlist函数的形参是sqlist类型的引用,结构体变量,整形变量。
用if语句判断插入位置和学生学号是否相同。
插入数据时用到的知识点是指针。
(6)若n=4,删除学生数据,1表示:我想按输入特定位置删除;2表示:我想按输入学生学号删除。
若选择1,调用dele_elem1函数,特定位置删除。
输入整型变量,用if语句判断删除的元素是否存在,删除元素时用到指针和for循环;若选择2输入学号,调用dele_elem2函数,按学号删除。
dele_elem2函数的形参是sqlist的引用sl,指向char 型数据的指针num,student类型的引用elem。
函数内部用到指针,for语句,if语句进行删除操作。
(7)若n=5, 输入数值,调用search函数,查找学生信息。
search函数的形参是sqlist类型的引用,整形变量,在函数体中直接输出数据。
(8)若n=6,调用out_list函数,输出学生信息。
函数体中用if语句判断,如在未建立顺序表调用此函数,则输出:现在还没有任何信息或信息被删除!您可以先建立顺序表!;如已经建立了顺序表,则调用for语句输出信息。
(9)若n=7,调用out_count函数,分断输出学生信息。
用for语句和if语句嵌套调用,分段输出。
4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施四、源程序#define LIST_INIT_SIZE 10 //确定分配空间大小#include <string.h>#include <malloc.h>#include <iostream.h>#include <conio.h>#include <stdlib.h>typedef struct student //学生信息结构体类型{char No[9];char name[7];float score;}student; //用typedef声明类型,student是一个新类名typedef struct sqlist //定义顺序类型sqlist{student *stu;int length;int listsize;}sqlist; //用typedef声明类型,sqlist是一个新类名//下面是函数的原型声明int Initlist(sqlist &sl); //顺序表初始化int creat(sqlist &sl);//顺序表的建立int insertlist(sqlist &sl,student elem,int pos);//顺序表的插入操作int search(sqlist sl,int pos);//查找信息int dele_elem1(sqlist &sl,int pos,student &elem);//顺序表的按位置删除操作int dele_elem2(sqlist &sl,char *num,student &elem);//顺序表的按学号删除int out_list(sqlist sl);//顺序表的输出操作int out_count(sqlist &s1);//输出各分数段的学生信息void main() //主函数{cout<<"\n\n欢迎使用学生信息查询系统,请按提示使用!\n\n\n";sqlist sl;Initlist(sl); //调用Initlist函数,初始化顺序表student s;char number[9];int pos;while(1) //用while语句构成循环,多次执行操作{cout<<" \n ~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~\n"; cout<<endl<<endl;cout<<" `````````````````````````````````````````````\n";cout<<" ` 1、清空顺序表`\n";cout<<" ` 2、创建顺序表`\n";cout<<" ` 3、插入信息`\n";cout<<" ` 4、删除信息`\n";cout<<" ` 5、查找信息`\n";cout<<" ` 6、显示当前信息`\n";cout<<" ` 7、显示各分数段的学生信息`\n";cout<<" ` 0、退出系统`\n";cout<<" `````````````````````````````````````````````\n";cout<<"\n请从序号0--7中选择:";int n;char c;cin>>n;if(n==0)//退出{cout<<"\n谢谢您的使用,再见!\n";break;}else if(n==1)//清空{cout<<"此操作将清空顺序表,您是否继续?(n退出,其他任意键继续)\n"; cin>>c;if(c==n)break;else{ Initlist(sl);cout<<"顺序表已清空!您可以继续其他操作!\n\n";} //清空顺序表}else if(n==2)//创建{cout<<"\n此操作将创建顺序表,您是否继续?(n退出,其他任意键继续)\n"; cin>>c;if(c==n)break;else creat(sl); //调用creat函数,创建顺序表}else if(n==3)//插入{cout<<"输入插入学生信息:\n";cout<<"学生学号:";cin>>s.No;cout<<"学生姓名:";cin>>;cout<<"学生成绩:";cin>>s.score;insertlist(sl,s,pos); //调用insertlist函数,插入顺序表else if(n==4)//删除{int m;cout<<"1、我想按输入特定位置删除\n";cout<<"2、我想按输入学生学号删除\n";cout<<"请您选择:";cin>>m;cout<<endl;if(m==1) //特定位置删除{dele_elem1(sl,pos,s); //调用dele_elem1函数,特定位置删除}else if(m==2){cout<<"输入您要删除的学生学号:";cin>>number;dele_elem2(sl,number,s); //调用dele_elem2函数,特定位置删除cout<<endl;}}else if(n==5) //查找{int num;cout<<"请输入您要查找的学生位置:";cin>>num;search(sl,num); //调用search函数,查找学生信息}else if(n==6)//显示out_list(sl);else if(n==7)out_count(sl);else if(n!=0||n!=1||n!=2||n!=3||n!=4||n!=5||n!=6||n!=7)cout<<"您的输入有误,请重新输入!\n";}//while}/////函数定义////////////////////////////int Initlist(sqlist &sl) //顺序表初始化{sl.stu =(student *)malloc(LIST_INIT_SIZE*sizeof(student));if(!sl.stu){return 0;cout<<"分配失败!\n";}sl.length=0;sl.listsize=LIST_INIT_SIZE;return 1;}int creat(sqlist &sl) //顺序表的建立{cout<<"下面创建学生信息查询系统,请按提示输入数据:\n"; sl.length=0;int m; //用于记数cout<<"您一共要输入多少组学生数据?\n";cin>>m;cout<<"组\n";for(int i=1;i<=m;i++) //用for循环,输入m组学生的数据{cout<<"请输入第"<<i<<"个同学的学号:";cin>>sl.stu[i-1].No;cout<<endl;cout<<"请输入第"<<i<<"个同学的姓名:";cin>>sl.stu[i-1].name ;cout<<endl;cout<<"请输入第"<<i<<"个同学的成绩:";cin>>sl.stu[i-1].score ;cout<<endl;sl.length++; //用于记数}cout<<"\n本次操作您一共输入了"<<m<<"组数据\n";return 1;}int insertlist(sqlist &sl,student elem,int pos) //顺序表的插入操作{cout<<"请输入您要插入信息的位置:\n";cin>>pos;if(pos<1||pos>sl.length+1)cout<<"您要插入的位置不存在,请检查!\n";return 0;}student *p;for(p=sl.stu;p<sl.stu+sl.length;p++)if(strcmp(p->No,elem.No )==0) //判断是否是同一学号{cout<<"输入的学号已存在!\n";cout<<"该学号在系统中代表的信息为:\n";cout<<"学号:"<<p->No<<endl;cout<<"姓名:"<<p->name<<endl;cout<<"成绩:"<<p->score<<endl;return 0;}student *q; //插入q=&(sl.stu[pos-1]);for(p=&(sl.stu[sl.length-1]);p>=q;--p)*(p+1)=*p;*q=elem;++sl.length;cout<<"\n插入已成功,要检查请看输出!\n";return 1;}int search(sqlist sl,int pos) //查找信息{cout<<"查找中...\n";if(pos<1||pos>sl.length){cout<<"对不起,您要查找的学生不存在,请检查!\n";return 0;}cout<<"以下是您要找的学生信息:\n\n";cout<<"学生姓名:"<<sl.stu[pos-1].name<<endl;cout<<"学生学号:"<<sl.stu[pos-1].No <<endl;cout<<"学生成绩:"<<sl.stu[pos-1].score<<endl<<endl;return 1;}int dele_elem1(sqlist &sl,int pos,student &elem) //顺序表的按位置删除操作{cout<<"请输入您要删除元素的位置:";cin>>pos;if(pos<1||pos>sl.length){cout<<"您要删除的元素不存在,请检查!\n";return 0;}struct student *p,*q; //删除p=&(sl.stu[pos-1]);elem=*p;q=sl.stu+sl.length-1;for(++p;p<=q;++p)*(p-1)=*p;--sl.length;cout<<"已删除,请检查输出!\n\n";return 1;}int dele_elem2(sqlist &sl,char *num,student &elem) //顺序表的按学号删除操作{student *q,*p;p=sl.stu;q=sl.stu+sl.length-1;int flag=0;for(p;p<=q;p++){if(strcmp(num,p->No)==0){elem=*p;flag=1;}if(flag)break;}if(flag){for(++p;p<=q;++p)*(p-1)=*p;--sl.length;cout<<"已删除!检查输出看是否符合您的要求!\n\n";return 1;}else{cout<<"不存在该学号代表的学生信息!\n";return 0;}}int out_list(sqlist sl) //顺序表的输出操作{if(sl.length==0){cout<<"\n\n~现在还没有任何信息或信息被输出!您可以先建立顺序表!~\n\n";return 0;}else{cout<<"\n这是您要求的信息显示:\n";struct student *q;q=sl.stu;int count=0;for(q;q<sl.stu+sl.length;q++){count++;cout<<endl;cout<<"第"<<count<<"条:"<<endl;cout<<"学号:"<<q->No<<endl;cout<<"姓名:"<<q->name<<endl;cout<<"成绩:"<<q->score<<endl;cout<<"||||||||||||||||||||||||\n";}cout<<"~~~共有信息"<<sl.length<<"条~~~\n\n";}//elsereturn 1;}int out_count(sqlist &sl) //输出各分数段的学生信息{//cout<<"输出各分数段的学生信息"<<endl;for(int i=1;i<sl.length+1;i++)if(sl.stu[i-1].score <60.0) cout<<"60分以下学生信息"<<sl.stu[i-1].No<<sl.stu[i-1].name<<endl; else if(sl.stu[i-1].score >=60.0&&sl.stu[i-1].score <79.0) cout<<"60~79学生学号、姓名"<<sl.stu[i-1].No<<" "<<sl.stu[i-1].name<<endl;else if(sl.stu[i-1].score >=80.0&&sl.stu[i-1].score <89.0) cout<<"80~89学生学号、姓名"<<sl.stu[i-1].No<<" "<<sl.stu[i-1].name<<endl;else if(sl.stu[i-1].score >=90.0&&sl.stu[i-1].score <100.0) cout<<"90分以上学生学号、姓名"<<sl.stu[i-1].No<<" "<<sl.stu[i-1].name<<endl;return 0;}五、运行结果(1)第一次运行欢迎使用学生信息查询系统,请按提示使用!~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:2 //创建顺序表此操作将创建顺序表,您是否继续?(n退出,其他任意键继续) g下面创建学生信息查询系统,请按提示输入数据:您一共要输入多少组学生数据?3组请输入第1个同学的学号:001请输入第1个同学的姓名:fgj请输入第1个同学的成绩:65请输入第2个同学的学号:002请输入第2个同学的姓名:wert请输入第2个同学的成绩:94请输入第3个同学的学号:003请输入第3个同学的姓名:uiu请输入第3个同学的成绩:84本次操作您一共输入了3组数据~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:6 //显示当前信息这是您要求的信息显示:第1条:学号:001姓名:fgj成绩:65||||||||||||||||||||||||第2条:学号:002姓名:wert成绩:94||||||||||||||||||||||||第3条:学号:003姓名:uiu成绩:84||||||||||||||||||||||||~~~共有信息3条~~~~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:1 //清空顺序表此操作将清空顺序表,您是否继续?(n退出,其他任意键继续) j顺序表已清空!您可以继续其他操作!~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:6~现在还没有任何信息或信息被删除!您可以先建立顺序表!~~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:3 //插入信息输入插入学生信息:学生学号:004学生姓名:juu学生成绩:84请输入您要插入信息的位置:1插入已成功,要检查请看输出!~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:6这是您要求的信息显示:第1条:学号:004姓名:juu成绩:84||||||||||||||||||||||||~~~共有信息1条~~~~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:4 //删除信息1、我想按输入特定位置删除2、我想按输入学生学号删除请您选择:1 //特定位置删除请输入您要删除元素的位置:1已删除,请检查输出!~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:6~现在还没有任何信息或信息被删除!您可以先建立顺序表!~ ~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:0谢谢您的使用,再见!Press any key to continue(2)第二次运行欢迎使用学生信息查询系统,请按提示使用!~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:2 //创建顺序表此操作将创建顺序表,您是否继续?(n退出,其他任意键继续) g下面创建学生信息查询系统,请按提示输入数据:您一共要输入多少组学生数据?3请输入第1个同学的学号:001请输入第1个同学的姓名:fgj请输入第1个同学的成绩:65请输入第2个同学的学号:002请输入第2个同学的姓名:wert请输入第2个同学的成绩:94请输入第3个同学的学号:003请输入第3个同学的姓名:uiu请输入第3个同学的成绩:84本次操作您一共输入了3组数据~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:6 //显示当前信息这是您要求的信息显示:第1条:学号:001姓名:fgj成绩:65||||||||||||||||||||||||第2条:学号:002姓名:wert成绩:94||||||||||||||||||||||||第3条:学号:003姓名:uiu成绩:84||||||||||||||||||||||||~~~共有信息3条~~~~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~`````````````````````````````````````````````` 1、清空顺序表`` 2、创建顺序表`` 3、插入信息`` 4、删除信息`` 5、查找信息`` 6、显示当前信息`` 7、显示各分数段的学生信息`` 0、退出系统``````````````````````````````````````````````请从序号0--7中选择:。