华中科技大学C语言课程设计实验报告

华中科技大学C语言课程设计实验报告
华中科技大学C语言课程设计实验报告

华中科技大学计算机科学与技术学院

《C语言程序设计》课程设计

基础部分实验报告

题目:科技成果信息管理系统

专业:计算机科学与技术

班级: 1204 学号:

姓名:

成绩:

指导教师:

目录

一、系统功能结构设计 (1)

二、数据结构设计 (1)

三、程序结构 (4)

四、函数原型及功能 (9)

五、试验结果 (13)

六、实验体会 (29)

七、附录1:参考文献 (31)

八、附录2:程序清单 (31)

一、系统功能结构设计

航科技成果信息管理系统由五大功能模块组成:文件模块,编辑模块,查询模块,统计模块,帮助模块。如下图所示:

二、数据结构设计

1.单位信息链结点结构(DEPT_NODE)及用法

typedef struct dept_node

{

char number[8]; /*单位编号*/

char name[30]; /*单位名称*/

char PIC[20]; /*负责人*/

struct dept_node *next; /*指向下一结点*/

struct archs_node *achs; /*指向科技成果信息链结点的指针*/

GtkTreeIter iter; /*treeview中对应treeiter*/

} DEPT_NODE;

2.科技成果信息链结点结构(ACHS_NODE)及用法

typedef struct achs_node

{

char number[12]; /*成果编号*/

char name[50]; /*成果名称*/

char field[20]; /*所属技术领域*/

char first_dept_name[30]; /*第一完成单位*/

char first_dept_number[8]; /*第一完成单位编号*/

char first_member_name[20]; /*第一完成人*/

char award_name[30]; /*获奖名称*/

char award_level[10]; /*获奖档次*/

char award_grade[10]; /*获奖等级*/

struct arhs_node *next; /*指向下一节点*/

struct member_node *members; /*指向完成人员信息结点的指*/

GtkTreeIter iter; /*treeview中对应treeiter*/ } ACHS_NODE;

3.完成人员信息链结点结构(MEMBER_NODE)及用法typedef struct member_node

{

char number[18]; /*身份证号*/

char name[20]; /*姓名*/

char dept_name[30]; /*工作单位*/

char sex[4]; /*性别*/

int age; /*年龄*/

char title[15]; /*职称*/

int rank; /*成果排名*/

char achs_name[40]; /*所属成果名称*/

struct member_node *next;/*指向下一个结点*/

GtkTreeIter iter; /*treeview中对应treeiter*/ } MEMBER_NODE;

4.三方向的十字交叉链表结构

5.登陆窗体控件结构体(wgt)及用法

struct login_widget

{

GtkWidget *window; //主窗体

GtkWidget *label_tips; //用于信息提示的标签

GtkWidget *button_login; //两个按钮,一个点击后登录,一个点击后退出GtkWidget *button_exit;

GtkWidget *entry_username; //两个文本框,用于输入用户名和密码

GtkWidget *entry_pwd;

GtkWidget *label_username; //两个标签用于显示username文本框和password文本框提示

GtkWidget *label_pwd;

GtkWidget *vbox; //垂直布局盒子,包含以下三个水平布局盒子

GtkWidget *hbox_username; //包含用户名提示标签和用户名文本框,下面的HBOX作用类似

GtkWidget *hbox_pwd;

GtkWidget *hbox_button;

} wgt;

说明:将登陆窗体相关控件独立成一个结构体

6.指向3种节点的指针联合及用法

typedef union nodep

{

struct dept_node *dept;

struct achs_node *achs;

struct member_node *member;

} nodep;

说明:用于3种结构都会用到但不会同时用到的情形

7.两个传递参数的结构及其用法

struct nodecreate

{

GtkWidget *window;

GtkWidget *entry[9];

nodep unp;

int type;

};

struct query_judge

{

GtkWidget *entry;

int flag;

};

说明:GTK信号连接g_signal_connected将函数与信号链接后之内传递一个参数给函数,所以定义这两个结构分别将几个参数结合在一起传递

三、程序结构

1.主程序运行流程

2.数据保存流程

3.添加流程

