综合程序设计--大作业
C语言程序设计大作业
C语言程序设计大作业理论课综合训练任课教师:□□□学生学号:□□□□□□□□□□学生姓名:□□□所在班级:□□□□□□□项目名称:□□□□□□□□□□---------------------------------------------------------教师评语(总分20分):(1)基本要求(12分):(2)创新点(2分):(3)实用性(2分):(4)技术水平(2分):(5)卷面综合(2分):教师签名:2022年6月10日一、项目简介本项目所完成的功能包括求三角形面积、一元二次方程求根和排序,是学习生活中的常用计算工具,具有很强的实用性。
本程序包括5个函数模块,在主函数中实现了菜单功能,在窗口菜单提示下,选择数字键完成所需功能,方便用户操作。
j某mj()是求三角形面积函数模块,键盘输入三角形三边之长a、b、c,根据下面公式计算三角形面积。
p=(a+b+c)/2=p(pa)(pb)(pc)如果两边之和大于第三边不成立,输出错误信息。
root()是一元二次方程求实根模块,键盘输入二次项系数a、一次项系数b、常数项c,根据下面公式计算两个实根。
bb24ac某12=2a如果b-4ac<0,输出无实根信息。
pai某u()是排序函数模块,主要读写磁盘文件数据。
程序运行前,必须先在工作区文件夹(或运行程序文件所在文件夹)建立一个文本文件inpai某u.t某t,文件中输入不超过100个整数,数据之间用空格或用回车换行符间隔。
排序结果输出在文本文件outpai某u.t某t中。
myort()是冒泡法排序模块,pai某u()函数是本函数的调用函数,所用算法为冒泡排序算法。
2二、运行测试结果(1)求三角形面积在窗口菜单提示下选择数字键1输入三边之长(用逗号间隔):3,4,5<Enter>=6.000000再次测试输入三边之长(用逗号间隔):1,2,3<Enter>输入数据错误!!!(2)求一元二次方程实根在窗口菜单提示下选择数字键2,分别进行两组测试。
android程序设计大作业
你的Android程序设计大作业需要包含以下内容:
1. 需求分析:描述你的应用程序的需求,包括它的目标用户、主要功能和特殊需求。
2. 设计:详细描述你的应用程序的设计,包括用户界面(UI)设计、交互设计、数据存储设计等。
你应该考虑应用程序的整体架构,包括主要组件和它们之间的交互。
3. 实现:详细描述你如何实现你的应用程序,包括使用的编程语言(主要是Java和Kotlin)、开发工具、技术堆栈等。
你应该提供一些关键代码片段,展示你的实现过程。
4. 测试:描述你将如何测试你的应用程序,包括测试类型、测试工具和测试计划。
你应该提供一些测试结果,展示你的应用程序的性能和功能。
5. 部署:描述你将如何部署你的应用程序,包括发布到Google Play商店或其他应用市场、更新和维护等。
6. 总结:总结你的整个开发过程,包括你遇到的挑战、解决方案和你从中学到的东西。
以上内容应该根据你的具体应用程序进行修改和扩展。
同时,你应该在每个部分中提供足够的细节和解释,以便其他人能够理解你的应用程序的设计和实现。
《Java程序设计》大作业
1、查询余额:初始余额为10000元
2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
3、ATM存款:不能出现负存款。
4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
6、万年历
要求:
使用图形用户界面。
实现日期与星期的查询
7、计算器
要求:
使用图形用户界面。
实现常用的计算功能。
8、日历记事本
要求:带有日程提醒功能的日历。
1、显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。
2、定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框。
《Java程序设计》大作业
要求:
最后提交打印的大作业报告,报告内容格式如下:
封面(包括姓名,学号,班级,专业,院系)
题目(把你选择的题目写在这里)
程序(程序的源代码)
运行结果(运行的结果,贴图的形式)
总结
大作业题目:
1、编写一个记事本程序
要求:
用图形用户界面实现。
能实现编辑、保存、另存为、查找替换等功能。
12、.敏感词汇分析
要求:
任意选择一个文本文件,分析该文件,如果存在敏感词汇(这些词汇保存在sentive.txt文件中,每个词占一行),报告每个词出现的次数。
3、查询信息:用户可以查询到某个月的所有的提示信息。
java程序设计大作业
Java程序设计大作业可能涉及多个方面,具体取决于你的课程要求和教师的要求。
以下是一个可能的Java程序设计大作业的示例:题目:设计并实现一个简单的计算器应用程序。
要求:1. 使用Java编写一个命令行应用程序,能够执行基本的数学运算(加、减、乘、除)。
2. 用户应该能够输入两个数字和一个运算符,程序将根据运算符执行相应的运算并输出结果。
3. 程序应该能够处理不同类型的数字(整数和浮点数)和运算符。
4. 程序应该能够处理输入错误,例如用户输入了无效的运算符或非数字字符。
示例代码:```javaimport java.util.Scanner;public class Calculator {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入第一个数字:");double num1 = scanner.nextDouble();System.out.print("请输入运算符(+、-、*、/):"); String operator = scanner.next();System.out.print("请输入第二个数字:");double num2 = scanner.nextDouble();double result = 0;switch (operator) {case "+":result = num1 + num2;break;case "-":result = num1 - num2;break;case "*":result = num1 * num2;break;case "/":if (num2 == 0) {System.out.println("除数不能为0!");return;} else {result = num1 / num2;}break;default:System.out.println("无效的运算符!");return;}System.out.println(num1 + " " + operator + " " + num2 + " = " + result);}}```在这个示例代码中,我们使用了`Scanner`类从用户那里获取输入。
C语言程序设计大作业
学年学期:20xx - 20xx 学年 1 学期课程名称:C语言程序设计综合训练课程学分:2分考核形式:大作业任课教师:xx题目:学生成绩统计程序学院:xx学院__________________________________ 专业班级:xx_______________________________________ 学号:_______ 学生姓名:提交日期:目录目录 (2)引言 (3)1. 学生成绩管理系统 (4)1.1系统简介 (4)1.2相关代码及知识点介绍 (4)2. 添加学生成绩功能 (5)3. 查找学生成绩功能 (6)4. 排序学生成绩功能 (7)5. 展示学生成绩功能 (9)6. 删除学生成绩功能 (10)7. 附页代码 (11)引言C语言是一种比较常见的计算机语言,许多大型应用软件都是用C语言编写而成的。
其简洁紧凑,灵活方便,数据结构丰富。
在一定程度上,C语言比汇编语言更实用,具有结构化语句,实现了结构化编程,使程序编写变得更容易、更快捷,可以编写出各种类型的程序。
同时,C语言是一门实践性强的学科,在学习的过程中,利用所学知识,编写一些与生活、学习相关的应用程序来提高程序编写能力,增强学习兴趣。
本次使用C语言设计一个学生成绩管理系统,可以实现学生成绩的添加,查找,排序及展示。
在作业中使用的是函数的模块化设计,将四个程序使用四个函数来实现。
与此同时,增加用户界面的交互,可供用户选择想要的功能,实现增删查排等操作。
1. 学生成绩管理系统1.1系统简介该系统主要实现学生成绩的添加,查找,排序,展示和删除五个功能,添加学生成绩主要有6个输入值组成,其中包括学号,姓名,语文,数学,英语,政治等。
查找学生成绩主要通过学号查询。
对学生成绩进行排序,可以分别通过学号,语文,数学,英语,政治,平均分,总分等进行排序。
第四项功能是对学生成绩以表格的形式进行展示。
删除学生成绩是按照学号对表格中的数据进行删除。
java程序设计大作业报告
Java程序设计大作业报告1. 引言本报告是关于Java程序设计大作业的报告,旨在总结和描述本次大作业的设计和实现过程。
本次大作业的主题是设计一个学生成绩管理系统。
2. 需求分析在开始设计和实现学生成绩管理系统之前,首先需要明确系统的需求。
本次大作业的学生成绩管理系统需要包含以下功能: - 学生信息管理:包括学生的基本信息和成绩信息。
- 成绩录入和查询:教师能够录入学生的成绩,并能够查询和修改学生的成绩信息。
- 成绩统计和分析:系统能够对学生的成绩进行统计和分析,例如计算平均分、最高分、最低分等。
3. 系统设计根据需求分析的结果,我们可以开始进行系统设计。
以下是学生成绩管理系统的设计步骤:3.1 类设计首先,我们需要定义学生类(Student)和成绩类(Grade)来管理学生和成绩信息。
学生类包含学生的基本信息,如学号、姓名、性别等,成绩类包含学生的各科成绩信息。
此外,我们还需要设计一个教师类(Teacher),用于录入和查询学生的成绩信息。
3.2 数据结构设计在设计学生成绩管理系统时,我们需要选择适合的数据结构来存储和管理学生和成绩信息。
例如,可以使用数组、链表或哈希表等数据结构来存储学生和成绩信息,根据具体需求进行选择。
3.3 用户界面设计学生成绩管理系统需要有一个用户友好的界面,方便教师进行操作。
可以使用图形界面(GUI)或命令行界面(CLI)来实现用户界面。
4. 系统实现在完成系统设计后,我们可以开始实现学生成绩管理系统。
4.1 学生类实现首先,我们需要实现学生类。
学生类应该包含学生的基本信息和成绩信息的操作方法,例如获取学生的基本信息、添加和修改成绩等。
4.2 成绩类实现接下来,我们需要实现成绩类。
成绩类应该包含学生的各科成绩信息,并提供计算平均分、最高分、最低分等操作方法。
4.3 教师类实现然后,我们需要实现教师类。
教师类应该包含录入和查询学生成绩的操作方法,例如录入学生成绩、查询学生成绩等。
Python程序设计大作业要求
1PYTHON程序设计大作业11Python程序设计大作业本次作业可以独立完成,也可以组队完成,每支队伍的人数不超过5人。
作业分成若干部分:1.设计文档——使用流程图、伪代码、框图、图片、文本等手段,描述•代码的整体思路,•分多少个模块,各个模块的功能及相互联系,•重要变量的结构和功能描述,•各个函数和类输入、输出和功能(算法思路和表达能力是评分的重要依据);2.程序源代码——彩色显示,配以重要的注释,需要有行号,如果分成若干个代码文件,则各个代码文件的内容要独立显示(代码风格是评分的依据之一);3.实验和测试报告——包括问题描述、任务要求、实验配置(计算机软硬件条件)、实验步骤、各个步骤的截图、实验结论和分析(学术性是评分的依据之一);4.10分钟小组展示用的演示文稿(讲演的水平是评分的依据之一)。
其中,前面3个部分通过学习通提交(要求在每一个部分提交的文档中,列出全部组员的姓名和学号),只需任意一人提交;最后一部分在小组展示中呈现。
猜词在这次作业中,你们需要开发一个程序。
这个程序通过改变游戏规则来试图击败人类。
以防你们不了解猜词(Word Guessing)游戏,下面介绍规则:1.玩家A选择一个秘密的单词secrete_word,然后写出若干个连线‘−’,连线的数目与单词所含字母的个数相等。
例如玩家A的秘密单词为“bicycle”,那么他就要写出“−−−−−−−”(一共7个连线)。
1PYTHON程序设计大作业22.玩家B开始猜字母。
每次他猜中的时候,玩家A要把该字母在秘密单词secrete_word中的所有出现都显示出来。
例如玩家A的秘密单词为“bicycle”,如果玩家B猜c,那么,玩家A就要把字母c都显示出来,也就是要显示“−−c−c−−”。
3.如果秘密单词中所有字母都显示出来了,或者玩家B用完了所有猜词的机会,游戏就结束了。
这个游戏的根本点在于,玩家A确切地选择了一个单词secrete_word。
程序设计大作业
程序设计大作业程序设计是计算机科学与技术领域中重要的一门学科,它涵盖了从问题分析到算法设计、编写代码以及测试和调试等多个方面。
作为一个程序设计课程的大作业,学生被要求设计并实现一个满足特定需求的软件系统。
本文将探讨程序设计大作业的重要性、设计和开发过程以及一些有效的实践技巧。
一、大作业的重要性程序设计大作业在学生的学习过程中扮演着重要的角色。
它不仅可以帮助学生巩固所学的知识和技能,而且可以培养学生的创新能力、解决问题的能力以及团队协作精神。
通过完成一个复杂的项目,学生们可以更好地理解软件设计和开发的实际应用,并提高自己的实践能力。
二、设计和开发过程程序设计大作业的设计和开发过程可以分为以下几个阶段:1. 需求分析:在这个阶段,学生需要与老师或项目组合作伙伴一起明确项目的需求和目标。
他们应该详细了解项目的功能要求、用户交互和界面设计等方面,并根据这些需求制定计划。
2. 系统设计:在这个阶段,学生应该针对项目的需求设计一个整体的系统框架。
他们需要确定系统的模块划分、数据结构和算法选择,并绘制相应的系统结构图和类图。
3. 编码实现:在这个阶段,学生根据系统设计开始编写代码。
他们应该遵循良好的编程规范,使用适当的注释和命名方法,确保代码的可读性和可维护性。
4. 测试和调试:在编码完成后,学生需要进行全面的测试和调试工作,以确保程序的正确性和稳定性。
他们应该编写测试用例,并对程序进行功能测试、性能测试和边界测试等。
5. 文档撰写:在项目的最后,学生需要撰写项目报告或用户手册,记录项目的整个开发过程和代码实现。
他们应该清晰地描述项目的架构和实现细节,并提供必要的示例和说明。
三、实践技巧在程序设计大作业中,学生可以采用一些实践技巧来提高效率和质量:1. 团队合作:如果是一个团队项目,学生应该积极参与团队合作,分工协作,确保项目按时完成。
他们可以使用版本控制工具(如Git)来管理代码,进行代码的合并和冲突解决。
程序设计大作业评分标准
程序设计大作业评分标准一、功能实现(40 分)1、核心功能完整性(20 分)作业要求的主要功能是否全部实现,这是最基本也是最重要的考量点。
如果关键功能缺失,会严重影响得分。
功能的实现是否准确无误,能否按照预期的逻辑和规则正常运行。
2、功能拓展与优化(10 分)除了基本功能外,是否有额外的功能拓展,以展示学生的创新和深入思考能力。
对已实现的功能是否进行了优化,提高程序的性能和效率。
3、功能的实用性(10 分)所实现的功能在实际应用场景中是否具有价值和实用性。
是否考虑了用户的需求和使用习惯,使程序具有良好的用户体验。
二、代码质量(30 分)1、代码规范(10 分)变量和函数的命名是否清晰、具有描述性,便于理解代码的逻辑和功能。
代码的排版是否整齐、有良好的缩进,增强代码的可读性。
2、代码结构(10 分)程序是否采用了合理的架构和模块化设计,各模块之间的职责划分是否明确,便于维护和扩展。
代码的逻辑是否清晰,是否避免了复杂和混乱的控制流。
3、代码效率(10 分)对于算法和数据结构的选择是否合理,是否能够有效地利用系统资源,提高程序的运行速度。
是否避免了不必要的重复计算和内存浪费。
三、文档撰写(15 分)1、需求分析(5 分)清晰地阐述程序的需求和目标,包括用户的需求、功能要求和性能要求等。
2、设计文档(5 分)详细描述程序的总体设计、模块设计、数据结构设计和算法设计等,使读者能够理解程序的架构和实现思路。
3、测试文档(5 分)提供充分的测试用例和测试结果,证明程序的功能正确性和稳定性。
四、创新性(10 分)1、技术创新(5 分)是否采用了新的技术、算法或框架,以提高程序的性能或实现独特的功能。
2、思路创新(5 分)在解决问题的思路和方法上是否有独特的见解和创新,展现出与众不同的思考方式。
五、团队协作(5 分)(如果是团队作业)1、分工合理性(2 分)团队成员之间的任务分工是否明确、合理,是否充分发挥了每个成员的优势。
网络程序设计考试大作业
网络程序设计考试大作业题目: 聊天室程序班级:学号:姓名:成绩:网络程序设计考试大作业 (1)一. 所使用的背景知识、主要函数的描述 (3)二. 程序设计思想及程序设计流程框图 (3)三. 主要代码及代码运行结果 (4)1.启动服务器 (4)2.登录 (6)3.注册 (10)4.登录和注册判定 (12)5.进入聊天界面 (13)6.私聊页面17一. 所使用的背景知识、主要函数的描述背景:根据现在最流行的聊天工具QQ, 模仿一部分主要功能来完成。
主要函数:public class Server;服务器的创建。
public class Client;客户端的创建。
public class UserInformation;用户信息的保存和验证。
二. 程序设计思想及程序设计流程框图设计思想:利用socket与server socket在客户端与客户端之间的通信, InputStream InputStreamReader输入输出流进行信息的发送与接收。
程序设计流程:主页面: 输入账号与密码, 点击登录或者注册进入下一页面。
登录:判定是否正确, 正确则进去聊天界面。
注册: 进去注册界面, 成功则返回主页面。
进入聊天室: 能发送信息让在线的所有人看到。
私聊界面:能与一个人单独聊天, 信息只能被双方看到。
三. 主要代码及代码运行结果1.启动服务器代码:public class Server {ServerSocket server ;static int clientNum = 0;// 存放与服务器连接上的对应的Socket, 作用是保存服务器与客户端之间的流, 便于服务器给每个客户端进行回发消息List<Socket> clientConnection = new ArrayList<Socket>();public Server() {try {server = new ServerSocket(9999);System.out .println("服务器已经启动");} catch (IOException e ) {e .printStackTrace();System.out .println("服务器启动失败");}}// 内部类, 监听客户端是否有连接到服务器, 并将此客户端的Socket传递给HandleSocket进行处理, 同时将client存放到List中, 即clientConnection中class SocketListener implements Runnable {public void run() {Socket client;try {while (true) {client = server.accept();// 连接上一个就压入List中, 即clientConnection中clientConnection.add(client);HandleSocket hs = new HandleSocket(client);// 连接上就让HandleSocket去处理new Thread(hs).start();}} catch (IOException e) {System.out.println("客户连接服务器失败");}}}// 内部类处理一个Socket,接收一个Client发送过来的消息, 并且服务器原封不动的返回给所有客户端, 客户端对消息进行过滤class HandleSocket implements Runnable {Socket client;HandleSocket(Socket client) {this.client = client;}public void run() {try {clientNum++;// 启用输入流InputStream is = client.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);System.out.println("第" + clientNum + "个客户端连接进入服务器");boolean flag = true;String s;do {// 对用户发来的消息进行群发给客户端s = br.readLine();System.out.println("接受到一个客户端消息: " + s);for (int i = 0; i < clientConnection.size(); i++) {Socket client = clientConnection.get(i);OutputStream os = client.getOutputStream();PrintStream ps = new PrintStream(os);ps.println(s);}} while (flag);client.close();} catch (IOException e) {System.out.println("有一个客户断开与服务器的连接");}}}界面:2.登录代码:package com.qq.main;import java.awt.Color;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import javax.swing.JTextField;import com.qq.regist.Regist;import erInformation;/*** 主界面*/public class Main extends JFrame {//组件的内容private JLabel userId;private JLabel userPassword;private JTextField inputId;private JPasswordField inputPassword;private JButton btLogin;private JButton btRegist;Main() {userId = new JLabel("帐号");userPassword = new JLabel("密码");inputId = new JTextField(6);inputPassword = new JPasswordField();btLogin = new JButton("登陆");btRegist = new JButton("注册");// 设置窗体属性Toolkit tk = Toolkit.getDefaultToolkit();Dimension screenSize = tk.getScreenSize();//得到当前屏幕的长和宽int x = (int) screenSize.getWidth();int y = (int) screenSize.getHeight();this.setBounds((x - 240) / 2, (y - 600) / 2, 240, 600);//窗口显示的大小 , 位置this.setResizable(false);//窗口大小不能改变this.setLayout(null);//默认的格式this.setBackground(Color.BLACK);// 窗口的颜色this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出程序// 设置JLabel属性userId.setBounds(30, 160, 40, 20);userPassword.setBounds(30, 200, 40, 20);// 设置文本域属性inputId.setBounds(90, 160, 100, 20);inputPassword.setBounds(90, 200, 100, 20);inputPassword.setEchoChar('*');//用*显示代替你输入的密码// 设置JButton属性btLogin.setBounds(50, 240, 60, 20);btRegist.setBounds(120, 240, 60, 20);// 注册“登陆”按钮监听器btLogin.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {UserInformation user = new UserInformation();String userName = inputId.getText();String userPassword = new String(inputPassword.getPassword());if (userName.equals("")) {JOptionPane.showMessageDialog(null, "用户名不能为空");} else if ("".equals(userPassword)) {JOptionPane.showMessageDialog(null, "密码不能为空");} else if (user.isExist(userName)&& erInfomation.getProperty(userName).equals(userPassword)) {new AllTalkFrame(userName).setVisible(true);// 判断成功后new一个群聊窗口Main.this.dispose();} else {JOptionPane.showMessageDialog(null, "此用户名不存在或者密码不正确");}}});// 注册“注册”按钮监听器btRegist.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Regist();//注册页面}});this.add(userId);this.add(userPassword);this.add(inputId);this.add(inputPassword);this.add(btLogin);this.add(btRegist);this.setVisible(true);}public static void main(String[] args) {new Main();}}界面:3.注册代码:// 注册“提交”按钮的监听器btSubmit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String userName = inputId.getText();String userPassword = newString(inputPassword.getPassword());String userPasswordConfirm= new String(inputPasswordConfirm.getPassword());System.out.println("您点击了提交按钮");if (userName.equals("")) {JOptionPane.showMessageDialog(null, "用户名不能为空");} else if ("".equals(userPassword)|| "".equals(userPasswordConfirm)) {JOptionPane.showMessageDialog(null, "密码和密码重复都不能为空");} else if (!userPassword.equals(userPasswordConfirm)) {JOptionPane.showMessageDialog(null, "密码和密码重复不一致");} else {UserInformation user = new UserInformation();if (user.isExist(userName)) {JOptionPane.showMessageDialog(null, "此用户名已存在");} else {JOptionPane.showMessageDialog(null, "注册成功");user.insert(userName,userPassword);//UserInformation类Regist.this.dispose();}}}});// 注册“取消”按钮的监听器btCancel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("您点击了取消按钮");Regist.this.dispose();}});界面:4.登录和注册判定代码://注册一个用户public void insert(String userName, String userPassword) { try {userInfomation = new Properties();InputStream is;OutputStream os;is = new ("c:/userInfo.properties");os = new ("c:/userInfo.properties", true);userInfomation.load(is);// 将用户名和密码存储到内存中userInfomation.setProperty(userName, userPassword);// 将用户名和密码保存到文件中userInfomation.store(os, null);} catch ( e1) {System.out.println("文件userInfo.properties没有找到 ");} catch (IOException e) {System.out.println("写 userInfo.properties 出错");}}//判断此用户名是否存在public boolean isExist(String userName) {try {userInfomation = new Properties();InputStream is;is = new ("c:/userInfo.properties");userInfomation.load(is);if (userInfomation.containsKey(userName)) {return true;}} catch ( e1) {System.out.println("文件userInfo.properties没有找到 ");} catch (IOException e) {System.out.println("写 userInfo.properties 出错");}return false;}5.进入聊天界面代码:class showOldMessageThread implements Runnable {public void run() {boolean flag = true;while (flag) {try {// 接收群聊服务器端回发过来的消息String serverOutput = client.br.readLine() + "\r\n";if (!serverOutput.startsWith("私聊")&& !serverOutput.startsWith("*")&& !(serverOutput.substring(serverOutput.indexOf(": ") + 1).equals("\r\n"))) {String s1 = serverOutput.replace('说', ' ');String s = s1.replaceAll("�", "\r\n ");oldMessageTextArea.append(s);}// 添加客户端的用户在线列表if (!serverOutput.startsWith("*")&& !serverOutput.startsWith("私聊")&& (serverOutput.indexOf("说") != -1)) {String listName = serverOutput.substring(0,serverOutput.indexOf('说'));// 如果JList中有相同名字的用户, 则不添加, 否则添加if (!users.contains(listName)) {System.out.println("用户" + listName + "上线了");users.add(listName);userList.setListData(users);}}// 判断服务器回发过来的消息是不是以"私聊"开头的, 是的话就提取出这两个用户名if (serverOutput.startsWith("私聊")) {String siliaoName1 = serverOutput.substring(serverOutput.indexOf("*") + 1, serverOutput.indexOf("和"));String siliaoName2 = serverOutput.substring(serverOutput.indexOf("和") + 1, serverOutput.indexOf("\r"));String siliaoBenshen = "";String siliaoDuixiangName = "";if (siliaoName1.equals(clientName)) {siliaoBenshen = siliaoName1;siliaoDuixiangName = siliaoName2;} else {siliaoBenshen = siliaoName2;siliaoDuixiangName = siliaoName1;}// 判断这两个名字中是否有与自己同名的, 有的话就弹出个私聊窗口if (siliaoName1.equals(clientName)|| siliaoName2.equals(clientName)) {new PointToPointTalkFrame(siliaoBenshen + "和"+ siliaoDuixiangName).setVisible(true);}}} catch (IOException e1) {System.out.println("读取服务器端消息出错");}}}}// 注册JList的点击事件, 进入私聊界面userList.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {if (e.getClickCount() == 2) {if (erList.getSelectedValue().toString().equals(clientName)) {JOptionPane.showMessageDialog(null, "不能和自己聊天");} else {String PToPMemberName = "私聊"+ "*"+ clientName+ "和"+erList.getSelectedValue().toString();client.ps.println(PToPMemberName);}}}});界面:6.私聊页面代码:// 线程: 只要服务器端有消息, 就将消息显示到oldMessageTextAreaclass showOldMessageThread implements Runnable {public void run() {boolean flag = true;while (flag) {try {// 接收服务器端回发过来的消息String serverOutput = client.br.readLine() + "\r\n";System.out.println("私聊服务器发过来的消息: " + serverOutput);// 将消息中的两个用户名提取出来String s1 = "";if (serverOutput.startsWith("私聊")) {String[] s;if (serverOutput.startsWith("私聊*")) {s = serverOutput.substring(3,serverOutput.indexOf("\r")).split("和");} else {s = serverOutput.substring(2,serverOutput.indexOf("说")).split("和");}for (int i = 0; i < s.length; i++) {s1 = s1 + s[i];}}// 将标题中的两个用户名提取出来,有两种顺序String[] title = clientName.split("和");String s2 = "";for (int i = 0; i < title.length; i++) {s2 = s2 + title[i];}String s3 = "";for (int i = title.length - 1; i >= 0; i--) {s3 = s3 + title[i];}// 判断服务器端返回消息中的两个用户名等于客户端的两个用户名(忽略顺序), 则将消息显示出来(也就是显示在私聊窗口上)if (s1.equals(s2) || s1.equals(s3)) {String ss1 = serverOutput.substring(2, serverOutput.indexOf("和"));String ss2 = serverOutput.substring(serverOutput.indexOf(": "));// 将私聊客户端返回来的一行字符串按"�"进行拆分成多行, 显示在私聊的oldMessageArea中if (ss2.indexOf("�") != -1) {ss2 = ss2.replaceAll("�", "\r\n ");}oldMessageTextArea.append(ss1 + ss2);}} catch (IOException e1) {System.out.println("读取服务器端消息出错");}}}}界面:。
c++程序设计大作业
c++程序设计大作业C++程序设计大作业是一项重要的任务,通常要求学生设计和实现一个较为复杂的程序。
下面我将从多个角度来回答关于C++程序设计大作业的问题。
首先,大作业的主题和要求可能因学校和课程而异。
有些教授可能会给出具体的题目,而其他教授可能鼓励学生自由选择一个项目。
无论是哪种情况,你都需要理解并满足作业的要求。
在开始设计大作业之前,你需要明确程序的目标和功能。
这可能涉及到分析问题、确定输入输出、设计算法和数据结构等。
确保你充分理解问题,并考虑如何用C++语言实现解决方案。
接下来,你需要考虑程序的整体结构和模块划分。
良好的程序设计应该具有模块化、可维护和可扩展的特点。
你可以将程序划分为多个函数或类,每个函数或类负责完成特定的任务。
同时,要注意模块之间的接口设计,确保它们能够有效地协同工作。
在编写代码之前,你可以先进行一些设计和规划。
可以画出程序的流程图或者类图,帮助你更好地理解程序的结构和逻辑。
此外,你还可以编写伪代码,以便更清晰地表达算法和思路。
在实际编写代码时,要遵循良好的编码规范和风格。
这包括使用有意义的变量和函数命名、适当的缩进、注释等。
良好的代码风格可以使你的程序更易读、易懂,并且方便他人阅读和维护。
在完成代码编写后,你需要进行测试和调试。
编写一些测试用例来验证程序的正确性,并逐步排除可能存在的bug。
可以使用调试工具来帮助你定位和修复错误。
最后,完成大作业后,你可以进行一些额外的优化和改进。
这可能包括提高程序的性能、优化算法、改进用户界面等。
但要注意,在进行优化之前,确保程序已经正确运行。
总结起来,C++程序设计大作业需要你全面考虑问题,从多个角度进行设计和实现。
你需要理解问题、设计算法和数据结构、划分模块、编写代码、进行测试和调试,并最终完成一个高质量的程序。
希望这些回答能对你有所帮助。
总汇编语言程序设计期末大作业。
汇编语言程序设计期末大作业:编写一完整的汇编语言源程序,实现从键盘输入一个班(不少于10人)的学生记录(学号:8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整数)后,(1)将输入的记录保存在C盘根目录下名为stuscore.dat的文件中;(2)按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序;(3)输出总分高于班平均总分的全部学生记录。
要求:元月4日前提交一份纸质报告(班长统一收齐)。
大作业格式:1.标题:汇编语言程序设计期末大作业2.作业题目:(上述)3.算法分析(流程图)4.实现代码(必须含注释)5.实验结果(汇编、连接、运行的截图)6.总结代码实现student struct ;定义结构Snumber db 11,0,11 dup(?)Sname db 11,0,11 dup(?)English db 4,0, 4 dup(?)Chinese db 4,0, 4 dup(?)Math db 4,0, 4 dup(?)Sum db 4,0, 4 dup(?)student ends;数据段data segmentmessMenu db '----------------The Homework of Assembler-----------------$'messMenu1 db '----------Name:TU LIN No:8000110028--------------$'messNext db'--------------------------------------------------------------------------------$'messName db 'Please input the student name(<11):$'messNum db 'Please input the student number(<11):$'messEnglish db 'Please input the English score:$'messChinese db 'Please input the Chinese score:$'messMath db 'Please input the Math score:$'mess1 db 'name:$'mess2 db 'number:$'mess3 db 'English:$'mess4 db 'Chinese:$'mess5 db 'Math:$'messSumScore db 'SumScore:$'MessTab db 09,'$' ;Tab 用于排列对齐StudAddress dw 10 dup(?) ;存各学生的偏移地址EnglishScore db 10 dup(?) ;存学生英语成绩的十进制数ChineseScore db 10 dup(?) ;存学生语文成绩的十进制数MathScore db 10 dup(?) ;存学生数学成绩的十进制数Average dw ?Buf db 6 dup(?)SumScore dw 10 dup(?) ;用于记录每个学生总分NumbersOfStudent db 0Stu student 10 dup(<>)SumRank db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9FName db 'C:\StuScore.dat', 0;文件FileHandle dw ?;文件句柄EndOfFile dw 0ffhOtherLine db 0ah, 0dh, '$'FileSpace db " "data ends;堆栈段stack segmentdb 100h dup(?)stack ends;代码段code segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax ;将数据段首地址传给dsmov ax,stackmov ss,ax ;将堆栈段首地址传给ssmov sp,0call Endlinelea dx,messMenumov ah,09hint 21hcall Endlinelea dx,messMenu1mov ah,09hint 21hcall Endlinelea si,Stu ;取student的首地址给simov cx,10InputStu:call GetStudentlea dx,messNextmov ah,09hint 21hadd si,50loop InputStu ;输出循环结束lea si,Stucall GetEnglishScorecall GetChineseScorecall GetMathScorecall Stop ;程序运行停止一下,按回车键继续执行 call Writetofilecall stopcall SumAveragecall GetSumcall GetAddresscall SortStudentcall Stop ;程序运行暂停一下,按回车键,继续执行call ShowStumov ah,4chint 21h;============================================================;子程序名:GetStudent;功能:录入学生信息;============================================================ GetStudent proc nearpush sipush dxpush axpush cx ;子程序保护现场lea dx,messNamemov ah,9int 21hlea dx,[si].Snamemov ah,0Ahint 21hcall Endlinelea dx,messNummov ah,9int 21hlea dx,[si].Snumbermov ah,0Ahint 21hcall Endlinelea dx,messEnglishmov ah,9int 21hlea dx,[si].Englishmov ah,0Ahint 21hcall Endlinelea dx,messChinesemov ah,9int 21hlea dx,[si].Chinesemov ah,0Ahint 21hcall Endlinelea dx,messMathmov ah,9int 21hlea dx,[si].Mathmov ah,0Ahint 21hcall Endlinepop cxpop axpop dxpop siretGetStudent endp;============================================================ ;子程序名:TureShow;功能辅助子程序ShowStu,用于输出字符串;============================================================ TureShow proc nearpush dx ;保护相关寄存器push cxpush bxpush axmov bx,dx ;将bx指向缓存区的地址xor cx,cxmov cl,[bx+1] ;cl存放了缓存区录入的字符数LoopTS:mov dl,[bx+2] ;从第三个偏移地址开始显示mov ah,2 ;调用单个字符输出中断int 21hinc bxloop LoopTSpop axpop bxpop cxpop dxretTureShow endp;============================================================ ;子程序名:ShowStu;功能:显示学生信息记录;============================================================ ShowStu proc nearpush cxpush axpush dxpush sipush di ;保护现场call Endlinelea di,SumScorelea bx,StudAddressmov cx,10Loop1: mov si,word ptr[bx]lea dx,mess1mov ah,09hint 21hlea dx,[si].Snamecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess2mov ah,09hint 21hlea dx,[si].Snumbercall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess3mov ah,09hint 21hlea dx,[si].Englishcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess4mov ah,09hint 21hlea dx,[si].Chinesecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess5mov ah,09hint 21hlea dx,[si].Mathcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,messSumScoremov ah,09hint 21hmov ax,[di]call Outputcall Endlineadd bx,2add di,2loop Loop1lea dx,messNextmov ah,09hint 21hpop dipop sipop dxpop axpop cxretShowStu endp;============================================================= ;子程序名:Endline;功能:回车换行;============================================================= Endline proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,2 ;回车mov dl,0ahint 21hmov ah,2 ;换行mov dl,0dhint 21hpop cxpop dxpop axretEndline endp;=============================================================;子程序名GetEnglishScores:;功能:将得到的指定个学生的分数以十进制保存到EnglishScore缓冲区中;============================================================= GetEnglishScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使si指向第一个学生的偏移地lea bp,EnglishScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores0:push cx ;保护外循环的CX值lea bx,[si].English ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore0:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到di,且将高位di的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来di中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore0mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区EnglishScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores0pop bppop axpop bxpop cxpop dxpop sipop diretGetEnglishScore endp;=============================================================;子程序名GetChineseScore:;功能:将得到的指定个学生的分数以十进制保存到ChineseScore缓冲区中;============================================================= GetChineseScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,ChineseScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores1:push cx ;保护外循环的CX值lea bx,[si].Chinese ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore1:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore1mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区ChineseScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores1pop bppop axpop bxpop cxpop dxpop sipop diretGetChineseScore endp;=============================================================;子程序名GetMathScore:;功能:将得到的指定个学生的数学分数以十进制保存到MathScore缓冲区中;============================================================= GetMathScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,MathScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores2:push cx ;保护外循环的CX值lea bx,[si].Math ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore2:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore2mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区MathScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores2pop bppop axpop bxpop cxpop dxpop sipop diretGetMathScore endp;==============================================================;子程序名:Writetofile;功能:用于创建文件并且存储学生信息;============================================================== Buildfile :push axpush cxpush dxmov ah, 3chmov cx, 00lea dx, FNameint 21hjc CreateFileErrormov FileHandle, axjmp CreateFileOkCreateFileError:mov ah, 09hmov dx, offset CreateFileErrorint 21hCreateFileOk:pop dxpop cxpop axretWriteToFile:push axpush bxpush cxpush dxpush dipush silea di, [si].SNamemov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx,FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SNumbermov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].ChineseScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].MathScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].EnglishScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SumScore mov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteEndLinejmp WriteFileOkWriteFileError:lea dx,WriteFileErrormov ah, 09hint 21hWriteFileOk:pop sipop dipop dxpop cxpop bxpop axret;******************************************************************** WriteSpace:mov cx, 2lea dx, FileSpacemov bx, FileHandlemov ah, 40hint 21hret;******************************************************************** WriteEndLine:mov cx, 2lea dx, OtherLinemov bx, FileHandlemov ah, 40hint 21hretCloseFile:mov ah, 40hmov bx, FileHandlemov cx, 2lea dx, EndOfFileint 21hmov ah, 3ehmov bx, FileHandleint 21hret;============================================================== ;子程序名:GetSum;功能:用于计算出每个学生的各科成绩的总分;============================================================== GetSum proc nearpush axpush dipush sipush bxpush cxlea di,EnglishScorelea si,SumScoremov cx,10mov al,0LoopSum:mov ah,0mov al,[di]mov word ptr[si],axinc diadd si,2loop LoopSumlea di,ChineseScorelea si,SumScoremov cx,10mov al,0LoopSum1:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum1lea di,MathScorelea si,SumScoremov cx,10mov al,0LoopSum2:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum2pop cxpop bxpop sipop dipop axretGetSum endp;============================================================== ;子程序名:SumAverage;功能:用于计算出平均成绩,并输出总分高于平均分的学生记录;============================================================== SumAverage proc nearpush axpush bxpush cxpush dxpush simov cl, NumbersOfStudentmov ch, 0mov bx, cxmov ax, 0mov dx, 0mov si, offset SumScoreAverageLoop:add ax, word ptr [si]adc dx, 0add si, 2loop AverageLoopdiv bxmov Average, ax;输出高于平均成绩的同学mov dx, offset ShowBigThanAveragemov ah, 09hint 21hmov cl, SNumbermov ch, 0mov di, 0mov si, 0ShowBigThanAverage:mov ax, SumScore[si]cmp ax, Averagejl ShowBigOkmov dl, SumRank[di]mov al, type studentmul dlmov bx, axcall Outputadd si, 2inc diloop ShowBigThanAverageShowBigOk:mov dx, offset OtherLinemov ah, 09hint 21hpop sipop dxpop cxpop bxpop axretSumAverage endp;============================================================= ;子程序名:Output;功能:将ax中的二进制以十进制形式输出;============================================================== Output proc nearpush dipush bxpush axpush dxlea di,Bufadd di,6mov byte ptr[di],'$'mov bx,10CHANGE:dec dimov dx,0div bxadd dl,30hmov byte ptr[di],dlcmp ax,0jnz CHANGEmov dx,dimov ah,09hint 21hpop dxpop axpop bxpop diretOutput endp;============================================================= ;子程序名:GetAddress;功能:将指定个学生的偏移地址顺序保存到StudAddress;============================================================= GetAddress proc nearpush si ;保护相关寄存器push bxpush cxlea si,Stu ;使di指向第一个学生的偏移地址lea bx,StudAddress ;使bx指向存学生偏移地址的缓冲区mov cx,10 ;共有指定个学生LoopAdd:mov word ptr[bx],word ptr siadd bx,2 ;使bx指向存学生偏移地址的缓冲区的下一个地址add si,50 ;使di指向下一个学的生偏移地址loop LoopAddpop cxpop bxpop diretGetAddress endp;============================================================= ;子程序名:SortStudent;功能:根据学生分数进行排序;用冒泡法根据学生分数对分数从大到小排序;同时将对应的偏移地址进行排序;============================================================= SortStudent proc nearpush dxpush cxpush bxpush axpush dipush simov cx,10dec cxLoopChange0:push cx ;保护外循环的CX值lea bx,SumScore ; bx指向学生分数偏移地址lea si,StudAddress ;si指向存学生偏移地址的地址LoopChange1: ;将学生分数和下一个学生分数分别送入al,dl并比较大小;若当前学生分数小于下一个分数要交换其分数mov dx,word ptr[bx+2] ;此分数对应的学生的偏移地址mov ax,word ptr[bx]cmp ax,dxja EndExchange ;若大于则转而比较下两个分数值;交换偏移地址mov ax,word ptr [si+2] ;指定向ax中传入2个字节数据mov dx,word ptr [si]mov [si],axmov [si+2],dx;交换分数值mov ax,word ptr[bx+2]mov dx,word ptr[bx]mov word ptr[bx],axmov word ptr[bx+2],dxEndExchange:add si,2 ;指向下一个学生偏移地址的地址add bx,2 ;指向下一个存学生分数的地址loop LoopChange1pop cx ;保护外循环的CX值loop LoopChange0pop sipop dipop axpop bxpop cxpop dxretSortStudent endp;=============================================================;子程序名:MessTb;功能:输出1个Tab键;============================================================= MessTb proc nearpush dx ;保护相关寄存器push axlea dx,MessTab ;指向输出1个Tab键缓冲区mov ah,9 ;调用字符串输出程序int 21hpop axpop dxretMessTb endp;=================================================================== ;子程序名:Stop;功能是让程序停止运行一下,输入回车键继续执行;=================================================================== Stop proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,1 ;回车int 21hpop cxpop dxpop axretStop endpcode endsend start。
综合设计项目-大作业
综合设计项目考核:占课程总分的20%任务1:用AT89C51和16个发光二极管构建一个单片机最小系统设计要求:发光二极管循环显示:由16个发光二极管组成一个彩灯图案,依次点亮循环2遍。
1、最小系统硬件电路的设计。
2、软件程序的编写、调试。
3、软、硬件联合仿真运行,显示结果。
任务2:用AT89C51、74LS164串/并移位寄存器芯片和2位共阴极数码管组成的静态显示器构建一个单片机最小系统。
设计要求:用单片机的P1.0作数据串行输出口,P1.1作移位脉冲输出口,使2位LED静态显示器显示数字“21”。
1、最小系统硬件电路的设计。
2、软件程序的编写、调试。
3、软、硬件联合仿真运行,显示结果。
任务3:用AT89C51和一组8×8点阵构建一个单片机最小系统设计要求:点阵循环显示:依次从第1行第1列线点亮直到第8行第8列线点亮。
1、最小系统硬件电路的设计。
2、软件程序的编写、调试。
3、软、硬件联合仿真运行,显示结果。
任务4:用AT89C51和LCD液晶显示器构建一个单片机最小系统设计要求:用LCD液晶显示器显示:第1行—姓名(拼音)和学号,第2行--身高(cm)和体重(kg)。
1、最小系统硬件电路的设计。
2、软件程序的编写、调试。
3、软、硬件联合仿真运行,显示结果。
任务7:用AT89C51和4组8×8点阵构建一个单片机最小系统。
设计要求:用字模提取软件产生“单片机技术与应用”8个汉字的汉字库,控制四组8×8点阵(即一个16×16点阵),编码显示汉字“单片机技术与应用”1、最小系统硬件电路的设计。
2、软件程序的编写、调试。
3、软、硬件联合仿真运行,显示结果。
任务8:用AT89C51和图形点阵液晶显示器-AMPIRE128×64构建一个单片机最小系统。
设计要求:用字模提取软件产生汉字库,控制液晶显示器显示【唐】孟浩然的诗《春晓》的四句:春眠不觉晓,处处闻啼鸟。
程序设计大作业评分标准(一)2024
程序设计大作业评分标准(一)引言概述:在程序设计大作业评分标准(一)中,我们将提供一套详细的评分标准,以帮助教师和学生评估程序设计大作业的质量和准确性。
这些评分标准将使评估变得更加客观和一致,进一步提高作业的质量和学生的学习效果。
正文内容:1. 代码质量评估- 代码结构:良好的代码结构应具有清晰的模块划分、适当的命名规范和一致的缩进风格。
- 注释和文档:代码中应包含足够的注释,以解释关键代码段和算法逻辑。
此外,提供相关的文档(如README文件)也是评分的重要因素。
- 可读性:代码应易于理解和阅读,采用清晰的变量和函数命名,注重代码的可重用性。
2. 功能完整性评估- 功能实现:作业应按照给定的需求规范实现全部功能,并能正确处理各种边界情况。
- 功能测试:作业应通过一系列的功能测试用例,保证功能实现的正确性。
3. 错误处理和鲁棒性评估- 异常处理:程序应对可能出现的异常情况进行恰当的处理,避免程序崩溃。
- 输入验证:程序应对输入数据进行验证,以避免无效或无法处理的数据导致错误。
- 边界检查:程序应正确处理边界情况,例如处理可能造成缓冲区溢出的输入。
4. 性能和效率评估- 时间复杂度:代码应具有较低的时间复杂度,以提高程序的执行效率。
- 空间复杂度:代码应具有较低的空间复杂度,以减少内存占用。
- 性能测试:作业应通过一系列性能测试用例,评估程序的执行时间和资源占用情况。
5. 编码规范符合评估- 样式规范:代码应符合一定的编码规范,如使用统一的缩进、代码对齐和括号的使用等。
- 命名规范:变量、函数和类的命名应具有一致性,并能清晰地传达其含义和用途。
- 可维护性:代码应易于维护和修改,具有一定的模块化和重用性。
总结:通过程序设计大作业的评分标准(一),我们可以客观地评估作业的质量和准确性,从而提供有针对性的反馈和改进建议。
这些评分标准将帮助学生更好地理解程序设计的要求,提高他们的编码规范和质量意识。
同时,教师也可以更有效地评估学生的学习成果,促进他们进一步提高其程序设计能力。
程序设计大作业课题
《程序设计基础》大作业【设计目的】实践能力是考察大学生综合素质的主要指标之一。
在学习一种编程语言之后,通过分析、设计和实现一个小型软件,可以达到锻炼实践能力的目的,并且有助于学生理解和掌握有关结构化程序分析、设计的思想,进一步提高对C语言的理解、运用能力。
【设计要求】1. 设计题目可从给出的题目中任选,也可自主命题,但需经过指导老师同意。
2. 每组1~3名学生,并指定组长一名。
请课代表在分组后,将分组情况以电子文档形式发给指导老师。
每组中的每名学生必须参与软件开发,并负责完成其中一个部分。
3. 必须在课程考试前,即第19周前完成所有工作,提交所需文档。
4. 大作业完成后,需提交如下材料:(1)源程序。
完整的源代码,必须能够正常运行,包含必要的注释。
(2)设计说明书。
内容请参考《程序设计基础(基于C语言)》第12章内容编写,包括系统总体结构、详细设计(即NS图或者流程图)以及,其他部分可以根据实际情况选择。
(3)人员分工。
作业如果由多名学生完成,必须具体说明每个同学完成的工作。
5. 后附的题目仅作参考,各位同学可根据自己的爱好选择题目或者自定题目,但是自主拟定的题目需经我同意方可计入成绩。
所列的参考题目中的要求是基本要求,大家也可自己增加功能。
6. 所有题目很可能用到我们在课上没有讲到的内容,需要大家去自学。
不可完全依赖老师。
7. 每个题目不得至多有3组同学选择。
各班课代表需掌握本班分组情况及每组选择的题目,在第10周前报给我。
8. 不明事宜可发邮件、发短信或打电话询问。
【成绩评定】1. 由指导教师根据学生完成任务的情况打分。
成绩评定实行优秀、良好、中等、及格和不及格五个等级。
2. 独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
发现课程设计基本雷同,一律不及格。
3. 最后检查作业时,每个参与的同学必须参加,我将根据每位同学所做的工作提问,以考察大家的完成情况。
【参考题目】1、飞机订票系统(1) 包含航班信息和客户信息两类信息,并分别存储在文件中。
c程序设计大作业
c程序设计大作业C程序设计大作业C程序设计是一门实践性很强的课程,大作业是检验学生对C语言掌握程度的重要方式。
本次大作业的目的在于通过实际编程练习,加深对C 语言基础语法、数据结构、算法设计和程序调试等方面的理解,同时培养学生的编程思维和解决实际问题的能力。
一、大作业要求1. 题目选择:学生可以从以下题目中任选一题完成:- 学生信息管理系统- 图书馆管理系统- 简易计算器- 字符串处理工具- 图形界面的五子棋游戏2. 功能实现:每个题目都应实现基本功能,例如:- 学生信息管理系统:添加、删除、修改、查询学生信息。
- 图书馆管理系统:图书借阅、归还、查询等。
- 简易计算器:实现基本的加减乘除运算。
- 字符串处理工具:实现字符串的复制、连接、查找、替换等操作。
- 图形界面的五子棋游戏:实现基本的下棋逻辑和胜负判断。
3. 代码规范:代码应遵循良好的编程规范,包括但不限于:- 明确的函数分工,每个函数应有简短的注释说明其功能。
- 变量命名应清晰,避免使用无意义的缩写。
- 代码结构清晰,逻辑性强。
4. 文档编写:提交的作业应包括:- 程序设计说明书:介绍程序的功能、设计思路、实现过程等。
- 源代码:按照题目要求编写的C语言代码。
- 用户手册:简要说明如何使用程序。
5. 提交方式:所有材料应以电子文档形式提交,包括设计说明书、源代码和用户手册。
二、大作业流程1. 选题:学生在教师的指导下选择适合自己能力的题目。
2. 需求分析:明确程序需要实现的功能和性能要求。
3. 设计:设计程序的总体结构和各个模块的详细设计。
4. 编码:根据设计文档编写程序代码。
5. 测试:对编写的程序进行测试,确保功能正确无误。
6. 调试:根据测试结果进行必要的调试,修正程序中的错误。
7. 文档编写:编写程序设计说明书和用户手册。
8. 提交:按照要求提交所有材料。
三、评分标准1. 功能实现:程序是否实现了题目要求的所有功能。
2. 代码质量:代码是否规范、清晰、易读。
JSP程序设计大作业【范本模板】
JSP程序设计大作业题目:基于JSP的火车订票系统发姓名:王晶学号:102014121461 简介此系统主要应用于铁道部门,完成铁道部门管理人员对车票的管理和旅客对车票的订购等,实现车票管理的信息化。
开发网上订购火车票系统不仅可以减轻铁道部门人员工作压力,比较系统地对车票、买票上的各项服务和信息进行管理,同时还可以方便旅客朋友们去查询和订购车票等,大大的提高服务质量和工作效率。
2 技术路线用了哪些技术?分别用于解决什么1数据库连接及操作通过构造方法加载数据库驱动,创建一个方法来获取数据库的连接,另一个方法来实现查询数据库的操作,另一个查询方法来实现增、删、改数据库的操作,closed()方法来关闭数据库连接。
2字符串处理类使用changeHTML()方法实现字符串中的特殊HTML字符;3用户登录入登录界面Login.jsp输入用户名和密码,在LoganDao中实例化数据库对象,在LogXServlet.java中将输入的用户名和密码与数据库中的数据进行对比,若相同则进入后台管理页面,否则重新登录3 系统设计a.业务逻辑设计客户端向带有jsp引擎的web服务器请求,web服务器作出回应。
Servelet调用JavaBean,转发jsp页面。
由Servlet来执行业务逻辑并负责程序的流程控制,JavaBean组件实现业务逻辑,充当着模型的角色,JSP用于页面的显示。
b. 功能模块设计⒈管理员模块功能本模块功能包括:添加、修改、删除和查询火车、线路和火车票信息以及修改个人密码等。
⑴添加火车、线路和火车票信息:主要是管理人员对火车自身信息、线路上存在的火车信息以及相应的火车票信息的添加。
⑵修改火车、线路和火车票信息:主要是管理人员对由于某些原因导致出现不合法火车信息和车票信息的更改、修订。
⑶删除火车、线路和火车票信息:主要是管理人员对一些不存在现实价值意义的火车和车票信息的删除.⑷查询火车、线路和火车票信息:主要是管理人员对火车、线路和车票信息的查询。
c语言程序设计大作业
C语言程序设计大作业一、引言C语言是一种高级编程语言,广泛应用于计算机科学和软件开发领域。
在C语言程序设计大作业中,学生需要设计和实现一个完整的C语言程序,以展示对C语言的理解和掌握程度。
本文将深入探讨C语言程序设计大作业的要求和技巧,帮助读者更好地完成这一任务。
二、任务要求C语言程序设计大作业有以下要求:1.设计和实现一个功能完整的C语言程序。
2.程序应具备良好的用户交互性。
3.程序应包括错误处理和异常处理机制。
4.程序代码应遵循良好的编程规范和代码风格。
三、程序设计思路完成C语言程序设计大作业需要进行以下步骤:1. 确定程序主题首先,需要确定程序的主题和功能。
可以根据个人兴趣和实际需求选择一个合适的主题,如学生管理系统、图书管理系统等。
2. 分析需求在确定程序主题后,需要详细分析程序的需求,包括功能需求和性能需求。
功能需求指程序需要实现的功能,性能需求指程序需要满足的性能指标,如响应时间、并发处理等。
3. 设计程序架构在分析需求后,需要设计程序的架构。
程序架构应包括模块组织结构、数据结构和算法等。
可以使用面向对象的方法进行设计,将程序拆分为多个模块,并建立模块之间的关联关系。
4. 实现程序根据程序设计思路,开始编写程序代码。
编写过程中应注意代码的可读性和可维护性,遵循良好的编程规范和代码风格。
5. 测试和调试完成程序编写后,需要进行测试和调试工作。
通过测试,确保程序能够正常运行,并满足需求。
四、关键技巧完成C语言程序设计大作业需要掌握以下关键技巧:1. 理解C语言基础知识在C语言程序设计中,需要掌握C语言的基础知识,包括数据类型、流程控制、函数等。
只有理解这些基础知识,才能进行程序设计和实现。
2. 熟悉常用库函数C语言提供了丰富的库函数,如输入输出函数、字符串处理函数等。
熟悉常用库函数的使用方法,可以提高程序的开发效率。
3. 错误处理和异常处理在程序设计过程中,要考虑错误处理和异常处理机制。
《程序设计与算法综合实践》期末大作业题目及评分标准
2017级《程序设计与算法综合实践》期末大作业题目及评分标准有如下情况之一者,为不及格。
(1)未能完成所选题目评分标准的最低要求。
(2)抄袭他人成果。
(3)大作业检查时不带电脑,或电脑没有C语言开发环境。
(4)出勤次数、课堂表现等不符合学校相关教学文件规定等其他情况。
备选题目目录1.图书购买系统...............................................................................................................- 2 -2.物流信息管理系统 ....................................................................................................- 3 -3.PM2.5实时信息管理系统 ............................................................ - 5 -4.电影评论系统 ............................................................................... - 6 -5.游戏角色属性分析........................................................................ - 8 -6.KTV点歌系统 ................................................................................ - 9 -7.英语词斩系统 ............................................................................. - 11 -8.校运动会成绩管理系统.............................................................. - 14 -9.通讯录管理系统 ......................................................................... - 15 -10.机票购买系统 ............................................................................. - 16 -11.车辆销售管理系统...................................................................... - 17 -12.饮品自动贩卖机系统.................................................................. - 18 -图书购买系统该系统有两类用户,会员(多名)和管理员(1名)。
程序设计综合作业
程序设计综合作业一、目的和要求通过综合作业,让学生综合应用所学程序设计的知识和能力,独立完成一个相对比较完整的课题,以进一步提高学生的程序设计能力。
要求每个学生从供选作业中选一个。
二、提交内容1、C语言源程序(注明姓名、学号),提交至校虚拟教学网站;2、设计文档,详细说明问题的设计、分析过程,程序结构、各函数的功能和算法。
并对程序调试、上机操作过程给出一定的描述。
三、项目提供以下4个项目:梭哈、钓鱼、小霸王学习机、五子棋。
要求在梭哈、钓鱼、小霸王学习机、五子棋中任选一个。
四、项目介绍1 梭哈梭哈是一种扑克牌游戏。
总共52张牌(不包括大小王),每张牌有面值和花色两项信息。
游戏双方各发5张牌,比较两手牌的大小,牌张价值高的获胜。
一手牌的价值如下:1 一个对子1分2 两个对子2分3 三张相同3分4 顺子4分5 有三张相同和一个对子5分6 四个相同6分7 同花顺7分8 以上均无0分当两手牌的价值一样时,先比较决定一手牌价值的牌的面值的大小,再比较其他牌的面值的大小,最后是按牌面值从高到低的顺序比较花色的大小。
牌的面值从大到小的顺序是A、K、Q、J、10、9、8、7、6、5、4、3、2;花色从大到小顺序是:黑桃(Spades),红桃(Hearts),方块(Diamonds),梅花(Clubs)。
引入花色名称数组:char *suit[4] = {“Clubs”, “Diamonds”, “Hearts”, “Spades”};面值名称数组:char *face[] = {"Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"};建议一张牌的信息用以下结构存储:struct CARD {int suit; /* 花色 */int face; /* 面值 */};牌的花色和面值分别用花色和面值在名称数组中的下标存储,以便用下标比较牌的大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合程序设计1. 有理数运算问题描述2有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。
在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。
对有理数的各种操作都可以用重载运算符来实现。
基本要求定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。
写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。
此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。
测试数据在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。
实现提示设有两个有理数a/b和c/d,则有:(1)有理数相加分子=a*d+b*c;分母=b*d(2)有理数相减分子=a*d-b*c;分母=b*d(3)有理数相乘分子=a*c;分母=b*d(4)有理数相除分子=a*d;分母=b*c(5)重载插入(<<)和提取(>>)运算符,使得对有理数可以直接输入输出。
设有理数输入格式为:整数1 整数2 //整数1为分子,整数2为分母有理数输出格式为:分子/分母优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。
对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。
2. 集合定义并实现一个整数集合类int_set,集合类中cur_size表明当前集合中有几个整数,集合中最多含max_size个整数,存放集合元素的数组是动态的。
要求提供的方法有:(1)增加一个整数到集合中;(2)从集合中去掉一个元素;(3)判断一个元素是否在集合中;(4)重载<<运算法,输入集合;重载>>运算符输出集合;(5)分别实现集合的交、并、差运算。
3. 通讯录管理问题描述编写一个简单的通讯录管理程序。
通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。
基本要求程序应提供的基本基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3)存储:即将通讯录信息保存在一个文件中。
4)装入:即将文件中的信息读入程序。
5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
6)修改:可修改一个人的除姓名外其它信息。
测试数据程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
实现提示程序可用数组或单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类Cperson来实现。
4. 商品销售统计问题描述编写商品销售统计程序,商品的信息有:商品的名称,计量单位(重量或件),单价。
所有商品的信息应事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。
客户一次购物可能购买多种商品,程序应计算出客户应付的钱款数。
基本要求程序分为两个部分:第一部分用于输入商品的信息并允许修改和删除;第二部分实现销售统计。
程序运行时由用户选择进入哪一部分功能,并能在运行时在两部分之间切换。
第二部分运行时,首先显示所有商品名称及代码(商品数目较多时,应考虑分屏显示),用户输入商品代码及商品重量或件数,用户一次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如-1)表示本次购物结束。
此时。
程序计算出应付钱款数并显示。
测试数据程序应输入不少于10种商品的信息,并进行模拟运行。
实现提示本程序的商品信息管理可采用与课程设计题目二类似的数据结构,既定义一个商品类,每种商品作为商品类的实例(对象)存储在数组或链表节点中。
选做内容1程序在营业结束时统计每种商品的销售量,销售金额及总营业额。
因此第二部分应有营业结束的选择,当用户选择此项时屏幕上显示当天营业的每种商品的销售量,销售金额及总营业额。
注意,商品类的数据成员应增加有商品的销售量和销售金额。
总营业额是所有商品的营业额之和,可用静态数据成员实现。
或可由原商品类派生出一个特殊的类,增加上面的数据成员及相应的成员函数。
5. 研究生初试录取问题描述研究生考试课程为4门,其中数学、外语、政治为统一命题,而专业基础课则根据不同的专业由招生学校自行命题。
国家对初试录取分数有总分要求(如某一年要求4门课总分应达到310分),另外还有对每门课的最低分数要求(如总分为100的试卷最低应达到40分,总分为150的试卷最低应达到65分)。
编程统计初试合格的人数,并按总分由高到低的顺序输出合格考生的信息。
基本要求程序运行时首先要求输入:考生姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩。
这些原始数据应保存到一个文件中。
然后输入:录取的总分要求,各课程的最低分数要求。
输出要求:过线考生的姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩及总分,这些信息应存放到另一个文件中。
测试数据程序应输入不少于10名考生的信息,其中应届生和历届生分别有若干名,并且都有合格和不合格的情况。
实现提示可定义一个考生类存放有关信息和实现相应的操作。
分数线数据(总分要求和各门课程的要求)可定义另外的类来存放,但应能被考生类及其派生类直接访问。
选做内容初试合格的考生应经过复试才能决定是否录取,复试成绩合格(大于一给定分值)可以录取,否则被淘汰。
而录取的顺序假设是按照专业基础课和复试成绩的平均值来确定的(因为这涉及到是计划内还是委培问题)。
因此,应首先输入初试合格考生的复试成绩及复试的合格线分数,然后按上面要求排序输出并标明被淘汰的学生。
6. 足球联赛积分问题描述足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。
试编一程序统计最近一轮比赛后,各2队积分及排名。
基本要求设积分表结构如下:队名(不超过15个字符),已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。
积分表放在正文文件中。
最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。
程序应根据此轮结果修改各队的积分和名次,所得的最新记分表仍在原积分文件中并同时在屏幕上显示。
测试数据可选择我国当年的甲A或甲B联赛的数据输入,并检查与报章公布的数据是否一致。
实现提示定义一个球队类,每个球队是均是此类的对象。
由于联赛中参赛的队伍数是固定的,因此可用对象数组来实现(当然也可以用链表结构)。
每输入两个队的比赛成绩,则相应的队的有关数据(比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分等)即可进行修改,比赛成绩录入完成,调用联赛排序方法(对象数组作为参数)排出名次并输出。
7. 篮球联赛积分查询篮球联赛积分统计规则(可在网上查到),编写每一轮比赛后各队名次和积分。
注:篮球联赛往往采用胜率来决定名次,胜率就是取胜的场数比赛场数之比。
若胜率相同,再由净胜球及进球数来决定名次,通过继承性完成上述要求。
8. 排球联赛积分查询排球联赛积分统计规则(可在网上查到),编写每一轮比赛后各队名次和积分。
9. 银行账户管理程序问题描述设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。
基本要求程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。
测试数据程序应输入不少于10人的账户信息,应考虑到人员同名的情况。
实现提示可定义一个账户类存放账户信息以及执行相应的操作,可以用一个链表类来管理账户。
3选作内容在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理。
10. 模拟计算器程序问题描述设计一个程序来模拟一个简单的手持计算器。
程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。
基本要求程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’符号后,窗口显示出结果。
测试数据程序输入不少于5种不同的表达式进行测试。
实现提示可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。
选作内容如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。
11. 设计一个排课程序问题描述每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2…,n,其中1位最高的期望值。
课程也有优先级,1,2…,n,用来决定将课程分给教师的顺序,其中1是最高的优先级。
设计一个程序针对某些课程给某些教师进行排课。
基本要求程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级)、教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中,程序根据课程的优先级以及教师对课程的期望值进行排课。
为了公平起见,程序随机分配课程,如果10门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。
最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。
测试数据程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。
实现提示可定义一个教师类存放教师信息,所有教师的信息可以用数组或链表存储;定义一个课程类存放课程信息,所有课程的信息可以用数组或链表存储;定义一个排课类进行排课,排课类可以4访问课程和教师信息。
选作内容对两个同类班级安排一学期(18周)的课程,程序应能处理某些限制,如一个老师不能同时给两个班上课。