c语言实验设备管理系统
- 格式:doc
- 大小:124.00 KB
- 文档页数:15
机房收费管理系统c语言机房收费管理系统是一种用于管理机房收费的软件系统,主要用于对机房的学生进行收费管理。
该系统采用C语言进行开发,具有操作简单、功能齐全、界面友好等特点。
一、系统功能1. 学生信息管理:包括学生基本信息的录入、修改和删除等功能。
2. 收费管理:包括学生缴纳费用的记录、查询和统计等功能。
3. 机房设备管理:包括机房设备的添加、修改和删除等功能。
4. 系统设置:包括管理员账号密码的设置和修改等功能。
二、系统设计1. 数据库设计该系统采用MySQL数据库进行数据存储,数据库中包含以下数据表:(1)学生信息表:存储学生基本信息,包括学号、姓名、性别、年龄等字段。
(2)缴费记录表:存储学生缴纳费用的记录,包括学号、姓名、缴纳金额等字段。
(3)机房设备表:存储机房设备信息,包括设备名称、数量等字段。
(4)管理员账号表:存储管理员账号密码信息,包括管理员账号和密码字段。
2. 界面设计该系统采用图形界面进行交互设计,主要界面如下:(1)登录界面:管理员输入用户名和密码登录系统。
(2)主界面:包括学生信息管理、收费管理、机房设备管理和系统设置等功能按钮。
(3)学生信息管理界面:包括学生基本信息的录入、修改和删除等功能按钮。
(4)收费管理界面:包括学生缴纳费用的记录、查询和统计等功能按钮。
(5)机房设备管理界面:包括机房设备的添加、修改和删除等功能按钮。
3. 系统实现该系统采用C语言进行开发,主要实现技术如下:(1)MySQL数据库连接库:使用MySQL C API库连接数据库进行数据存储操作。
(2)GTK+图形库:使用GTK+图形库进行图形界面设计和交互操作。
(3)C语言编程技术:使用C语言进行程序编写和逻辑实现。
三、系统测试该系统经过多次测试,测试结果表明该系统具有较好的稳定性和可靠性,能够满足机房收费管理的需求。
同时,该系统还具有良好的用户体验,操作简单易懂,界面友好美观。
四、总结机房收费管理系统是一种用于管理机房收费的软件系统,采用C语言进行开发。
C语言嵌入式操作系统裸机和RTOS C语言嵌入式操作系统裸机与RTOS嵌入式操作系统(Embedded Operating System,简称EOS)是一种专为嵌入式设备设计的操作系统,它具有小巧、高效、实时等特点。
而裸机编程是指在嵌入式系统中,直接与硬件进行交互编程的方式,不依赖于任何操作系统。
RTOS(Real-time Operating System,实时操作系统)是一种提供实时响应的操作系统,针对嵌入式系统而设计。
本文将介绍C语言嵌入式操作系统裸机编程和RTOS编程的基础知识和技巧。
一、裸机编程入门在进行裸机编程之前,我们需要了解硬件平台的相关信息,包括处理器型号、寄存器、外设等。
然后,我们可以通过配置寄存器来初始化硬件设备,设置中断服务程序,并编写具体的功能代码。
在裸机编程中,我们需要注意时间分片、中断处理和资源管理等问题。
二、裸机编程与RTOS的区别1. 复杂性:裸机编程相对简单,因为我们可以直接访问硬件资源。
而RTOS编程需要考虑任务调度、资源互斥、消息传递等复杂的操作系统特性。
2. 实时性:RTOS可以提供更好的实时性能,可以用于要求较高实时响应的应用场景。
而裸机编程的实时性取决于程序的具体实现。
3. 可移植性:裸机编程通常与特定的硬件平台绑定,不具备通用的可移植性。
而RTOS提供了抽象层,可以将应用程序与底层硬件解耦,提高了可移植性。
三、RTOS编程基础1. 任务管理:RTOS允许将应用程序划分为多个任务,并通过任务调度器进行管理。
每个任务执行特定的功能,实现任务之间的并发执行。
2. 中断处理:RTOS提供了中断处理机制,可以对不同的中断进行响应和处理。
中断处理程序可以与任务同时运行,保证了系统的实时性。
3. 时间管理:RTOS提供了时间管理功能,可以进行时间片轮转调度、优先级调度等,确保任务按照预定的时间顺序执行。
4. 同步与互斥:RTOS提供了信号量、互斥锁等机制,用于管理共享资源的访问。
《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.要求:使用文件方式存储数据。
C语言设备驱动编程入门C语言设备驱动编程是一项常见的技术,用于编写操作系统的设备驱动程序。
设备驱动程序是操作系统与硬件设备之间的桥梁,它负责将用户操作转化为硬件设备能够理解和执行的指令。
本文将介绍C语言设备驱动编程的基本概念和入门知识,帮助读者了解并入门这一重要的编程技术。
一、设备驱动程序概述设备驱动程序是操作系统的一部分,它与操作系统内核紧密结合,用于实现对硬件设备的控制和管理。
设备驱动程序通常由硬件设备制造商提供,或者由操作系统开发者开发。
它负责处理硬件设备与操作系统之间的通信,使得用户能够方便地操作硬件设备。
设备驱动程序可以分为字符设备驱动和块设备驱动两种类型。
字符设备驱动用于处理流式数据的设备,如键盘、鼠标等;块设备驱动用于处理以块为单位的数据的设备,如硬盘、U盘等。
不同类型的设备驱动程序在实现上有所不同,但都需要用C语言编写。
二、设备驱动程序的基本结构设备驱动程序的基本结构包括设备初始化、设备打开、设备关闭和设备读写等函数。
下面我们逐步介绍这些函数的作用和实现方法。
1. 设备初始化函数设备初始化函数负责对设备进行初始化,包括设备的寄存器配置、中断设置等。
在这个函数中,我们需要了解硬件设备的相关规格和特性,并根据需要进行适当的配置。
2. 设备打开函数设备打开函数在设备被用户程序打开时被调用,它负责向操作系统申请资源,并进行相应的设置,例如打开文件、分配内存等。
3. 设备关闭函数设备关闭函数在设备被用户程序关闭时被调用,它负责释放设备所占用的资源,如释放文件占用的内存、关闭文件等。
4. 设备读写函数设备读写函数是设备驱动程序的核心部分,它负责设备与用户程序之间的数据交换。
设备读函数用于从设备中读取数据,设备写函数用于向设备中写入数据。
三、设备驱动程序的编写步骤编写设备驱动程序需要经过以下几个步骤:1. 了解硬件设备在编写设备驱动程序之前,我们需要详细了解硬件设备的规格和特性,包括硬件寄存器的地址、中断向量等。
《C语言程序设计课设》课程设计指导书一、课程设计的目的(1)加深对讲授内容的理解,尤其是一些语法规则。
(2)熟悉C语言程序设计的结构化编程的思想,掌握数据的基本类型、自定义类型、函数、文件和指针等知识,能运用这些知识进行综合编程,熟练应用。
(3)能够综合运用所学知识,编程解决实际问题。
(4)培养团队分工合作的意识,最终使学生提高编程技能和解决实际问题的能力。
二、课程设计基本要求2.1.组织管理1.由院、系指派经验丰富的专业教师担任指导教师。
2.课程设计实行课程负责人与指导教师共同负责制。
3.课程负责人主要进行课设的命题、指导教师的考核、技术把关和全面管理。
4.指导教师全面负责所承担班级的课程设计指导、管理和考核评定工作。
2.2设计要求1.自选题目、小组管理、团队合作、小组评测。
2.模块化程序设计。
3.锯齿型书写格式。
4.必须上机调试通过。
三、选题要求:每个题目限定1-2人,每人必须负责一部分功能,并独立完成,推举出一个组长,负责任务分工,汇总到班长处,然后交给指导教师。
四、设计报告格式及要求:1、题目2、设计目的3、总体设计(程序设计组成框图、流程图)4、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)5、运行结果及分析6、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施7、课程设计心得及体会8、源程序清单和执行结果:清单中应有足够的注释五、课程设计成绩评定5.1基本要求:(1)每个人必须有程序运行结果;(2)每个人必须交《C语言课程设计》报告5.2、成绩评定和打分标准由指导教师对学生在课程设计期间的表现,所完成的设计报告的质量、设计结果的验收和答辩情况进行综合考核。
具体评定标准如下:(1)上机考勤:注重平时上机考勤与遵守纪律情况20%(2)结果验收:学生能运行、讲述或调试自己的程序,回答教师提问,每个人必须有程序运行结果40%(3)小组自评成绩结果10%(4)设计报告:每个人必须交《C语言课程设计》报告和《C语言课程设计》日志30%以上四项缺一不可,否则不能到得相应学分依据上述考核内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五级记分制评定学生课程设计成绩。
c语言课程设计学生学籍管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法,培养学生编写结构化程序的能力,使学生能够运用C语言实现简单的学生学籍管理系统。
通过本课程的学习,学生将能够:1.知识目标:–理解C语言的基本数据类型、运算符和表达式;–掌握函数的定义和调用,理解局部变量和全局变量的概念;–熟悉控制结构,如if语句、for循环和while循环;–了解数组、字符串和指针的基本使用方法。
2.技能目标:–能够使用C语言编写简单的程序,解决实际问题;–掌握基本的调试技巧,能够找出并修复程序中的错误;–具备阅读和理解他人代码的能力。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生的自主学习能力;–培养学生团队协作的精神,增强学生的沟通能力;–培养学生解决问题的能力,提高学生的创新意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基本语法:数据类型、运算符、表达式、函数、局部变量和全局变量等;2.控制结构:if语句、for循环、while循环等;3.数据结构:数组、字符串、指针等;4.学生学籍管理系统的实现:学生信息的添加、删除、修改和查询等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学:1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生理解并掌握C语言在学生学籍管理系统中的应用;3.实验法:让学生动手编写代码,实现学生学籍管理系统的功能,提高学生的实际操作能力。
四、教学资源本课程的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言 Primer》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络等。
以上教学资源将有助于实现本课程的教学目标,提高学生的学习效果。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
第1篇一、实验背景与目的随着计算机技术的飞速发展,操作系统对硬件设备的支持越来越丰富。
设备驱动程序作为操作系统与硬件之间的桥梁,扮演着至关重要的角色。
本实验旨在通过学习Linux字符设备驱动的开发,加深对设备驱动程序的理解,提高实践能力。
二、实验环境与工具1. 操作系统:Linux Ubuntu 20.042. 编程语言:C3. 开发工具:gcc、make4. 驱动框架:Linux内核三、实验内容本实验主要完成以下内容:1. 字符设备驱动程序的基本框架2. 字符设备的打开、读取、写入和关闭操作3. 字符设备驱动的注册与注销4. 字符设备驱动的用户空间交互四、实验步骤1. 创建设备文件首先,我们需要在`/dev`目录下创建一个名为`mychar`的字符设备文件。
可以使用以下命令:```bashmknod /dev/mychar c 123 0```其中,`123`是主设备号,`0`是次设备号。
2. 编写字符设备驱动程序创建一个名为`mychar.c`的文件,并编写以下代码:```cinclude <linux/module.h>include <linux/fs.h>include <linux/uaccess.h>static int major = 123; // 设备号static int device_open(struct inode inode, struct file filp);static int device_release(struct inode inode, struct file filp);static ssize_t device_read(struct file filp, char __user buf, size_t count, loff_t pos);static ssize_t device_write(struct file filp, const char __user buf, size_t count, loff_t pos);static struct file_operations fops = {.open = device_open,.release = device_release,.read = device_read,.write = device_write,};static int __init mychar_init(void) {major = register_chrdev(0, "mychar", &fops);if (major < 0) {printk(KERN_ALERT "mychar: can't get major number\n");return major;}printk(KERN_INFO "mychar: registered correctly with major number %d\n", major);return 0;}static void __exit mychar_exit(void) {unregister_chrdev(major, "mychar");printk(KERN_INFO "mychar: Goodbye from the LKM!\n");}static int device_open(struct inode inode, struct file filp) {printk(KERN_INFO "mychar: Device has been opened\n");return 0;}static int device_release(struct inode inode, struct file filp) {printk(KERN_INFO "mychar: Device has been closed\n");return 0;}static ssize_t device_read(struct file filp, char __user buf, size_t count, loff_t pos) {printk(KERN_INFO "mychar: Device has been read\n");return count;}static ssize_t device_write(struct file filp, const char __user buf, size_t count, loff_t pos) {printk(KERN_INFO "mychar: Device has been written\n"); return count;}module_init(mychar_init);module_exit(mychar_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("Your Name");MODULE_DESCRIPTION("A simple character device driver");```保存文件,并使用以下命令编译:```bashmake```3. 加载字符设备驱动程序将编译生成的`mychar.ko`文件加载到内核中:```bashinsmod mychar.ko```4. 测试字符设备驱动程序使用以下命令查看`/dev/mychar`设备文件:```bashls -l /dev/mychar```使用`cat`命令测试读取和写入操作:```bashcat /dev/mycharecho "Hello, world!" > /dev/mychar```观察系统日志,确认驱动程序的打开、读取、写入和关闭操作。
电影管理系统课程设计C语言一、教学目标本课程的目标是让学生掌握使用C语言设计电影管理系统的基本知识和技能。
通过本课程的学习,学生将能够理解C语言的基本语法和数据结构,掌握电影管理系统的需求分析和设计方法,以及实现电影管理系统的核心功能。
具体来说,知识目标包括:1.掌握C语言的基本语法和数据结构。
2.理解电影管理系统的基本需求和设计方法。
技能目标包括:1.能够使用C语言编写简单的程序。
2.能够根据需求分析,使用C语言实现电影管理系统的核心功能。
情感态度价值观目标包括:1.培养学生对计算机编程的兴趣和热情。
2.培养学生解决问题的能力和团队合作的精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法和数据结构,电影管理系统的设计和实现。
具体安排如下:1.C语言的基本语法和数据结构:包括变量、数据类型、运算符、控制结构、函数等。
2.电影管理系统的设计和实现:包括需求分析、系统设计、核心功能的实现等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:用于讲解C语言的基本语法和数据结构,以及电影管理系统的设计和实现方法。
2.讨论法:用于引导学生讨论和思考电影管理系统的需求分析和设计方法。
3.案例分析法:通过分析实际的电影管理系统案例,帮助学生理解和掌握系统的实现方法。
4.实验法:让学生动手编写代码,实现电影管理系统的核心功能。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选择合适的C语言和电影管理系统相关教材,用于引导学生学习。
2.参考书:提供相关的参考书籍,帮助学生深入理解C语言和电影管理系统。
3.多媒体资料:制作和收集与课程内容相关的多媒体资料,如PPT、视频等,用于辅助教学。
4.实验设备:准备计算机和相关设备,供学生进行编程实验和实践。
五、教学评估为了全面反映学生的学习成果,本课程将采用多种评估方式,包括平时表现、作业和考试等。
C语言项目实例项目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)---输入学生信息浏览功能---输出查询、排序功能---算法按学号查询、按姓名查询、学生信息的删除与修改(可选项)(2)功能要求界面比较美观;有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;最好用链表的方式实现。
(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
项目2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
提示:学生信息可先输入到数组中,排序后可写到文件中。
(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。
课程设计报告教学设备管理系统姓名:徐少鹏学院:信息科学与工程学院专业:电气信息类班级:1032班学号:0909103227指导教师:雷琪概述通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。
本系统有分9个功能:(1)输入数据(2)显示数据(3)修改数据(4)查找数据(5)删除数据(6)恢复数据(7)添加数据(8)统计数据(9)保存数据等.总体设计方案一.系统的总体流程图图1.系统的总体流程图1.菜单模块:显示教学设备管理系统的主菜单,供用户选择所需的功能,通过自己定义的menu()函数来实现。
2.输入模块:输入教学设备名称,编号,产地,购置日期,台数,单价,金额等的相关信息,通过自己定义的input()函数来实现。
3.显示模块:显示输入后保存的全部信息。
通过自己定义的display()函数来实现。
4.修改模块:可以修改任意编号的录入的信息。
通过自己定义的modify()函数来实现。
5.查找模块:可以按编号查询教学设备信息,通过自己定义的search ()函数来实现。
6.删除模块:删除需要删除的教学设备记录,通过自己定义的delete1()函数来实现。
7.恢复模块:恢复被删除的教学设备记录,通过自己定义的recovery()函数来实现。
8.添加模块:添加需要添加的教学设备的相关信息,通过自己定义的add()函数来实现。
9.统计模块:统计在(0,200)(200,800)(800,+∞)区间内的设备台数,通过自己定义的count()函数来实现。
10.保存和打开:通过自己定义的save()函数和open()函数来实现。
11.退出系统模块:退出教学设备管理系统,通过头文件windows.h中的exit(0)函数来实现。
程序源代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{char id[10];char name[15];char cd[10];char rq[10];int ts;int dj;int je;char bz[10];}SB;SB s[10]; //结构体数组SB all[10]; //接受二进制文件整体赋值的结构体数组SB d[10]; //存放被删除的记录的结构体数组(回收站) int length=0;int k=0; //回收站中的记录个数char fname[10]; //用户定义文件名int menu();int input();int display();int delete1();int deletef(int local);int search();int modify();int modifyf(int i);int home();int showsingle(int);int add();int recovery();int count();int save();int open();int main(){int i;home();while (1){system("cls");i=menu();if (i==0) {printf("\n请按仸意键退出\n");return 1;} if (i==1) {input();system("cls");}if (i==2) {display();system("cls");}if (i==3) {modify();system("cls");}if (i==4) {search();system("cls");}if (i==5) {delete1(); system("cls");}if (i==6) {recovery();system("cls");}if (i==7) {add();system("cls");}if (i==8) {count();system("cls");}if (i==9) {save();system("cls");}if (i==10){open();system("cls");}}return 1;}int home(){system("cls");printf(" \n\n\n\n\n\n\n");printf(" 中南大学\n\n");printf(" 教学设备管理系统\n\n\n\n"); printf(" 请按Enter键进入\n\n\n\n"); printf(" 电气1029班0909103227 徐少鹏\n\n"); while (getchar()!='\n');return 1;}int menu() /*定义界面函数*/{int flag=0;printf(" \n\n\n\n\n\n\n");printf(" 中南大学教学设备管理\n");printf(" ********************************************\n");printf(" | 1 输入记录 2 显示记录|\n");printf(" | 3 修改记录 4 查找记录|\n");printf(" | 5 删除记录 6 恢复记录|\n");printf(" | 7 添加记录8 统计|\n");printf(" | 9 保存10 打开|\n");printf(" | 0 退出|\n");printf(" ********************************************\n");printf(" 请输入0-10:");scanf("%d",&flag); /*输入要执行的功能前的数字*/return flag;}int input() /*输入数据*/{int num,i;printf("\n请输入你想创建的记录个数:");scanf("%d",&num);printf("\n");for (i=0;i<num;i++){printf("设备编号:");scanf("%s",&s[length].id);printf("设备名称:");scanf("%s",&s[length].name);printf("产地:");scanf("%s",&s[length].cd);printf("购置日期:");scanf("%s",&s[length].rq);printf("台数:");scanf("%d",&s[length].ts);printf("单价:");scanf("%d",&s[length].dj);printf("金额:");scanf("%d",&s[length].je);printf("备注:");scanf("%s",&s[length].bz);printf("\n");++length; /*结构体数组长度增加1*/}system("pause");return 1;}int showsingle(int i){printf(" 设备编号设备名称产地购置日期台数单价金额备注\n");printf("%8s %11s %6s %11s %5d %7d %10d %7s\n",s[i].id,s[i].name,s[i].cd,s[i].rq,s[i].ts,s[i].dj,s[i].je,s[i].bz);return 1;}int display() //定义显示函数{int i;printf(" 设备编号设备名称产地购置日期台数单价金额备注\n");for(i=0;i<length;i++)printf("%8s %11s %6s %9s %5d %7d %8d %6s\n",s[i].id,s[i].name,s[i].cd,s[i].rq,s[i].ts,s[i].dj,s[i].je,s[i].bz);system ("pause");return 1;}int modify() /*定义修改函数*/{char name[30];int i,n;printf("输入要修改的设备编号:");scanf("%s",name);printf("\n");for(i=0;i<length;i++){if(strcmp(s[i].id,name)==0)n=modifyf(i); /*调用确认修改函数*/ }printf("\n");if (n!=1) printf("对不起,该设备不存在\n\n");system("pause");return 1;}int modifyf(int i) /*定义确认修改函数*/{showsingle(i);printf("\n请输入修改后的数据:\n\n");printf("设备名称:");scanf("%s",&s[i].name);printf("产地:");scanf("%s",&s[i].cd);printf("购置日期:");scanf("%s",&s[i].rq);printf("台数:");scanf("%d",&s[i].ts);printf("单价:");scanf("%d",&s[i].dj);printf("金额:");scanf("%d",&s[i].je);printf("备注:");scanf("%s",&s[i].bz); /*逐个修改该职工信息,只修改了基本工资,待修改*/ printf("\n");printf("修改结果如下:\n\n");showsingle(i);return 1;}int search() /*定义查找函数*/{int i,n;printf("请输入要查询的设备编号:");scanf("%s",name);printf("\n");for(i=0;i<length;i++){if(strcmp(s[i].id,name)==0) /*调用字符串比较函数若employee[i]中的名字和要查找的人同名,则输出他的信息*/n=showsingle(i);}printf("\n");if (n!=1) printf("对不起,该设备尚未存在记录\n\n");system ("pause");return 1;}int delete1() /*定义删除记录函数*/{int i,n;printf("请输入要删除的设备编号:");scanf("%s",name);for(i=0;i<length;i++){if(strcmp(s[i].id,name)==0) /*调用字符串比较函数若employee[i]中的名字和要删除的人相同,则执行删除函数deletef(i)*/n=deletef(i);}printf("\n");if (n!=1) {printf("对不起,该设备尚未存在记录\n\n");system("pause");}return 1;}int deletef(int local) /*定义确认删除函数*/{int i;d[k]=s[local]; //结构体整体赋值k++;for(i=local;i<length;i++){strcpy(s[i].id,s[i+1].id);strcpy(s[i].name,s[i+1].name);strcpy(s[i].cd,s[i+1].cd);strcpy(s[i].rq,s[i+1].rq);s[i].ts=s[i+1].ts;s[i].dj=s[i+1].dj;s[i].je=s[i+1].je; /*从删除的职工开始把后一个职工的所有数据依次赋给前一个职工*/strcpy(s[i].bz,s[i+1].bz);}length--; /*结构体数组长度减1*/printf("\n删除成功\n");printf("\n删除后结果如下:\n");display();return 1;}int recovery(){char name[30];int i,n;printf("\n请输入要恢复的设备编号:");scanf("%s",name);for(i=0;i<k;i++){if(strcmp(d[i].id,name)==0){s[length]=d[i];length++;n=1;printf("\n恢复成功\n"); //需修正,不能无限次恢复,应只恢复一次,而且应修复到被删除的地方printf("\n恢复后结果如下:\n");display();}}printf("\n");if (n!=1){printf("对不起,该设备尚未存在记录\n\n");system("pause");}return 1;}int add (){printf("设备编号:");scanf("%s",&s[length].id);printf("设备名称:");scanf("%s",&s[length].name);printf("产地:");scanf("%s",&s[length].cd);printf("购置日期:");scanf("%s",&s[length].rq);printf("台数:");scanf("%d",&s[length].ts);printf("单价:");scanf("%d",&s[length].dj);printf("金额:");scanf("%d",&s[length].je);printf("备注:");scanf("%s",&s[length].bz);printf("\n");++length; /*结构体数组长度增加1*/ printf("\n添加后结果如下:\n");display();return 1;}int count (){int i,zts=0,zje=0,num1=0,num2=0,num3=0,num4=0,num5=0,num6=0;printf(" 设备编号设备名称产地购置日期台数单价金额备注\n");for(i=0;i<length;i++)printf("%8s %11s %6s %9s %5d %7d %8d %6s\n",s[i].id,s[i].name,s[i].cd,s[i].rq,s[i].ts,s[i].dj,s[i].je,s[i].bz);for (i=0;i<length;i++) zts+=s[i].ts;for(i=0;i<length;i++) zje+=s[i].je;printf(" 合计%34d %16d \n",zts,zje);for(i=0;i<length;i++){if (s[i].dj<200){num1+=s[i].ts;num2+=s[i].je;}if (200<=s[i].dj&&s[i].dj<800){num3+=s[i].ts;num4+=s[i].je;}if (s[i].dj>=800){num5+=s[i].ts;num6+=s[i].je;}}printf("\n单价在200 元以下的设备总台数为%4d,总金额为%d\n",num1,num2);printf("\n单价在200~800 元的设备总台数为%4d,总金额为%d\n",num3,num4);printf("\n单价在800 元以上的设备总台数为%4d,总金额为%d\n",num5,num6);system("pause");return 1;}int save(){FILE *fout;printf("\n请为您保存的文件命名:");scanf("%s",fname);fout=fopen(fname,"wb"); //文件名为fname,数组名,无双引号fwrite(s,sizeof(SB),length,fout);fclose(fout);printf("\n保存成功\n\n");system("pause");return 1;}int open(){FILE *fout;char fname2[10];int i,n,j;printf("\n请输入您想打开的文件名:"); //文件名有问题scanf("%s",fname2);if ((fout=fopen(fname2,"rb"))!=NULL){if (length==0){for (j=0;j<10;j++){fread(&all[j],sizeof(SB),1,fout);if(all[j].dj!=0) length++;}fclose(fout);n=1;}else{fread(all,sizeof(SB),length,fout); //结构体数组all接受二进制整体赋值,并通过该数组输出//退出程序再次打开时length为0,所以没有读入数据fclose(fout);n=1;}else{printf("\n您输入的文件名不存在\n\n");system("pause");}if (n==1){for (i=0;i<10;i++) s[i]=all[i];display();}return 1;}参考文献《C语言程序设计(第二版)》;网络资源;同学帮助等。
课程设计说明书学院、系:专业:学生姓名:学号:设计题目:实验设备管理系统起迄日期:指导教师:日期: 2017年5月12日1.设计目的练习与巩固《C语言程序设计》理论知识,通过实践检验和提高实际能力,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写调试应用程序和进行其它相关设计的技能。
2.任务概述要求实验设备管理系统实现对实验设备基本信息(设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期等)的管理。
系统应给用户提供一个操作简便的人机界面,使用户可以通过菜单的方式来方便的调用提供的功能。
主要功能(1)完成对设备信息的录入函数(2)完成修改某个设备信息的函数(3)根据给定信息对设备进行分类统计(4)设备的破损耗费和遗损处理(5)设备的查询3 模块划分功能[1]:添加新的设备信息功能[2]: 统计设备数量功能[3]:查找符合条件的设备及其数量功能[4]:对设备信息按条件进行分类排序功能[5]:修改设备信息功能[6]:删除某条设备记录图3.1功能图图3.2 菜单图4 主要函数说明及其N-S录入设备信息的N-S 图,如下图所示实验设备管理系统添加设备信息修改设备信息查询设备信息删除设备信息显示设备信息统计设备信息退出系统(1)查找search()图4.4 查找操作N-S图(2)分类sort()按某种条目进行分类也是需要通过查找相同,但不同的是条目的具体内容是不确定的,只是把条目内容相同的部分进行排序使其归类在一起,使用了冒泡排序法。
由于是使用字符串,所以排序的依据是根据ASCII码顺序。
图4.5 分类N-S图图4.5 分类N-S图(3)删除delect()读取文件内容,但读写时跳过需要删除的行不读,然后把读取出的内容重新写入文件int i,j; char c[20];printf("\nenter you want delete name :\n");for(i=0;i<count;i++)if(strcmp(c,dev[i].devname)==0)Y Nfor(j=i;j<count-1;j++)dev[j]=dev[j+1];printf("\t\t\tyou had delete %s\n",c);count--;output();图4.6 删除N-S图5 程序运行数据及其结果(1) 录入input()图5.1 显示内容界面图(2) 修改change()图5.2 修改界面图修改后显示图5.3 修改结果(3)删除delect()图5.4 删除界面删除后图5.5 删除结果(4)添加图5.6 添加前图5.7 添加后(5)查找check()图5.8 界面图5.9 查找结果(6)分类sort()图5.10 分类界面图5.11 分类结果6 课程设计心得这次课程设计遇到了很多问题,有的是文档格式的设置不符合要求,有的是编译的代码运行不出来,于是又翻出了上学期的C语言书籍温习有关知识。
划分功能模块时,对于实验设备方面的知识欠缺,于是在网上查找了相关知识,结合网上热心网友提供的资源。
完成了这一步。
一个功能对应一个函数,有些函数比较复杂,请教了其他同学并结合网上的例子完成了编写。
第一次修改说明书之前,对于N-S图的画法不是太熟悉,于是用了流程图,后来班长多次强调才改成了N-S图,看了看班长在群里发的例子,又结合书上的说明,完成了N-S图。
文档格式的设置主要通过网上的教程来完成。
对于一名新手来说,网上做图并不是一件容易的事,刚开始不是错位就是字体太大,有时候修改了文本图又飞到了下一页。
一次次的修改后总算积攒了一些经验,后来画多了总算能够比较快而准确的画出来。
C语言是一门实践性较强的课程,只学会书本上的知识是远远不够的,还需要实训来巩固知识并让我们学会运用。
C语言也是软件工程后期学习的基础语言,因此必须学好C语言。
一名优秀的程序员,不仅要掌握编程方面的知识,还应该学会怎样使用办公软件。
附录:#include "stdio.h"#include "stdlib.h"#include "cstring"#define COUNT 30void start(); //函数声明void input();void change();void sort();void dele();void output();void search();struct deviceInfor{char devno[30];int devsort; //1 代表微机 2代表打印机 3代表扫描机char devname[30];int devprice;char devbuydate[30];int devstate;char devdonedate[30];}dev[COUNT];int count=0;main() //主函数{while(1)start();}void start() //启动菜单{int chi;printf(" 实验设备管理系统\n");printf("|-----------------------------------------------|\n");printf(" |******************************************** |\n");printf(" | 1.设备信息的录入: |\n");printf(" | 2.设备信息的修改: |\n");printf(" | 3.设备信息的分类统计: |\n");printf(" | 4.删除某个设备: |\n");printf(" | 5.查找某个设备: |\n");printf(" | 6.退出系统: |\n");printf(" |******************************************** |\n");printf("|-----------------------------------------------|\n");printf(" 输入你的选择: ");scanf("%d",&chi);//printf("\n");if(chi==1) input();else if(chi==2) change();else if(chi==3) sort();else if(chi==4) dele();else if(chi==5) search();else if(chi==6) { printf("你已经退出设备管理系统!\n"); exit(0);}else { printf(" You Enter The Choice Is Not valid ! \n"); }void input() //数据录入{char flag[20];do{printf("请输入你的设备信息:\n");printf("设备编号:");scanf("%s",dev[count].devno);printf("设备种类(1 代表微机 2代表打印机 3代表扫描机):");scanf("%d",&dev[count].devsort);printf("设备名字:");scanf("%s",dev[count].devname);printf("设备价格:");scanf("%d",&dev[count].devprice);printf("设备购买日期:");scanf("%s",dev[count].devbuydate);printf("设备状态(1未报废 0报废):");scanf("%d",&dev[count].devstate);printf("设备报废日期:");scanf("%s",dev[count].devdonedate);count++;printf("是否继续输入数据 y是 n否 : ");scanf("%s",flag);}while(strcmp(flag,"y")==0||strcmp(flag,"Y")==0);output();void change() //数据修改{char ch[20],a[20];int i;printf("\nyou sure want change devInfor y/n): "); scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){ printf("\nenter you want change devName:");scanf("%s",a);for(i=0;i<count;i++){if(strcmp(dev[i].devname,a)==0){ printf("\nyou sure want change dev name(y/n): "); scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){ printf("\nname:"); scanf("%s",dev[i].devname);}printf("\nyou sure want change dev no(y/n): "); scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){ printf("\nno"); scanf("%s",dev[i].devno);}printf("\nyou sure want change dev sort(y/n): "); scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){ printf("\nsort"); scanf("%d",&dev[i].devsort);}printf("\nyou sure want dev price(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){ printf("\nprice"); scanf("%d",&dev[i].devprice);}printf("\nyou sure want dev done date(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){ printf("\ndone date"); scanf("%s",dev[i].devdonedate);}}}}output();}void sort() //数据分类显示{int i,chi,sum=0,wei=0,da=0,sao=0;printf("输入你想要统计的信息: 1(报废的机器总数) 2(机器的总类数目)");scanf("%d",&chi);if(chi==1) {for(i=0;i<count;i++) {if(dev[i].devstate==0) sum++;}printf("报废的机器数目为 %d \n",sum);}else if(chi==2){for(i=0;i<count;i++) {if(dev[i].devsort==1) wei++;else if(dev[i].devsort==2) da++;else if(dev[i].devsort==3) sao++;}printf("微机数目为%d 打印机数目为%d 扫描机数目为 %d",wei,da,sao);}else { printf("你输入的选项不符合要求!\n");}}void dele() //数据删除{int i,j;char c[20];printf("\nenter you want delete name :\n");printf("name:");scanf("%s",c);for(i=0;i<count;i++)if(strcmp(c,dev[i].devname)==0) break;for(j=i;j<count-1;j++)dev[j]=dev[j+1];printf("\t\t\tyou had delete %s\n",c);count--;output();}void output() //数据输出{int i;for(i=0;i<count;i++){printf("%s %d %s %d %s %d %s\n",dev[i].devno,dev[i].devsort,dev[i].devname,dev[i].devprice,dev[i].devbuydate,dev[i].devstate,dev[i].devdon edate);}}void search() //数据查找{int i;char a[20],ch[10];printf("\nenter you want look name:");scanf("%s",a);for(i=0;i<count;i++)if(strcmp(dev[i].devname,a)==0)printf("%s %d %s %d %s %d %s\n",dev[i].devno,dev[i].devsort,dev[i].de vname,dev[i].devprice,dev[i].devbuydate,dev[i].devstate,dev[i].devdon edate);}。