4.单位查询流程

5.统计50

Y

四、函数原型及功能

(所有GtkWidget *button参数均为与消息链接用)

1.登陆模块

//功能:登录框初始化函数

//输入参数:

//返回值:无

void init_login_widget()

//功能:登录验证函数,点击login按钮时调用

//输入参数:

//返回值:无

void login(GtkWidget *widget,gpointer data)

2.图形界面模块

/**初始化部分变量,再依次调用各函数初始化界面各部分*/

int main( int argc, char *argv[])

/**初始化菜单栏*/

void init_menubar(GtkWidget *menubar)

/**初始化目录*/

void create_view_and_model (void)

/**初始化显示栏*/

void init_show(GtkWidget *list)

/**改变状态栏及显示栏*/

void on_changed(GtkWidget *widget, gpointer statusbar)

//功能:将选中的节点信息在显示栏中显示出来

//输入参数:iter

//返回值:无

int Show_Node(GtkTreeIter iter)//值传递不影响selectediter

/**对应3个节点显示的3个函数,返回对应GtkListStore*/

GtkListStore *Show_Dept(char *name);

GtkListStore *Show_Achs(char *name,char *P_name);

GtkListStore *Show_Member(char *name,char *P_name,char *PP_name);

3.文件模块

//功能:读取数据文件

//输入参数:

//返回值:re 的二进制前3位记录了三个数据文件是否成功打开,1为成功int LoadData(GtkWidget *button)

//功能:读取数据文件中数据到链表中

//输入参数:phead 单位节点头指针的地址

//返回值:re 的二进制前3位记录了三个数据文件是否成功打开,1为成功int LoadList(DEPT_NODE **phead)

//功能:将链表中节点添加到左侧树状列表中

//输入参数:

//返回值:

void rebuildtree()

//功能:存储数据文件

//输入参数:

//返回值:flag 的二进制前3位记录了三个数据文件是否成功打开,1为成功int SaveData(GtkWidget *button)

//功能:将链表中数据存储在数据文件中

//输入参数:phead单位节点头指针

//返回值:flag 的二进制前3位记录了三个数据文件是否成功打开,1为成功int SaveList(DEPT_NODE *phead)

//功能:推出前提示保存

//输入参数:

//返回值:

void quit_save(GtkWidget *button)

4.查询模块

//功能:根据type弹出一个查询框,再分别调用对应的Query函数

//输入参数:type对应枚举的几种类型

//返回值:无

void Query_info(GtkWidget *button,int type)

//功能:查询学院

//输入参数:in 包含iter和名称的结构

//返回值:无

void Query_Dept(GtkWidget *button,struct query_judge *in)

//功能:根据type弹出一个查询框,再分别调用对应的Query函数

//输入参数:type对应枚举的几种类型

//返回值:无

void Query_info(GtkWidget *button,int type)

//功能:查询完成人员

//输入参数:in 包含iter和名称的结构

//返回值:无

void Query_Member(GtkWidget *button,struct query_judge *in)

//功能:展开并跳转至指定iter

//输入参数:iter treeview中的一个目标iter

//返回值:无

void expand_select(GtkTreeIter iter)

//功能:按名称搜索单位

//输入参数:D_name 单位名称

//返回值:单位节点指针

DEPT_NODE *DEPT_search(char *D_name)

//功能:按名称搜索科技成果节点

//输入参数:A_name 科技成果节点名称,ACHS 所在学院头科技成果节点指针

//返回值:科技成果节点节点指针

ACHS_NODE *ACHS_search(char *A_name,ACHS_NODE *ACHS)

//功能:按名称搜索完成人员节点

//输入参数:M_name 完成人员节点名称,ACHS 所属科技成果头完成人员节点指针

//返回值:完成人员节点节点指针

MEMBER_NODE*MEMBER_search(char*M_name,MEMBER_NODE

*MEMBER)

5.添加模块

//功能:弹出一个输入框

//输入参数:type对应枚举的几种类型

//返回值:无

void entry_info(GtkWidget *button,int type)

//功能:添加3种节点统一函数,由entry_info确定按钮调用

//输入参数:

