c语言人机界面
1. 求用c语言实现FFT变换的程序(见下面)
你好,这是我的回答,希望可以帮到你。
1)结果讨论
一,如果对信号进行同样点数N的FFT变换,采样频率fs越高,则可以分析越高频的信号;与此同时,采样频率越低,对于低频信号的频谱分辨率则越好。
二,假设采样点不在正弦信号的波峰、波谷、以及0电压处,频谱则会产生泄露(leakage)。
三,对于同样的采样率fs,提高FFT的点数N,则可提高频谱的分辨率。
四,如果采样频率fs小于2倍信号频率2*fs(奈圭斯特定理),则频谱分析结果会出错。
五,对于(二)中泄露现象,可以通过在信号后面补零点解决。
2)程序及注解如下
%清除命令窗口及变量
clc;
clear all;
%输入f、N、T、是否补零(补几个零)
f=input('Input frequency of the signal: f\n');
N=input('Input number of pointsl: N\n');
T=input('Input sampling time: T\n');
flag=input('Add zero too sampling signal or not? yes=1 no=0\n');
if(flag)
ZeroNum=input('Input nmber of zeros\n');
else
ZeroNum=0;
end
%生成信号,signal是原信号。signal为采样信号。
fs=1/T;
t=0:0.00001:T*(N+ZeroNum-1);
signal=sin(2*pi*f*t);
t2=0:T:T*(N+ZeroNum-1);
signal2=sin(2*pi*f*t2);
if (flag)
signal2=[signal2 zeros(1, ZeroNum)];
end
%画出原信号及采样信号。
figure;
subplot(2,1,1);
plot(t,signal);
xlabel('Time(s)');
ylabel('Amplitude(volt)');
title('Singnal');
hold on;
subplot(2,1,1);
stem(t2,signal2,'r');
axis([0 T*(N+ZeroNum) -1 1]);
%作FFT变换,计算其幅值,归一化处理,并画出频谱。
Y = fft(signal2,N);
Pyy = Y.* conj(Y) ;
Pyy=(Pyy/sum(Pyy))*2;
f=0:fs/(N-1):fs/2;4
subplot(2,1,2);
bar(f,Pyy(1:N/2));
xlabel('Frequency(Hz)');
ylabel('Amplitude');
title('Frequency compnents of signal');
axis([0 fs/2 0 ceil(max(Pyy))])
grid on;
祝你好运!
我可以帮助你,你先设置我最佳答案后,我网络Hii教你。
2. 用C语言设计一个学生信息查询系统程序
1、首先创建一个c语言项目。然后旁汪者右键头文件,创建一个Stu的头文件。
3. 人机界面属于哪个库
python库之图形用户界面
Python库之游戏开发
Python库之虚拟现实
Python库之图形艺术
二、Python库之图形用户界面
2.1 PyQt5
提供了创建Qt5程序的Python API接口
Qt是非常成熟的跨平台桌面应用开发系统,完备GUI
推荐的Python GUI开发第三方库
2.2 wxPython
提供了专用于Python的跨平台GUI开发框架
理解数据类型与索引的关系,操作索引即操作数据
Python最主要的数据分析功能库,基于Numpy开发
import wx
app = wx.App(False)
frame = wx.Frame(None, wx.ID_ANY, "Hello World") frame.Show(True)
app.MainLoop()
2.3 PyGObject
提供了整合GTK+、WebKitGTK+等库的功能
GTK+:瞎或跨平台的一种用户图形界面GUI框架
实例:Anaconda采用该库构建GUI
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
window = Gtk.Window(title="Hello World")
window.show()
window.connect("destroy", Gtk.main_quit)
Gtk.main()
三、Python库之游戏开发
3.1 PyGame
提供了基于SDL的简单游戏开发功能及实现引擎
理解游戏对外部输入的响应机制及角色构建和交互机制
Python游戏入门最主要的第三方库
3.2 Panda3D
Panda3D: 开源、跨平台的3D渲染和游戏开发库,http://www.panda3d.org
一个3D游戏引擎,提供Python和C++两种接口
支持很多先进特性:法线贴图、光泽贴图、卡通渲染等
由迪士尼和卡尼基梅隆大学共同开发
3.3 cocos2d
ocos2d: 构建2D游戏和图形界面交互式应用的框架,http://python.cocos2d.org/
提供了基于OpenGL的游戏开发图形渲染功能
支持GPU加速,采用树形结构分层管理游戏对象类型
适用于2D专业级游戏开发
四、Python库之虚拟现实
4.1 VR Zero
提供大量与VR开发相关的功能
针对树莓派的VR开发库,支持设备磨圆伍小型化,配置简单化
非常适合初学者实践VR开发及应用
4.2 pyovr
针对Oculus VR设备的Python开发库
基于成熟的VR设备,提供全套文档,工业级应用设备
Python+虚拟现实领域探索的一种思路
4.3 Vizard
专业的企业级虚拟现实开发引擎
提供详细的官方文档
支持多种主流的VR硬件设备,具有一定通用性
五、Python库之图形艺术
5.1 Quads
对图片进行四分迭代,形成像素风
可以生成动图或静图图像
简单易用,具有很高展示度
5.2 ascii_art
将普通图片转为ASCII艺术风格
输出可以是纯文本或彩色文本
可腔孝采用图片格式输出
5.3 turtle
六、单元小结
6.1 从人机交互到艺术设计
PyQt5、wxPython、PyGObject
PyGame、Panda3D、cocos2d
VR Zero、pyovr、Vizard
Quads、ascii_art、turtle
相关资源:covid19:通过使用Python和Plotly构建的交互式图表探索加拿大的CO...
文章知识点与官方知识档案匹配
Python入门技能树首页概览
215912 人正在系统学习中
点击阅读全文
打开CSDN APP,看更多技术内容
python人机交互设计_063 Python必备库-从人机交互到艺术设计
Vizard: 基于Python的通用VR开发引擎,http://www.worldviz.com/vizard-virtual-reality-software 专业的企业级虚拟现实开发引擎 提供详细的官方文档 支持多种主流的VR硬件设备,具有一定通用性 五、Python库之图形艺术 5.1 Quads Quads: 迭...
继续访问
制作交互式数据可视化图表,只需要一个Python库就能实现!_翎子生。的...
Python第三方库中我们最常用的可视化库是 pandas,matplotlib,pyecharts, 当然还有 Tableau,另外最近在学习过程中发现另一款可视化神器-Plotly,它是一款用来做数据分析和可视化的在线平台,功能非常强大, 可以在线绘制很多图形比如条形图、散点...
继续访问
人机界面
Keras实施3D-VAE 配套 python 3.6 tensorflow-gpu 1.13.1 matplotlib 3.3.2 scikit-image 0.17.2 数据集 出于空间考虑,我们使用数据集,在此存储库中,我们仅在椅子类(03001627)的.binvox文件中提供体积数据,用于训练和测试VAE,该文件位于./dataset下。 如果您想使用许多其他不同类型的对象进行训练,则可以在上面的网站上找到完整的数据集,它需要一个帐户来下载它们。 此外,斯坦福大学还在以下提供相同的数据集: : ,方便下载。 体积数据在ShapeNetVox32.tgz下,图像数据在ShapeNetRendering.tgz下。 体积数据 椅子类中有6778个元素,完整的对象位于/dataset/03001627 。 我们还将其分为训练集和测试集, /dataset/03001627_t
python人机交互界面设计_Python-Tkinter图形化界面设计(详细教程 )
声明:本篇文章为转载自https://www.jianshu.com/p/91844c5bca78,在原作者的基础上添加目录导航,旨在帮助大家以更高效率进行学习和开发。Python-Tkinter 图形化界面设计(详细教程)本文目录一.图形化界面设计的基本理解当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单、按钮等图形化元...
继续访问
python编写交互界面设计_使用python制作ArcGIS插件(4)界面交互
这是在插件执行交互性操作的时候所需要用到的。由于原始的python是没有界面的,所以,这些元素就全靠pythonaddins封装了。 其他的界面类,如按钮类、组合框等,这些都是固定的设计。还有一部分是工具类型,如操作时的鼠标指针,各种的鼠标和...
继续访问
9.4 Python 从人机交互到艺术设计(图形用户界面/游戏开发/虚拟现实/图形...
本文内容为北京理工大学Python慕课课程的课程讲义, 将其整理为OneNote笔记同时添加了本人上课时的课堂笔记, 且主页中的思维导图就是根据课件内容整理而来, 为了方便大家和自己查看,特将此上传到CSDN博文中, 源文件已经上传到我的资源中,...
继续访问
python人机交互界面
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1.加入背景图片显示界面代码2.设置背景颜色代码 提示:以下是本篇文章正文内容,下面案例可供参考 1.加入背景图片显示界面代码 代码如下(示例): import tkinter as tk root = tk.Tk() root.title('0-1背包实例数据集算法平台') root.geometry('600x340') # 增加背景图片 photo = tk.PhotoImage(file="D:\study\python.
继续访问
Pygame介绍以及下载
一、介绍 Pygame是一个利用SDL库实现的模块。SDL全称Simple DirectMedia Layer,是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要相同或者相似的代码就能开发出多个平台,比如linux、Windows、Mac OSX等的应用程序。 二、下载 Pygame官网:https://www.pygame.or...
继续访问
Dragonboard 410c Python 交互设计——PyQt环境搭建_ANDYMFC_No1的博客...
Python是一个非常容易上手和使用的语言,非常适合开发者快速的搭建和实现自己ideal原型,在开发中,可以通过Python快速的搭建自己的想法,并且后续很容易使用其他更高性能的语言进行局部或者全局的优化。UI交互设计是开发中常见的一个问题,今天...
继续访问
python如何实现界面交互设计_python图形化界面设计(wxpython)三全面介绍...
窗口和对话框的交互 高级控件 表格控件 高级列表控件 树形控件 树表控件 定时器控件 WxPython库中的高级功能 主要使用wxPython(最成熟的跨平台python GUI工具包) 前戏:基础了解 importwxclass MyFrame(wx.Frame): #创建自定义Frame def...
继续访问
python人机交互界面设计_python_GUI页面开发
GUI:人机交互图形化界面,图形页面窗口,Windows系统就是一个庞大的GUI界面,比命令行更加让人得以接受,使用更加简便在python中的GUI界面是由tkinter提供的,使用前需导入变量 = tk.Tk():创建一个窗口,将他实例化变量 = geometry('长宽'):设置窗口的长宽页面开发的最小内容:1.导入tkinter模块2.创建主窗口对象3.将主窗口对象加入消息循环importt...
继续访问
python安装pygame失败_python下PyGame的下载与安装过程及遇到问题
1.去官网下载PyGame注意:要下载对应版本的包其中,如果python为以下版本:(cp36就是python3.6的意思)2. .exe文件直接安装.whl文件启动doc命令安装:在文件所在位置打开doc界面:(win10直接在当前文件夹空白处按住shift,右键打开powershell窗口)输入以下指令安装:pip install pygame-1.9.3-cp36-cp36m-win...
继续访问
基于Python的学生生活信息交互平台的设计和实现_天行IT科技馆的博客-CS...
《基于Python的学生生活信息交互平台的设计和实现》该项目采用技术Python的django框架、mysql数据库 ,项目含有源码、论文、PPT、配套开发软件、软件安装教程、项目发布教程、核心代码介绍视频等 软件开发环境及开发工具: ...
继续访问
...python做交互式界面?_程序员小猴紫的博客_python交互...
界面设计:PyQt模块,这个界面个人感觉是python中界面设计最好用的模块,既可以使用窗口设计界面,又能使用CSS样式。 2.界面设计 2.1打开PyQt designer界面 三步成界面,是不是很简单,哈哈,你没看错,设计一个界面就是这么的简单,当然我没有...
继续访问
最新发布 python互联网程序设计GUI程序设计和网络程序设计(人机互动聊天软件)
(2)必备功能:服务器客户端之间能简单发送和接收文件。至少应有序列化和反序列化功 能。收发双方,应打印显示发送或接收的原始对象的信息(非字节串)。(1)必备功能:要求服务端代码具有一定的智能,能够根据不完整的问题识别客户端真正 要问的问题。如客户输入how old, 服务器能回答年龄。(1)测试TCP连接是否成功。(2)试接收信息是否完整。(4)测试其他无关键词汇。(5)测试文件发送与接收。(3)测试智能回复聊天。(1)发送信息的函数。
继续访问
python人机交互界面设计_063 Python必备库-从人机交互到艺术设计
一、概述Python库之图形用户界面Python库之游戏开发Python库之虚拟现实Python库之图形艺术二、Python库之图形用户界面2.1 PyQt5提供了创建Qt5程序的Python API接口Qt是非常成熟的跨平台桌面应用开发系统,完备GUI推荐的Python GUI开发第三方库2.2 wxPython提供了专用于Python的跨平台GUI开发框架理解数据类型与索引的关系,操作索引即操...
继续访问
python编写人机交互界面_中科院科研项目:人机交互—自然人机语音交互研究
本文来自微信公众号——青人留学。中科院科研项目:人机交互—自然人机语音交互研究mp.weixin.qq.com项目简介自上世纪90年代以来,随着手写识别、语音识别、网络通信技术的发展,人机交互已发生了巨变,一个完全不懂编程以及网络通信原理的普通小孩,可能会比计算机科学家和网络工程师更好地使用计算机。方式的变革使得人机交互变得简单,而这个变革,就发生在短短不到30年内。可预见的是,未来计算机会更加...
继续访问
Pygame详解:前言
Pygame官网:https://www.pygame.org Pygame的官网是有详细的文档的:https://www.pygame.org/docs/ 下图是Pygame 的所有类和模块,都有对应的文档, 我做的就是 Pygame中文文档,喜欢看英文原版的还是可以去看官网,不喜勿喷。 第一篇:Pygame详解(一):Color类 ...
继续访问
cocos2d for python_Python版的cocos2d库:一个2D游戏开发GUI框架的入门详解
1 说明:=====1.1 cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。1.2 不逊色于pygame,但是其实Python版的cocos2d库是基于pygame和pyglet的,也就是集大成者。1.3 中文教程少的可怜,所以写一个入门教程,把坑填了,亲测过,注释里有讲解。1.4A 2D framework for games and multimed...
继续访问
python 游戏引擎 cocos2d_【Cocos2dx游戏开发】Cocos2d-x简介
一、简介最近在做一个Android下的卡牌游戏——《九州幻想》开发项目,而我们使用的引擎是Cocos2dx,所以想要写写笔记来记录一下项目中的收获。当然首先稍微介绍一下Cocos2d-x引擎:cocos2d-x是一个免费、开源、跨平台的2D游戏引擎。我们知道Cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。最初cocos2d仅是一个用Python语言写的游...
继续访问
python编写人机交互界面_【021】重磅!人机交互设计项目(全下载)|1蓝调百香果跨年热文大赛作品...
项目4:人机交互设计项目───自动售货程序设计梁玉华山东昌乐二中随着科技的不断发展,计算机的出现引发关于“人机交互”的研究已经有半个世纪的历史。从最早的二进制大型计算机到现在的人工智能,几乎全世界的高科技精英们都在为人机交互的发展和前进不懈努力,未来人们生活的各个领域,人机交互将无处不在。自动售货机是人机交互技术在生活中的一项典型应用,本项目将以“自动售货程序设计”为主线,经历生活...
继续访问
Python 计算生态概览
文章目录Python 计算生态概览Python 计算程序设计思维Python 计算生态概览从数据处理到人工智能Python库之数据分析Numpy: 表达N维数组的最基础库Pandas: Python数据分析高层次应用库SciPy: 数学、科学和工程计算功能库Python库之数据可视化Matplotlib: 高质量的二维数据可视化功能库Seaborn: 统计类数据可视化功能库Mayavi:三维科学数据可视化功能库Python库之文本处理PyPDF2: 用来处理pdf文件的工具集NLTK: 自然语言文本处理第三
继续访问
利用Python+Cocos2d制作《猫吃老鼠》小游戏
因此,如果在代码的其他位置更新过self.position(或者self.x或者self.y),千万不要忘记调用update_cshape()更新cshape的位置。除了以上这几个方法以外,CollisionManagerGrid类还定义了一些其他有用的方法,如they_collide(),any_near(),objs_near(),objs_near_wdistance(),ranked_objs_near(),iter_all_collisions()等,鉴于篇幅有限,不再一一介绍。
继续访问
Python实战案例:Python使用cocos2d实现捕鱼达人
Python实战案例:Python使用cocos2d实现捕鱼达人 游戏,它是一种基于物质需求满足之上的,在一些特定时间、空间范围内遵循某种特定规则的,追求精神世界需求满足的社会行为方式。合理适度的游戏允许人类在模拟环境下挑战和克服障碍,可以帮助人类开发智力、锻炼思维和反应能力。一般的小型游戏都是一些随机变化的事物,根据鼠标或键盘的操作来完成对变化事物的点击操作或者控制操作,最终实现娱乐的目的。 如下图为地铁跑酷的界面。 上图中人就是一个控制的元素,通过控制人的左右和跳跃,最终对金币进行累加的游戏。
继续访问
python 人机交互 输入输出以及格式处理
输入函数:input() ; 输出函数:print() 例子: x = input('请输入:') input 函数接收的是字符串。 将字符串转化为int 型方式 例子: x = input('请输入x的值:') y = input('请输入y的值: ') z = x + y print(z) 运行程序: 请输入x的值:1 请输入y的值:1 11 #打印变量z结果 x = input('请输入x的值:') y = input('请输入y的值: ') z = int(x) + int
继续访问
热门推荐 python编程(关于cocos2d)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 做游戏的同学大约对cocos2dx不会陌生,基本上做2d游戏都会用到这一款引擎。但是下载cocos2dx非常麻烦,不光文件很大,还要配置visual studio,所以我在想要是linux下面也有一款类似的软件就好了。所以,趁周末找了找,没想到还真有,这就是python版本的coco
继续访问
Pygame精灵和碰撞检测
在开始学习相关知识点之前,我们有必要先学习精灵和碰撞检测的含义。 精灵(英文译为 Sprite),其实在一个游戏程序中,精灵本质指的是一张张小尺寸的图片,比如游戏中的各种道具、人物、场景装饰等,它们都可以看做成一张张小的“精灵”图。除此之外,人物的移动也可以看做是一系列小精灵图构成的序列(按帧组成的序列) 如果将逐帧分解后的动作,按照一定的频率播放,那么就形成了动画精灵,您将会看到雄鹰展翅高飞、人在策马奔腾、运动员奋力跳远。 精灵有个特点就是允许精灵之间进行交互,也称之为碰撞,而碰撞检测,指的就是检测两个精
继续访问
python人机交互界面设计_python做一个gui
本人是做接口测试的,而很多接口现在对于安全方面有了很大的重视,所以往往在接口层上做了一些加密,比如MD5、AES、SHA之类的加密,而每次加密,都是自己利用python编写脚本而生成sign值,这往往对于自己在工具效率上无法提高,所以就产生了自己编写一个简单的加密+请求接口的小工具的想法。因为本人现在主要是以python为主,所以在选择的时候,就从这方面入手。许多人在学习如何创建一个 GUI 应用...
4. 用数据结构(c语言版)编写的学生选课系统
根据自己的需要,自己看着修改一下 ^^
#include<stdio.h>
#include<stdlib.h>
int N1,N2,kk1,kk2,kk3;
struct couse * head1;
struct student * head2;
struct couse//课程信息结构体
{
int num1;
char name1[20];
int score;
int nelepeo;//课程已选人数
int Melepeo;//课程人数上限
struct couse * next;
};
struct student//学生信息结构体
{
int num2;
char name2[20];
int nelenum[50];//已选课程编号
int nelen;//已选课程数量
struct student * next;
};
void Ms()
{
for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)
for(kk3=0;kk3<1200;kk3++);
}
void keyboardc()//录入课程运慧子函数(从键盘录入)
{
struct couse *p1,*p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf("课程编号\t课程名称\t学分\厅穗t课程人数上限\n");
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
head1=NULL;
while(p1->num1!=0)
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
}
p2->next=NULL;
}
void filec()//录入键盘子函数(从文件录入)
{
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf("输入要读入的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->扮悄卜nelepeo,&p1->Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
}
p2->next=NULL;
}
void inputc()//录入课程主函数
{
int i;
printf("\t\t\t录入课程信息\n");
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):break;
}
}
void insertc(struct couse *incouse)//课程管理子函数(增加课程)
{
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0->next=NULL;
}
else
{
while((p0->num1 > p1->num1) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num1 <= p1->num1)
{
if(head1==p1) head1=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N1=N1+1;
}
void delc(int num1)//课程管理子函数(删除课程)
{
struct couse *p1,*p2;
if(head1==NULL)
{
printf("\n没有课程,无法删除!\n");
goto end;
}
p1=head1;
while(num1!=p1->num1 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num1==p1->num1)
{
if(p1==head1) head1=p1->next;
else p2->next=p1->next;
printf("已删除该编号课程!\n");
N1=N1-1;
}
else printf("无该编号的课程!\n");
end:;
}
void managementc()//课程管理主函数
{
struct couse * incouse;
int i,num1;
printf("\t\t\t课程管理\n");
printf("1.新增课程\n");
printf("2.删除课程\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf("课程编号\t课程名称\t学分\t课程人数上限\n");
scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("请输入要删除课程的编号:\n");
scanf("%d",&num1);
delc(num1);
break;
}
case(3):break;
}
}
void keyboards()//录入学生信息子函数(从键盘录入)
{
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("学生学号\t学生姓名\n");
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
head2=NULL;
while(p1->num2!=0)
{
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
}
p2->next=NULL;
}
void files()//录入学生信息子函数(从文件录入)
{
int i=0;
FILE * fp;
char filepath[20];
struct student *p1,*p2;
N2=0;
printf("输入要读入的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct student*)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
head2=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
}
p2->next=NULL;
}
void inputs()//录入学生信息主函数
{
int i;
printf("\t\t\t录入学生信息\n");
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboards();break;
case(2):files();break;
case(3):break;
}
}
void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息)
{
struct student *p0,*p1,*p2;
p1=head2;
p0=incouse;
if(head2==NULL)
{
head2=p0;
p0->next=NULL;
}
else
{
while((p0->num2 > p1->num2) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num2 <= p1->num2)
{
if(head2==p1) head2=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N2=N2+1;
}
void dels(int num2)//学生信息管理子函数(删除学生信息)
{
struct student *p1,*p2;
if(head2==NULL)
{
printf("\n没有该学生信息,无法删除!\n");
goto end;
}
p1=head2;
while(num2!=p1->num2 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num2==p1->num2)
{
if(p1==head2) head2=p1->next;
else p2->next=p1->next;
printf("已删除该学生信息!\n");
N2=N2-1;
}
else printf("无该学号的学生!\n");
end:;
}
void managements()//学生信息管理主函数
{
struct student * incouse;
int i,num2;
printf("\t\t\t学生信息管理\n");
printf("1.新增学生信息\n");
printf("2.删除学生信息\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
incouse->nelen=0;
incouse->nelenum[0]=0;
printf("学生学号\t学生姓名\n");
scanf("%d%s",&incouse->num2,incouse->name2);
inserts(incouse);
break;
}
case(2):
{
printf("请输入要删除学生的学号:\n");
scanf("%d",&num2);
dels(num2);
break;
}
case(3):break;
}
}
void elect(struct student * s)//选课
{
struct couse * p;
int num1,i;
printf("请输入要选课的编号:\n");
scanf("%d",&num1);
for(i=0;s->nelenum[i]!=0;i++);
s->nelenum[i]=num1;
(s->nelen)++;
p=head1;
while(p->num1!=num1) p=p->next;
(p->nelepeo)++;
}
void cheak()//学生选课子函数(查询可选课程)
{
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf("请输入你的学号:");
scanf("%d",&num2);
s=head2;
while(s->num2!=num2 && s->next!=NULL) s=s->next;
if(s->num2!=num2)
{
printf("不存在你的信息,请进入主菜单录入你的信息!\n");
goto end;
}
c=head1;
printf("你的可选课程编号:\n");
while(c!=NULL)
{
for(t=0,i=0;s->nelenum[i]!=0;i++)
{
if(c->num1==s->nelenum[i]) t=1;
}
if(t==0 && (c->nelepeo!=c->Melepeo))
{
printf("%d\n",c->num1);
j++;
}
c=c->next;
}
if(j==0)
{
printf("你已选完所有课程,无法再多选!\n");
goto end;
}
printf("选课(y/n)?:\n");
getchar();
e=getchar();
i=0;
while(e=='y')
{
elect(s);
printf("继续选课(y/n)?:\n");
getchar();
e=getchar();
}
end:;
}
void back(struct student * p)//退课
{
struct couse * p1;
int num1,i,j;
printf("请输入你要退掉的课程编号:\n");
scanf("%d",&num1);
p1=head1;
while(p1->num1!=num1) p1=p1->next;
for(i=0;p->nelenum[i]!=num1;i++);
for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1];
p->nelenum[--j]=0;
(p1->nelepeo)--;
printf("退课成功!\n");
}
void hcheak()//学生选课子函数(查询已选课程)
{
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf("请输入学号:\n");
scanf("%d",&num2);
p=head2;
while(p->num2!=num2 && p!=NULL) p=p->next;
if(p==NULL)
{
printf("不存在你的信息,请回主菜单录入信息:\n");
goto end;
}
printf("已选课程编号:\n");
if(p->nelenum[0]==0)
{
printf("你还没选课!\n");
goto end;
}
for(i=0;p->nelenum[i]!=0;i++)
{
printf("%d\n",p->nelenum[i]);
p0=head1;
while(p0->num1!=p->nelenum[i]) p0=p0->next;
f=f+p0->score;
}
printf("总学分:%d\n",f);
printf("是否进行退课(y/n)?");
getchar();
c=getchar();
while(c=='y')
{
back(p);
printf("继续退课(y/n)?");
getchar();
c=getchar();
(p->nelen)--;
}
end:;
}
void elective()//学生选课主函数
{
int i;
printf("\t\t\t学生选课\n");
printf("1.查询可选课程\n");
printf("2.查询已选课程\n");
printf("3.返回主菜单\n");
printf("请输入(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
void listc()//输出课程信息
{
struct couse * p;
p=head1;
printf("课程编号 课程名称 学分 课程已选人数 课程人数上限\n");
while(p!=NULL)
{
printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
}
void lists()//输出学生信息
{
struct student * p;
p=head2;
printf("学生学号 学生姓名 已选课程数量\n");
while(p!=NULL)
{
printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);
p=p->next;
}
}
void intoc()//存储课程信息
{
FILE * fp;
struct couse * p;
char filepath[30];
printf("输入课程信息要保存的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
fclose(fp);
printf("课程信息已保存在%s中!\n",filepath);
}
void intos()//存储学生信息
{
FILE * fp;
struct student * p;
char filepath[30];
printf("输入学生信息要保存的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
p=head2;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath);
}
void into()//存储信息
{
int i;
printf("1.存储课程信息\n");
printf("2.存储学生信息\n");
printf("3.返回主菜单\n");
printf("请输入(1~3)\n");
scanf("%d",&i);
switch(i)
{
case(1):intoc();break;
case(2):intos();break;
case(3):break;
}
}
void store()//信息主函数
{
int i;
printf("\t\t系统信息查看及存储\n");
printf("1.查看课程信息\n");
printf("2.查看学生信息\n");
printf("3.存储信息\n");
printf("4.返回主菜单\n");
printf("请输入(1~4):\n");
scanf("%d",&i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):into();break;
case(4):break;
}
}
int main()//主函数
{
int i;
start:
printf("\n\t\t\t欢迎使用学生选课系统!\n");
printf("菜单:\n");
printf("1.录入课程信息\n");
printf("2.课程管理\n");
printf("3.录入学生信息\n");
printf("4.学生信息管理\n");
printf("5.学生选课\n");
printf("6.系统信息查看及存储\n");
printf("7.退出系统\n");
printf("\n请输入菜单选项(1~7):\n");
scanf("%d",&i);
if(i<1 || i>7)
{
printf("输入错误,请重输:\n");
goto start;
}
switch(i)
{
case(1):
{
system("cls");
inputc();
goto start;
break;
}
case(2):
{
system("cls");
managementc();
goto start;
break;
}
case(3):
{
system("cls");
inputs();
goto start;
break;
}
case(4):
{
system("cls");
managements();
goto start;
break;
}
case(5):
{
system("cls");
elective();
goto start;
break;
}
case(6):
{
system("cls");
store();
goto start;
break;
}
case(7):
{
system("cls");
printf("感谢使用本系统!\n\n再见!\n");
}
}
return(0);
}
5. shell命令和linux命令一样么
Linux命令就是shell命令。不同的shell有不同的命令。Linux命令包括所有的shell
6. 做上位机软件用VB还是C语言好啊
都可以。
从实历闭现功能上,二者并没有区别。
具体选择在于编程人搜信员对于哪种软件更熟悉。
相对来说,用C语言可以更高效的操作硬件。世烂轮而用VB可以实现更友好的界面。
7. 请问数控系统的人机界面用C语言能实现吗还是用C++ MFC 比较好啊(如下图界面)
C语言用来开发硬件比较方便,但是开发界面带旦来说蠢汪扰的话,用C++的MFC 开发是比较方便陵春的,毕竟用到了面向对象的思维。
8. 我也在做这个课题,不过我不会,有没有C语言编程的程序,这个课题做人机界面该怎么做,
没有可以自己编啊。
9. 十万火急!C语言怎样编人机界面
你可以参考该程序,tc2.0下通过,源自《C语言课程设计案例精编》;
/******头文件(.h)***********/
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*标准库函数*/
#include "string.h"/*字符串函数*/
#include "ctype.h" /*字符操作函数*/
#define M 50 /*定义常数表示记录数*/
typedef struct /*定义数据结构*/
{
char name[20]; /*姓名*/
char units[30]; /*单位*/
char tele[10]; /*电话*/
}ADDRESS;
/******以下是函数原型*******/
int enter(ADDRESS t[]); /*输入记录*/
void list(ADDRESS t[],int n); /*显示记录*/
void search(ADDRESS t[],int n); /*按姓名查找显示记录*/
int delete(ADDRESS t[],int n); /*删除记录*/
int add(ADDRESS t[],int n); /*插入记录*/
void save(ADDRESS t[],int n); /*记录保存为文件*/
int load(ADDRESS t[]); /*从文件中读记录*/
void display(ADDRESS t[]); /*按序号查找显示记录*/
void sort(ADDRESS t[],int n); /*按姓名排序*/
void qseek(ADDRESS t[],int n); /*快速查找记录*/
void (); /*文件复制*/
void print(ADDRESS temp); /*显示单条记录*/
int find(ADDRESS t[],int n,char *s) ; /*查找函数*/
int menu_select(); /*主菜单函数*/
/******主函数开始*******/
main()
{
int i;
ADDRESS adr[M]; /*定义结构体数组*/
int length; /*保存记录长度*/
clrscr(); /*清屏*/
for(;;)/*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{
case 0:length=enter(adr);break;/*输入记录*/
case 1:list(adr,length);break; /*显示全部记录*/
case 2:search(adr,length);break; /*查找记录*/
case 3:length=delete(adr,length);break; /*删除记录*/
case 4:length=add(adr,length); break; /*插入记录*/
case 5:save(adr,length);break; /*保存文件*/
case 6:length=load(adr); break; /*读文件*/
case 7:display(adr);break; /*按序号显示记录*/
case 8:sort(adr,length);break; /*按姓名排序*/
case 9:qseek(adr,length);break; /*快速查找记录*/
case 10:();break; /*复制文件*/
case 11:exit(0); /*如返回值为11则程序结束*/
}
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
menu_select()
{
char s[80];
int c;
gotoxy(1,25);/*将光标定为在第25行,第1列*/
printf("press any key enter menu......\n");/*提示压任意键继续*/
getch(); /*读入任意字符*/
clrscr(); /*清屏*/
gotoxy(1,1);
printf("********************MENU*********************\n\n");
printf(" 0. Enter record\n");
printf(" 1. List the file\n");
printf(" 2. Search record on name\n");
printf(" 3. Delete a record\n");
printf(" 4. add record \n");
printf(" 5. Save the file\n");
printf(" 6. Load the file\n");
printf(" 7. display record on order\n");
printf(" 8. sort to make new file\n");
printf(" 9. Quick seek record\n");
printf(" 10. the file to new file\n");
printf(" 11. Quit\n");
printf("***********************************************\n");
do{
printf("\n Enter you choice(0~11):"); /*提示输入选项*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整型数*/
}while(c<0||c>11); /*选择项不在0~11之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
int enter(ADDRESS t[])
{
int i,n;
char *s;
clrscr(); /*清屏*/
printf("\nplease input num \n"); /*提示信息*/
scanf("%d",&n); /*输入记录数*/
printf("please input record \n"); /*提示输入记录*/
printf("name unit telephone\n");
printf("------------------------------------------------\n");
for(i=0;i<n;i++)
{
scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*输入记录*/
printf("----------------------------------------------\n");
}
return n; /*返回记录条数*/
}
/*显示记录,参数为记录数组和记录条数*/
void list(ADDRESS t[],int n)
{
int i;
clrscr();
printf("\n\n*******************ADDRESS******************\n");
printf("name unit telephone\n");
printf("------------------------------------------------\n");
for(i=0;i<n;i++)
printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);
if((i+1)%10==0) /*判断输出是否达到10条记录*/
{
printf("Press any key continue...\n"); /*提示信息*/
getch(); /*压任意键继续*/
}
printf("************************end*******************\n");
}
/*查找记录*/
void search(ADDRESS t[],int n)
{
char s[20]; /*保存待查找姓名字符串*/
int i; /*保存查找到结点的序号*/
clrscr(); /*清屏*/
printf("please search name\n");
scanf("%s",s); /*输入待查找姓名*/
i=find(t,n,s); /*调用find函数,得到一个整数*/
if(i>n-1) /*如果整数i值大于n-1,说明没找到*/
printf("not found\n");
else
print(t[i]); /*找到,调用显示函数显示记录*/
}
/*显示指定的一条记录*/
void print(ADDRESS temp)
{
clrscr();
printf("\n\n********************************************\n");
printf("name unit telephone\n");
printf("------------------------------------------------\n");
printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);
printf("**********************end***********************\n");
}
/*查找函数,参数为记录数组和记录条数以及姓名s */
int find(ADDRESS t[],int n,char *s)
{
int i;
for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/
{
if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/
return i; /*相等,则返回该记录的下标号,程序提前结结束*/
}
return i; /*返回i值*/
}
/*删除函数,参数为记录数组和记录条数*/
int delete(ADDRESS t[],int n)
{
char s[20]; /*要删除记录的姓名*/
int ch=0;
int i,j;
printf("please deleted name\n"); /*提示信息*/
scanf("%s",s);/*输入姓名*/
i=find(t,n,s); /*调用find函数*/
if(i>n-1) /*如果i>n-1超过了数组的长度*/
printf("no found not deleted\n"); /*显示没找到要删除的记录*/
else
{
print(t[i]); /*调用输出函数显示该条记录信息*/
printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/
scanf("%d",&ch); /*输入一个整数0或1*/
if(ch==1) /*如果确认删除整数为1*/
{
for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/
{
strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/
strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/
strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/
}
n--; /*记录数减1*/
}
}
return n; /*返回记录数*/
}
/*插入记录函数,参数为结构体数组和记录数*/
int add(ADDRESS t[],int n)/*插入函数,参数为结构体数组和记录数*/
{
ADDRESS temp; /*新插入记录信息*/
int i,j;
char s[20]; /*确定插入在哪个记录之前*/
printf("please input record\n");
printf("************************************************\n");
printf("name unit telephone\n");
printf("--------------------------------------------------\n");
scanf("%s%s%s",temp.name,temp.units,temp.tele); /*输入插入信息*/
printf("------------------------------------------------\n");
printf("please input locate name \n");
scanf("%s",s); /*输入插入位置的姓名*/
i=find(t,n,s); /*调用find,确定插入位置*/
for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/
{
strcpy(t[j+1].name,t[j].name); /*当前记录的姓名拷贝到后一条*/
strcpy(t[j+1].units,t[j].units); /*当前记录的单位拷贝到后一条*/
strcpy(t[j+1].tele,t[j].tele); /*当前记录的电话拷贝到后一条*/
}
strcpy(t[i].name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/
strcpy(t[i].units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/
strcpy(t[i].tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/
n++; /*记录数加1*/
return n; /*返回记录数*/
}
/*保存函数,参数为结构体数组和记录数*/
void save(ADDRESS t[],int n)
{
int i;
FILE *fp; /*指向文件的指针*/
if((fp=fopen("record.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/
{
printf("can not open file\n");/*没打开*/
exit(1); /*退出*/
}
printf("\nSaving file\n"); /*输出提示信息*/
fprintf(fp,"%d",n); /*将记录数写入文件*/
fprintf(fp,"\r\n"); /*将换行符号写入文件*/
for(i=0;i<n;i++)
{
fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式写入记录*/
fprintf(fp,"\r\n"); /*将换行符号写入文件*/
}
fclose(fp);/*关闭文件*/
printf("****save success***\n"); /*显示保存成功*/
}
/*读入函数,参数为结构体数组*/
int load(ADDRESS t[])
{
int i,n;
FILE *fp; /*指向文件的指针*/
if((fp=fopen("record.txt","rb"))==NULL)/*打开文件*/
{
printf("can not open file\n"); /*不能打开*/
exit(1); /*退出*/
}
fscanf(fp,"%d",&n); /*读入记录数*/
for(i=0;i<n;i++)
fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele); /*按格式读入记录*/
fclose(fp); /*关闭文件*/
printf("You have success read data from file!!!\n"); /*显示保存成功*/
return n; /*返回记录数*/
}
/*按序号显示记录函数*/
void display(ADDRESS t[])
{
int id,n;
FILE *fp; /*指向文件的指针*/
if((fp=fopen("record.txt","rb"))==NULL) /*打开文件*/
{
printf("can not open file\n"); /*不能打开文件*/
exit(1); /*退出*/
}
printf("Enter order number...\n"); /*显示信息*/
scanf("%d",&id); /*输入序号*/
fscanf(fp,"%d",&n); /*从文件读入记录数*/
if(id>=0&&id<n) /*判断序号是否在记录范围内*/
{
fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/
print(t[id]); /*调用输出函数显示该记录*/
printf("\r\n");
}
else
printf("no %d number record!!!\n ",id); /*如果序号不合理显示信息*/
fclose(fp); /*关闭文件*/
}
/*排序函数,参数为结构体数组和记录数*/
void sort(ADDRESS t[],int n)
{
int i,j,flag;
ADDRESS temp; /*临时变量做交换数据用*/
for(i=0;i<n;i++)
{
flag=0; /*设标志判断是否发生过交换*/
for(j=0;j<n-1;j++)
if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/
{
flag=1;
strcpy(temp.name,t[j].name); /*交换记录*/
strcpy(temp.units,t[j].units);
strcpy(temp.tele,t[j].tele);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].units,t[j+1].units);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].units,temp.units);
strcpy(t[j+1].tele,temp.tele);
}
if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/
}
printf("sort sucess!!!\n"); /*显示排序成功*/
}
/*快速查找,参数为结构体数组和记录数*/
void qseek(ADDRESS t[],int n)
{
char s[20];
int l,r,m;
printf("\nPlease sort before qseek!\n"); /*提示确认在查找之前,记录是否已排序*/
printf("please enter name for qseek\n"); /*提示输入*/
scanf("%s",s); /*输入待查找的姓名*/
l=0;r=n-1; /*设置左边界与右边界的初值*/
while(l<=r) /*当左边界<=右边界时*/
{
m=(l+r)/2; /*计算中间位置*/
if(strcmp(t[m].name,s)==0) /*与中间结点姓名字段做比较判是否相等*/
{
print(t[m]); /*如果相等,则调用print函数显示记录信息*/
return ; /*返回*/
}
if(strcmp(t[m].name,s)<0) /*如果中间结点小*/
l=m+1; /*修改左边界*/
else
r=m-1; /*否则,中间结点大,修改右边界*/
}
if(l>r) /*如果左边界大于右边界时*/
printf("not found\n"); /*显示没找到*/
}
/*复制文件*/
void ()
{
char outfile[20]; /*目标文件名*/
int i,n;
ADDRESS temp[M]; /*定义临时变量*/
FILE *sfp,*tfp; /*定义指向文件的指针*/
clrscr();/*清屏*/
if((sfp=fopen("record.txt","rb"))==NULL) /*打开记录文件*/
{
printf("can not open file\n"); /*显示不能打开文件信息*/
exit(1); /*退出*/
}
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示信息*/
scanf("%s",outfile); /*输入目标文件名*/
if((tfp=fopen(outfile,"wb"))==NULL) /*打开目标文件*/
{
printf("can not open file\n"); /*显示不能打开文件信息*/
exit(1); /*退出*/
}
fscanf(sfp,"%d",&n); /*读出文件记录数*/
fprintf(tfp,"%d",n);/*写入目标文件数*/
fprintf(tfp,"\r\n"); /*写入换行符*/
for(i=0;i<n;i++)
{
fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units,
temp[i].tele); /*读入记录*/
fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,
temp[i].units,temp[i].tele); /*写入记录*/
fprintf(tfp,"\r\n"); /*写入换行符*/
}
fclose(sfp); /*关闭源文件*/
fclose(tfp); /*关闭目标文件*/
printf("you have success file!!!\n"); /*显示复制成功*/
}
10. 如何使用C语言编写图书管理系统
图书管理系统是运行于Windows系统下的应用软件,主要用于对图书馆中的图书信息进行增、删、改、查等操作,并且还可对使用该系统的用户进行登录名和密码的管理等。系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
所需功能类似于学生成绩管理系统,界面可参考附录C。用户分为管理员和一般人员两大类。
功能需求描述如下。
①用户登录:根据用户输入的用户名和密码判断是否允许该用户使用本系统,并且当用户登录后根据用户权限判断用户可以使用哪些功能。学生只有浏览等权限而不能进行实质性改动。
②提供系统主控平台:系统主控平台也应根据用户权限不同而有所区别,只列出在用户权限范围内的功能供用户选择。系统主控平台包括输入功能选项、调用相应程序两大需求。教师和学生对应的系统主控平台是不同的。所能进行的操作也不相同。
③创建图书信息文件:用户根据提示输入图书编号、图书分类号、书名、作者姓名、出版社名、出版年月、定价、存库数量和借阅和上架情况等等信息存储在系统磁盘的文件中。以便进行管理、查找和备份。
④增加图书信息:可在原有图书信息文件的基础上增加新的图书信息记录并继续保存至磁盘,并且将增加后的文件存储状况显示给用户。
⑤删除图书信息:提示用户输入要进行删除操作的图书编号,如果在文件中有该信息存在,则将该书号所对应的记录删除。并选择是否继续进行删除操作。
⑥修改图书信息:提示用户输入要进行修改操作的书号,如果在文件中有该息存在,则将提示用户输入该书号对应的要修改的选项,结果存储于文件。该部分需求也需要提示用户选择是否继续进行修改操作。
⑦查询图书信息:提供按书号或书名等查询。在该功能中,也需提示用户是否需要继续查再继续查找,则返回主界面。
⑧一般用户查询个人的借阅情况并按日期进行排序:。
⑨管理员和一般用户管理:管理员对用户的管理也需要进行用户的创建、增加、删除、浏览。管理员创建的用户存储在名为yonghu的磁盘文件中,每当有用户登录系统时,会根据该文件中的用户名和密码进行核实判断,用户才能够顺利登录。管理员还具有用户的功能。增加的用户及密码、权限等也被继续存储在yonghu文件中。当某些用一用该系统时,还可以进行删除操作,并且管理员具有修改用户权限的功能,一般用户和管理员对于系统的权限是不一样的。