//返回值:无

void Add_node(GtkWidget *button,struct nodecreate *nodec)

//功能:插入科技成果节点函数,由Add_Node中情况3调用

//输入参数:pNew 指向新节点的指针

//返回值:对应单位节点指针

DEPT_NODE *insert_ACHS(ACHS_NODE *pNew)

//功能:插入完成人员节点函数,由Add_Node中情况4调用

//输入参数:pNew 指向新节点的指针

//返回值:对应科技成果节点指针

ACHS_NODE *insert_MEMBER(MEMBER_NODE *pNew)

6.删除模块

//功能:删除3种节点统一函数,由“删除”按钮调用

//输入参数:

//返回值:无

void Del_Node(GtkWidget *button)

//功能:删除单位节点,由Del_Node函数case 2调用

//输入参数:name 单位名称

//返回值:int 1为有错,0为正常

int Del_Dept(char *name)

//功能:删除科技成果

节点,由Del_Node函数case 2调用

//输入参数:name 科技成果名称,P_name 对应单位名称

//返回值:int 1为有错,0为正常

int Del_Achs(char *name,char *P_name)

//功能:删除完成人员节点,由Del_Node函数case 4调用

//输入参数:name 完成人员名称,P_name 对应科技成果名称,PP_name 对应单位名称

//返回值:int 1为有错,0为正常

int Del_Member(char *name,char *P_name,char *PP_name)

7.编辑模块

//功能:弹出一个编辑框

//输入参数:

//返回值:无

int Edit_info(GtkWidget *button)

//功能:编辑节点

//输入参数:

//返回值:无

void Edit_Node(GtkWidget *button,struct nodecreate *nodec)

8.统计模块

//功能:弹出一个统计框,由传入参数设置具体内容

//输入参数:title 统计框标题,col1 第一列标题,col2 第二列标题,in 传入的model

//返回值:无

void Statis_info(char *title,char *col1,char *col2,GtkListStore *in)

//功能:统计各单位科技成果数量,调用Statis_info显示统计结果

//输入参数:

//返回值:无

void statis_func1(GtkWidget *button)

//功能:统计各单位完成人员成果排名,调用Statis_info显示统计结果

//输入参数:

//返回值:无

void statis_func2(GtkWidget *button)

//功能:统计所有50岁以下第一完成人,调用Statis_info显示统计结果

//输入参数:

//返回值:无

void statis_func3(GtkWidget *button)

9.帮助模块

//功能:弹出软件信息及作者信息

//输入参数:

//返回值:无

void help_about(GtkWidget *button)

五、试验结果

编译环境:Ubuntu linux64位

Mingw Gcc

(源代码配置好后可跨平台编译)GTK版本:GTK+ 2.41

开发IDE:Codeblocks 12.11

1.系统登陆

输对自动进入

输错显示错误

2.登陆成功进入主界面

3.全屏模式

4.读取数据

(标准gnome菜单栏在最上面)5.读取成功

点击相应节点右侧显示相关信息6.添加单位

(添加成功提示)

C语言课程设计报告-游戏2048

东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运

一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户

在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。

四、流程图

五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

华中科技大学(水质工程学一)课程设计

一.总论 1.1 设计任务及要求 净水厂课程设计的目的在于加深理解所学专业理论,培养运用所学知识综合分析和解决实际工程设计问题的初步能力,在设计、运算、绘图、查阅资料和设计手册以及使用设计规范等基本技能上得到初步训练和提高。 课程设计的内容是根据所给资料,设计一座城市净水厂,要求对主要处理构筑物的工艺尺寸进行计算,确定水厂平面布置和高程布置,最后绘出水厂平面布置图、高程布置图和某个单项处理构筑物(絮凝沉淀池、澄清池或滤池)的工艺设计图(达到初步设计的深度),并简要写出一份设计计算说明书。 1.2 基本资料 1.2.1 水厂规模 该水厂总设计规模为***万m3/d,分两期建设,近期工程供水能力***万m3/d,,远期工程供水能力为***万m3/d。近期工程设计征地时考虑远期工程用地,预留出远期工程用地。 1.2.2 原水水质资料 水源为河流地面水,原水水质分析资料如下:

1.2.3 厂区地形 地形比例1:500,按平坦地形和平整后的设计地面高程32.00m设计,水源取水口位于水厂东北方向150m,水厂位于城市北面1km。 1.2.4 工程地质资料 (1) 表土砂质粘土细砂中砂粗砂粗砂砾石粘土砂岩石层 1m 1.5m 1 m 2 m 0.8m 1 m 2 m 土壤承载力:20 t/m2. (2)地震计算强度为186.2kPa。 (3)地震烈度为9度以下。 (4)地下水质对各类水泥均无侵蚀作用。 序号项目单位数量备注 1 历年最高水位m 34.38 黄海高程系统,下同 2 历年最低水位m 21.47 频率1% 3 历年平均水位m 24.64 4 历年最大流量m3/s 14600 5 历年最小流量m3/s 180 6 历年平均流量m3/s 1340 7 历年最大含砂量kg/m3 4.82 8 历年最大流速m/s 4.00 9 历年每日最大水位涨落m/d 5.69 10 历年三小时最大水位涨落m/3h 1.04 地下水位:在地面以下1.8m 1.2.6 气象资料 该市位于亚热带,气候温和,年平均气温15.90C,七月极端最高温度达390C,一月极端最低温度-15.30C,年平均降雨量954.1mm,年平均降雨日数117.6天,历年最大日量降雨量328.4mm。常年主导风向为东北偏北(NNE),静风频率为12%,年平均风速为3.4m/s。土壤冰冻深度:0.4m。

《C语言课程设计》实验报告

《C语言课程设计》报告 学院:信息工程学院 专业:信息管理与信息系统设计题目:通讯录程序设计班级:2016级一班 学号:201601510138 姓名:张进步 指导教师:杨菲菲 时间:12.24

学生通讯管理系统 1.1 设计目的 学习如何实现一个复杂的信息管理系统——学生通讯管理系统,能够实现老师对学生基本信息的记录、查询、修改。 通过本次学习,读者能够掌握: (1)如何设计主菜单和子菜单,以及各级菜单的响应与返回操作; (2)如何合理设计不同的结构体对系统中多个实体进行封装; (3)如何合理设计多个结构体数组管理不同实体对应的数据; (4)如何对复杂的函数过程进行拆分,用多个子函数进行封装; (5)进一步熟悉文件读取的相关操作。 1.2需求分析 本章的学生信息管理系统的主要功能面向老师,能够实现对学生信息进行录入、修改、查询。 学生信息方面的功能需求如下。 (1)新增学生信息,包括姓名、籍贯、电话号码(2)、电子邮箱。 (2)修改学生信息,可以选择对某个学生的某个属性值进行修改。 (3)查找学生信息,即输入要查找的学生学号,实现学生信息查询。 (4)显示所有学生信息,并以列表的形式清晰呈现。 1.3总体设计 系统功能结构图如图所示;学生信息管理系统 学生信息管理模块:包括4个子模块,分别是学生信息的录入,学生信息的修改,学生信息的查询,学生信息的浏览。

1.4详细设计与实现 1.4.1 预处理及数据结构 1.头文件 本项目涉及4个头文件,其中#include使用字符串的函数的时候需要添加此头文件,#include #include /*system使用的函数*/ #include /*getchar、getch函数使用的头文件*/ #include /*strcmp比较2个字符串是否一样*/ 2.宏定义 LEN sizeof(struct student)表示struct student的长度。DATA是按格式输出结构体的各项数据,能够方便输出操作,减少代码量。 #define_CRT_SECURE_NO_W ARNINGS #include #include #include #include #define LEN sizeof(struct student) #define FORMAT "%-8d%-15s%-15s%-15d%-15d%-15s\n" #define DATA stu[i].numb,stu[i].name,stu[i].nat,stu[i].num1,stu[i].num2,stu[i].mail 3.结构体 利用一个结构体struct student struct student/*定义学生信息结构体*/ { int numb;/*学号*/ char name[15];/*姓名*/ char nat[16];/*籍贯*/ int num1;/*电话号码1*/ int num2;/*电话号码2*/ char mail[40];/*邮箱*/ }; 4.全局变量 分别利用全局变量结构体数组struct student stu[50];来记录所有学生的基本信息,避免程序运行过程中多次初始化,方便各个式子函数调用。 struct student stu[50];

c语言课程设计报告学生成绩信息管理系统源代码

实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数

汇编语言课程设计

沈阳大学

2.3 MASM的介绍 MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发,历经二三十年的发展,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4等指令系统。 2.4总体设计功能 本次课程设计的内容是采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示 程序,由$及*字符相间,从两侧向中间螺旋汇聚直至形成一个矩形,这就要求该霓虹灯能够动态地进行变化;霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。 定时器中断处理程序:计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。 视频显示程序设计:一般由DOS 或BIOS调用来完成。有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。用INT 10H中断即可建立某种显示方式。用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用。 键盘扫描程序设计:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器,以及检测键盘状态,有无输入,并检测输入各值。 2.5详细功能设计 2.5.1主程序功能 主程序通过调用各个子程序来实现清屏,改变图形等功能,具体调用过程如图1所示。 沈阳大学

华中科技大学-IC课程设计实验报告(比例放大器设计)

华中科技大学-IC课程设计实验报告(比例放大器设计)

华中科技大学 题目:比例放大器设计 院系: 专业班: 姓名: 学号: 指导教师: 20XX年XX 月 I

摘要 在模拟电路中对放大器进行设计时,差分放大器由于能够实现两倍放大和能够很好的抑制共模噪声的优良性能而被广为应用。本文利用放大器的“虚短”“虚断”的特性对比例放大器的结构及放大器的构成和基本参数进行了设计,其中放大器采用差分放大结构。 关键词:比例放大器差分放大器一级结构二级结构 I

Abstract When designing an amplifier, differential amplifiers,with its twice higher gain and its restrain to Common-mode disturbance,is more widely used than other kinds of amplifiers.In this report,we make use of the properties of “virtual short cicuit” a nd “virtual disconnection” and design the structure and parameters of the whole circuit as well as the structure of the amplifier. Key Words:Proportion amplifier Differential amplifiers Level 1 Level 2 II

华中科技大学计算机学院C语言课设实验报告

华中科技大学计算机科学与技术学院 《C语言程序设计》课程设计 实验报告 题目:科研项目信息管理系统 专业:计算机 班级: 学号: 姓名: 成绩: 指导教师:李开 完成日期:2009年10 月20 日

科研项目信息管理系统一、系统功能结构模块图 二、数据结构设计及其用法说明 typedef struct lakey{ char name[30];/*团队名称*/ int total;/*自然科学基金的科研项目数*/ float dudu;/*经费数*/ struct lakey *next; }*plakey;/*统计3中用到的数据结构*/ typedef struct emmey{ char name[30];/*团队名称*/ int teacher;/*老师人数*/ int harden;/*项目数*/ float bizhi;/*比值*/ struct emmey *next; }*pemmey;/*统计4中用到的数据结构*/ typedef struct kPro{ char code[15];/*项目编号*/ char sort;/*项目种类*/ int aking1; char time[8];/*项目时间*/ float dudu;/*项目经费*/ int aking2;

char beiler[15];/*负责人*/ int aking3; char keynoName[30];/*所在团队名称*/ struct kPro *next; }harden,*pHarden; typedef struct Komo{ int teacher;/*老师人数*/ char name[20];/*院系名称*/ int student;/*学生人数*/ float bizhi;/*二者比值*/ struct Komo *next; }*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/ typedef struct kTea{ char name[30];/*团队名称*/ char beiler[15];/*负责人*/ int stuNum;/*学生人数*/ int aking2; int coco;/*老师人数*/ char colName[20];/*所在院系的名称*/ int aking1; struct kTea *next; pHarden child; }keyno,*pKeyno; typedef struct edward{ char name[20];/*院系名称*/ int totalnum;/*项目总数*/ int num973;/*973项目数*/ int num863;/*863项目数*/ float amount;/*经费数*/ struct edward *next; }*pedward;/*统计2中用到的数据结构*/ typedef struct kCol{ char name[20];/*院系名称*/ int aking; char beiler[15];/*院系负责人*/ struct kCol *next; char call[15];/*负责人电话号码*/ pKeyno child; }kekey,*pKekey;

c语言课程设计报告

C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日

目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)

一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。

二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学号 指导教师 完成日期

目录 目录错误!未定义书签。 1 概述错误!未定义书签。 设计目的错误!未定义书签。 设计内容错误!未定义书签。 2 系统需求分析错误!未定义书签。 系统目标错误!未定义书签。 主体功能错误!未定义书签。 开发环境错误!未定义书签。 3 系统概要设计错误!未定义书签。 系统的功能模块划分错误!未定义书签。系统流程图错误!未定义书签。 4系统详细设计错误!未定义书签。 5 测试错误!未定义书签。 测试方案错误!未定义书签。 测试结果错误!未定义书签。 6 小结错误!未定义书签。 参考文献错误!未定义书签。 附录错误!未定义书签。 附录源程序清单错误!未定义书签。

实现加减乘除四则运算的计算器 1 概述 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 开发环境 集成环境 3 系统概要设计 系统的功能模块划分 本题目实现的模块图如图3-1所示

Java课程设计实验报告及全部源码流程图

课程设计 一、实验目的 1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 二、实验要求 1.问题描述准确、规范。 2.程序结构合理,调试数据准确、有代表性.。 3.界面布局整齐,人机交互方便。 4.输出结果正确。 5.正确撰写实验报告。 三、实验内容 编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 四、实验步骤 1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5.详细的上机实验步骤见任务分工及程序设计进度表。 五、实验结果 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。 下面是程序运行效果截图: 日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

C语言课程设计报告-模板

C语言课程设计报告 班级:16 物联网 一、题目说明 (1)读取输入信息,能正确进行数字运算

(2)拥有记忆功能,可查询最近几次计算结果并继续进行数字运算。 二、基本功能实现 (1)能实现两个数之间的加减,乘,除,乘方,开方等运算。 (2)实现记忆功能,可保留近十位结果,可用#键查看。(3)*键作为清0键,清除当前屏幕上的值为0表示重新开三、设计流程(可以画流程图,可以直接写说明)

四、代码 #include #include #include #include double yunsuan(double a, char operate, double b); //处理数值之间的运算void PutRes(double array[], double res, int *i); //保存该次运算结果 int main() { char str[40]; double a = 0; double b = 0; double res = 0; double history[10] = {0,0,0}; char opt; int i = 0; printf("欢迎进入计算功能(eg: 1 \n+ 1 ; '#':查询历史结果; 'q':退出程序)·\n"); while(1){

fgets(str,40,stdin); //将从键盘的一整行标准输入保存在字符串str中 if(sscanf(str,"%lf", &a) == 1){ //将str以长浮点型的格式放入a中,如果返回值为1,说明输入的是数值, scanf("%c %lf", &opt, &b); //获取操作符的值和另外一个操作数的值 res = yunsuan(a,opt,b); //调用yunsuan()函数计算,并将结果给res printf("%lf %c %lf = %lf\n\n",a, opt, b, res); PutRes(history, res, &i); //调用函数PutRes()将本次结果保存到数组history中(i用引用传递) // printf("%d\n", i); }else if(sscanf(str,"%c",&opt) == 1){ //将str以字符型的格式放入opt中,如果返回值为1,说明输入的是字符 if(opt == '#'){ //如果opt为‘#’,则显示history 中的数值 int j = 0; for(j = 0; j < i; ++j){ //i为history中存放的数值个数 printf(" %lf ", history[j]); } printf("\n");

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

华中科技大学计算机学院操作系统课程设计报告[1]

华中科技大学 嵌入式操作系统课程设计实验报告 院系: 计算机科学与技术学院 专业: 班级: 姓名: 指导老师: 报告时间:

计算机科学与技术学院 目录 1.课程设计目的 (3) 2.课程设计环境搭建 (3) 3.内容一:熟悉和理解Linux编程环境 3.1 内容要求 (5) 3.2 设计过程及实现 (5) 4.内容二:掌握添加系统调用的方法 4.1 内容要求 (9) 4.2 设计过程及实现 (9) 5.内容三:掌握添加设备驱动程序的方法 5.1 内容要求 (17) 5.2 设计过程及实现 (17) 6.内容四:理解和分析/proc文件 6.1 内容要求 (22) 6.2 设计过程及实现 (22)

1 课程设计目的 (1)掌握Linux操作系统的使用方法; (2)了解Linux系统内核代码结构; (3)掌握实例操作系统的实现方法。 2 课程设计环境搭建 (1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台:◎Ubuntu 11.10 (安装包:ubuntu-11.10-desktop-i386) ◎内核:linux-headers-3.0.0-12-generic (2)更改root登录: 在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法: ◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端: 初始化/修改root密码 sudo passwd root 用vi编辑器修改这个文件: sudo vi /etc/lightdm/lightdm.conf 在文件最后加入这么一行代码: greeter-show-manual-login=true 然后保存退出,sudo reboot 重启系统。之后就可以输入root用户登录。(3)在添加系统调用中用到的其他内核包: ◎下载和当前实验环境最为接近的系统版本(这点很重要) 使用apt-get install linux-source-3.0.0 命令, ◎下载结果是linux-source-3.0.0.tar.bz2 ◎解压命令:tar –xjvf linux-source-3.0.0.tar.bz2 –C /usr/src ◎解压后,在/usr/src目录下得到内核文件夹linux-source-3.0.0

c语言课程设计报告书

课程设计报告书 所属课程:c语言 项目:库函数模拟系统 指导老师:邹姝稚 班级:软件1401 姓名:江闯 学号:141403107 分数:

1.任务描述: 本系统开发的代码模拟了下列库函数的功能: (1).模拟gets和puts的功能:能接收一个字符串,将其写入ASCII文件,并且可以读出显示。 (2).在不使用字符串库函数的条件下,编程实现字符串的拷贝,连接,求长,倒置功能。 (3).字符串加密功能:将一段明文建立到一个ASCII文件中,按加密的算法加密后写入密文文件,最终实现将明文和密文文件都显示出来。 (4).编程实现字符串与对应数字的相互转换功能。 2.总体设计: 模块调用图: 图1

函数调用图: 图2 函数功能: (1)函数gp( ):模拟gets和puts的功能 (2)函数kaobei( ):实现字符串的拷贝 (3)函数lianjie( ):实现字符串的连接 (4)函数qiuchang( ):实现字符串的求长 (5)函数daozhi( ):实现字符串的倒置 (6)函数jiami( ):实现字符串的加密功能,最后将明文和密文文件都显示出来 (7)函数zhuanhuan1( ):将数字字符串转换为对应的数字 (8)函数zhuanhuan2( ):将数字转换为对应的数字字符串 3.详细设计: (1).模仿gets和puts功能: gets和puts功能与scanf和printf函数的功能相似,但是也不是完全相同,本系统模拟功能的程序总共运用了两次函数调用技术,模拟gets运用了一次,模拟puts运用了一次。 (2)..字符串的拷贝功能: 字符串的拷贝功能程序设计源于strcpy的功能,其中运用了字符串数组和指针的相关技术,还运用了一组while语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。

(新)汇编语言课程设计四则运算

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制11-2班 姓名: 倪天天 学号:2011025745 指导教师:郝维来 2013年6月28日

摘要 计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。 关键词:计算器,汇编语言,四则运算,功能模块

Abstract Calculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, the judgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator. Keyword:Calculator, assembly language, four arithmetic, functional modules

(完整版)C语言课程设计实验报告

目录 目录 (1) 第1章问题描述 (2) 1.1 题目 (2) 1.2基本要求 (2) 第2章需求分析 (2) 1.1软件的基本功能 (2) 1.2输入/输出形式 (2) 1.3测试数据要求 (3) 第3章概要设计 (3) 1.1主程序 (3) 第4章详细设计 (4) 1.1数据类型 (4) 1.2伪码算法 (4) 1.3 程序流程图 (7) 第5章操作 (8) 1.1 进入足球比赛积分排行榜界面 (8) 1.2进入目录 (8) 1.3输入球队比赛信息 (10) 1.4 显示九轮比赛排行榜 (12) 1.5 保存数据 (15) 1.6 由D 盘查看数据 (16) 第6章参考文献 (16)

第1章问题描述 1.1 题目 足球比赛积分排行榜程序 1.2基本要求 (1)10个足球队进行9轮循环赛,胜一场积3分,平一场积1分,输一场积0分。 (2)如果两个队积分相同,进行净胜球的比较,如果净胜球再相同进行总进球的比较。 (3)编写一程序输入每轮比赛的比分,并可以存储。 (4)最后统计出每轮比赛的积分榜。 第2章需求分析 1.1软件的基本功能 (1)输入10个足球队的9轮比赛进球数。 (2)计算10个球队的积分,净胜球,总进球。 (3)对9轮比赛进行排序。 1.2输入/输出形式 由键盘输入,屏幕输出,并且以TXT形式保存。

1.3测试数据要求 输入九轮比赛10个足球队的进球数,由系统统计积分、净胜球、总进球数,并输出。 第3章概要设计 1.1主程序 头文件: #include 说明:main函数的头文件,控制整个程序。 #include 说明:清屏的头文件。 #include 说明:包括了大量的函数原型,调用现成的库函数。 #include 说明:基于char*的字符串处理函数。 全局变量: void input(); 输入数据函数 void sort(); 排序数据函数 void display(); 显示数据函数 void save(); 保存数据函数

C语言课程设计实验报告4340106

《C语言课程设计》 课程设计报告 专业:网络工程 班级:网络10601 姓名:缪军 指导教师:汪北阳余法红 二00八年元月十五日

目录 系统摘要 (3) 系统设计 (4) 系统实现 (7) 系统使用说明 (11) 测试数据 (15) 结论 (18) 附录 (19)

(一)系统摘要 1.功能要求 在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,并根据以上内容计算每个学生5门课的加权平均分(保留1位小数,4舍5入),并按平均分排列名次,平均分相同则名次并列。然后显示菜单,利用菜单调用每个函数,完成如下功能:1)用C语言创建一个数据文件,文件名为:“MC0116”。用来存放班级排名后的成绩, 2)分别统计全班每门课的平均分和标准差,并计算个分数段的学生人数; 课程标准差的计算公式为: Y= s^2=1/n[(x1-m)^2+(x2-m)^2+...+(xn-m)^2] 3)用C语言创建一个数据文件,文件名为:“KC0116”。将文件中存放的数据以如下形 式存放

4)打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名为:“cj0116”。成绩条格式自定。 5)屏幕上显示所有存在不及格的课程的学生的名单(含学号、不及格的课程名称、课程的学分及成绩)。 6)屏幕上显示优等生名单(含学号、6门课程成绩、平均分、名次)。 (二)系统设计 准备工作: 编写两个记事本文件作为原始数据源。 本程序中建立两个文件,第一个中的内容是全班同学的5功课的成绩(英语,C语言,数学,大学物理,线性代数),保存在D盘下,其完整的路径名为D: \wl0116.txt.第二个中的内容是所有的五门功课的属性(编号,名称,学分),同样保存在D盘下内,起完整的路径名为D: \wl01kc.txt. 1.系统功能模块框架图 2.菜单结构图。 3.数据结构说明 /* 学生结构体*/ struct student { long num; /* 学号*/ char name[20]; /* 姓名*/ int score[N]; /* 各科分数构成的一维数组*/ double ave; /* 每名学生所有科目的加权平均分*/ int t; /* 名次*/ }st[M]; struct subject { int num; /* 课程编号*/ int excellent; /* 成绩优秀*/ int good; /* 成绩良好*/ int mid; /* 成绩中等*/ int pass; /* 成绩及格*/ int fail; /* 不及格*/ char kc[30]; /* 课程名称*/ float xuefen; /* 课程学分*/ double ave; /* 课程平均分*/ double bzc; /* 课程标准差*/ }course[N];

相关文档
最新文档