西安邮电大学课程设计报告
六.附录:源代码(电子版)
StringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=SuperMarket";
2、用户登陆(登陆界面,老板界面,仓库管理员界面,销售员界面):
3.查询信息的流程图如下:
4、修改相关信息(为简化程序的操作,该系统只能修改规定的信息):
5、删除某条记录:
一.实验目的及实验环境
实验目的:目前,对于中小超市来说,需要采取一套行之有效的超市管理系统来管理超市的日常进货、销售、员工管理等信息。本次设计的超市管理系统就是想让用户以最少的手工业务处理,来完成超市中的日常工作,增加超市业务处理的效率。
一个典型的超市管理系统,除了应该完成超市中必要的销售工作,如收银台,还应该具有后台管理的功能。
各个模块的功能描述:
(1)、登录界面:本系统简单的设置有三种职位,用户使用密码登录,成功后给其相应的操作界面。
(2)、仓库管理:是仓库管理员和老板可使用的操作,主要是查看仓库的入库信息和添加入库信息。
(3)、管理商品信息:只有老板可用,主要是查看现有商品的信息、修改、删除及添加新的商品信息。
(4)、管理供应商信息:只有老板可用,主要是查看现有的供应商的信息、修改、删除及添加新供应商的信息。
(5)、管理员工信息:只有老板可用,主要是查看现有的员工信息、修改、删除及增加新员工。
(6)、查看销售纪录。
四.测试数据及运行结果
1、Java与数据库SQL 2008的链接:
String
driverserver.jdbc.SQLServerDriver";
5、超市员工的职位基本信息的设定。
6、员工的基本信息的录入,查询,修改和删除。
7、仓库信息的录入与查看。
8、数据间的相互联系:销售商品的数量和库存量的基本联系;商品信息和供应商的相关数据联系;员工与职位间的联系等。
9、数据存放在数据库中,任何数据操作都是对数据库的数据的操作。
系统结构图(功能模块图)
出现的问题及解决方法:
(1)、使用JDBC连接数据库不成功:在官网上下载关于JDBC的.jar压缩包并以引用包的形式附加在项目上即可。
(2)、窗体无法显示:该问题是由于JFrame内部窗体默认Visible属性为false,需要调用内部窗体对象SetVisible()方法,将属性设置为true就可以了。
3.方案设计
系统开发的总体任务是实现Java与SQL Server 2008的组合应用,实现用JDBC方式调用SQL数据库,且有一定的透明性。
超市管理系统需要完成的功能主要有:
1、用户分类登录系统及权限管理。
2、超市收银台的销售管理方式。
3、销售商品信息的录入、查询、修改、删除。
4、供应商信息的录入,查询,修改、删除。
实验环境:系统的体系结构:C/S结构
前台:Java (Eclipse 3.5)
后台数据库:SQL Server 2008
二.实验内容
超市管理系统
该系统应具备前台收银操作,还有后台对各种数据的管理。
该系统应为多用户使用的,应以用户的权限来进入系统管理模块。
友好的界面及方便简单的操作。
数据存放在数据库中,系统对数据库可进行增、删、查、改的操作。
6、增加相关的信息记录:
5.总结
对自己的超市管理系统的总体设计的评价:系统与数据库的链接成功有效,数据的增、删、查、改都能正常无误的运行。界面友好,操作简单方便,基本的功能都有实现。
合理之处:能根据用户的职位的不同进入不同的操作界面。数据的增、删、查、改都能运行,界面友好。
不足之处:相关的数据信息不够多,对于相关信息的描述不够充分。对各种错误的操作给出的错误提示不够充分,考虑数据的关联性不充足。
单片机课程设计 双机通信 西安邮电大学
西安邮电大学单片机课程设计报告书题目:双机通信院系名称:自动化学院学生姓名:专业名称:测控技术与仪器班级:时间:2012年 5 月 21 日至 6 月 1 日一、设计目的利用所学单片机知识解决实际问题。
二、设计要求1.用两片单片机,实现双机通信;2.利用与A(主机)连接的按键控制与B(从机)连接的数码管,每按一次键,主机LED亮同时数码管显示数据,随后从机LED亮,伴随着数码管显示与主机相同的数据;3.同理,用与B机连接的按键控制与A机连接的数码管。
1. STC89C52单片机介绍(1)STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。
(2)外部时钟电路(3)复位电路(4)系统硬件结构图(5)硬件仿真图(6)系统软件流程图及程序代码程序流程图程序代码如下:#include <reg52.h>#define uchar unsigned charsbit COM1 = P2^1;sbit COM2 = P2^0;sbit LED = P1^0;uchar ch, x = 0;uchar ge, shi;uchar const NUM[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; void delay_ms(uchar ms);void initModule(void);void sendOneChar(uchar ch);**************函数功能:发送数据*********** void sendOneChar(uchar ch){ES = 0;SBUF = ch;while(!TI);TI = 0;ES = 1;}void initModule(){TMOD = 0x20;TH1 = 0xfd;TL1 = 0xfd;SCON = 0x50;COM1 = 0;COM2 = 0;LED = 1;}**************函数功能:延迟************ void delay_ms(uchar ms){uchar i, j;for (i=0; i<ms; i++)for(j=0;j<110;j++);}*************主函数************void main(){initModule();EX0 = 1;IT0 = 1;ES = 1;EA = 1;TR1 = 1;P0 = NUM[0];while(1){}}void button() interrupt 0{uchar num = 0;delay_ms(20);if (INT0 == 0){LED = 0;delay_ms(500);LED = 1;x++;if(x==25){x=0;}}shi = x / 10;ge = x % 10;while (num < 20){COM1 = 1;P0 = NUM[shi];delay_ms(15);COM1 = 0;COM2 = 1;P0 = NUM[ge];delay_ms(15);COM2 = 0;num++;}sendOneChar(x);}void read() interrupt 4 {uchar num = 0;RI = 0;LED = 0;delay_ms(300);LED = 1;shi = SBUF / 10;ge = SBUF % 10;while (num < 20){COM1 = 1;P0 = NUM[shi];delay_ms(15);COM1 = 0;COM2 = 1;P0 = NUM[ge];delay_ms(15);COM2 = 0;num++;}}五、问题分析与解决方法问题一:仿真问题仿真图画好之后,开始运行,发光二极管没有反应。
西安邮电大学数字电路课程设计实验报告多路彩灯
西安邮电学院数字电路课程设计报告书——多路彩灯控制器系部名称:学生姓名:专业名称:班级:实习时间:一、实验目的:根据知识掌握情况和兴趣选择题目,给出功能设计方案,插接、调试电路,完成要求的任务,达到巩固和应用“电子技术基础”和“数字电路与逻辑设计”课程基本理论和方法,初步掌握模拟与数字电路系统设计基本方法的目的。
二、实验要求:设计一个4路移存型彩灯控制器,彩灯用发光二极管LED模拟,具体要求如下:1、能演示三种花型,花型自拟。
2、选作:彩灯明暗变换节拍为1.0s和0.5s,两种节拍交替运行。
三、实验元件:555定时器 1个74194 2个74161 2个7404 2个电阻150kΩ 1个电阻4.7 kΩ 1个电容4.7uF 1个电容0.1 uF 1个四、总体方案的设计:经过分析问题及初步的整体思考,设计方案如下:整体功能的实现需要以下三个模块来实现:花型的演示及控制模块,节拍控制模块,时钟信号的产生。
时钟信号的产生由一个555多频振荡器来实现,花型的演示由两个74194(双向移位寄存器)来实现,花型的控制功能由两个74161(四位二进制同步计数器)。
花型演示电路花型控制节拍控制电路花型控制节拍控制电路五、单元电路的设计:1,时钟信号一片555加上电容及电阻实现电容:4.7μf 0.01μf电阻:150 kΩ 4.7 kΩR 4DC7Q 3G N D1V C C8TR 2TH6CV5U1555R1150kR24.7kC10.1ufC24.7ufD 03D 14D 25D 36Q 015Q 114Q 213Q 312D 03D 14D 25D 36S R 2S L 7C L K 11S 09S 110M R1Q 015Q 114Q 213Q 312U774194D 03Q 014D 14Q 113D 25Q 212D 36Q 311R C O15E N P 7E N T 10C L K 2L O A D 9M R1U474161D 03Q 01441312U2:A74041312U2:D74041110U2:E740498U2:F 740412U3:A740434U3:B 7404D1LED-REDD2LED-REDD3LED-REDD4LED-REDD5LED2,花型控制电路花型控制电路可利用74194移存器作为彩灯演示电路用两个74161来作为花型控制电路。
西安邮电大学 数字电路课程设计报告书 ——交通灯控制器
红绿灯交通信号系统外观示意图如图所示。
1.在十字路口的两个方向上各设一组红黄绿灯,显示顺序为其中一方向是绿灯、黄灯、红灯;另一方向是红灯、绿灯、黄灯。
2.设置一组数码管,以倒计时的方式显示允许通行或禁止通行时间,其中一个方向上绿灯亮的时间是20s,另一个方向上绿灯亮的时间是30s,黄灯亮的的时间都是5s。
设计时序如下:
东西向
南北向
4.电路框图设计:
说明:脉冲输出部分为555时基芯片构成的多次谐波振荡器,由其产生周期为1s的时钟脉冲信号。计时控制部分主要由两片74LS161(十六进制同步加法计数器)及逻辑门电路构成。产生30s、20s和5s的倒计时信号。彩灯控制部分将计时控制部分输出的信号通过逻辑门电路及74LS139(双2—4线译照响应时序显示,并将74LS139的输出信号反馈回计时控制部分实现三种倒计时之间的切换。数字显示部分主要由74LS48(7段显示译码器)、74LS04(反相器)及8段共阴极数码管构成,通过接入计时控制部分的信号实现倒计时显示。
3.用两组数码管,实现双向倒计时显示。
三.实现方案:
实现这个交通灯控制器可以采用FPGA、单片机等可编程器件或基本数字逻辑器件实现。在这次实验中采用74系列数字集成芯片和555时基芯片实现相应功能。本报告最后附有使用MULTISIM仿真软件进行的仿真电路图。
四.具体功能分析:
此电路为十字路口交通灯控制电路,要求东西向和南北向不能同时出现绿(黄)灯,发生“撞车”现象。即当某一方向为绿灯或黄灯时,另一方向必为红灯。东西向主通路有倒计时显示。
电容C1放电时,暂稳态持续时间为
tw2=0.7R2C=0.7×150k×4.7μ≈0.5s
因此,电路输出矩形脉冲的周期为T= tw1+tw2≈1s输出占空比为q=tw1/T≈50%
西安邮电大学-(数据结构)校园导游系统课程设计报告
void findweight(adjlist *G,int m,int n);
seqstacki w,*s=&w; seqstackpath z; int vnum=13; main() { adjlist q,*G=&q; initstack(s); initstack1(&z); readnet(G);//读出文件 Map(); //printf("%d\n",G->vertex[4].firstarc->nextarc->nextarc->weight); menu(G); } void menu(adjlist *G) { int choice; Map(); printf("\n ┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳ \n"); printf("\n ┣┃ ●① ◣查看景点信息 ┃┫"); printf("\n ┣┃ ●② ◣查寻两景点之间的路径 ┃┫"); printf("\n ┣┃ ︻┳═一 ●③ ◣退出系统 ┃┫"); printf("\n ┻┻┻┻┻┻┻┻︷︷︷︷︷︷︷︷︷︷︷︷︷︷︷┻┻┻┻┻┻┻ \n"); printf("\n\t\t你想选择?请选择(1-3):" ); scanf("%d",&choice); while(choice<1||
①:学校简易的俯视图。 ②:各个景点的简单介绍。 ③:任意两景点之间的所有路径。 ④:任意两景点之间的最少中转景点路径。 ⑤:任意两景点之间的带权路径长度。
三、需求分析
Calculate() Main(); Init(); Menu(); Intro Finallpath(); Byebye(); Search(); Finfallway Shortestway() Niceway() Init();初始化两个顺序栈 Menu();进行选择的模块函数; Intro();景点介绍函数; Search();判断是否有此编号的景点; Findallpath();找路径函数; Findallway();找任意两个景点之间的所有路径;(存在栈里 面)
西安邮电大学C语言毕业课程设计
西安郵電大学C语言课程设计报告题目:小型的电视剧节目管理系统院系名称:计算机学院专业名称:计算机科学与技术班级:学生姓名:学号(8位):指导教师:设计起止时间:2012年06月06日~2012年06月15日一. 设计目的1.通过一个小型的管理系统的程序,使自己对C编程的感觉进一步加深;2.通过这些程序,使得管理员可以更加方便的管理该系统,使得用户可以更方便的查询。
二. 设计内容分为管理员和用户。
1.管理员:可以实现电视剧的添加,查看全部信息,删除,查询,修改;2.用户:可以实现按上映时间和类别查询,显示全部信息,电视剧的由新至旧和由旧至新的排序。
三.概要设计1.功能模块图;2.各个模块详细的功能描述1).管理员模块:a.添加:管理员创建的新结点续到以前结点的后面,为尾插;b.显示全部信息:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,然后再输出全部信息;c:查询:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,再输入要查找的序号,若文件为空或找不到,输出“查询错误”并退出该步;反之输出查询到的结果;d.修改:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,再输入要修改的序号,若找不到该序号或文件为空,输出“查询错误”,并退出该步;反之输入修改后的项目,然后保存文件并输出新的信息;e:删除:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,再输入要删除的序号,若文件为空或找不到,输出“查询错误”,并退出该步;反之把该序号后面的那个结点续到该序号前面的那个结点后面,就把该序号对应的结点删除成功。
2)用户模块:a:显示全部信息:用户进入该步骤后,可以显示当前电视剧节目的全部信息,包括剧名,导演名,主要演员名,类别,上映时间,大概内容;b:按类别查询:用户进入该步骤后,首先输入要查询的类别,若该文件中没有相关信息,系统会报错,并退出该步;反之输出查找到的相关信息;c:按时间查询:用户进入该步骤后,首先输入要查询的时间,若该文件中没有相关信息,系统会报错,并退出该步;反之输出查找到的相关信息;d:按电视剧由新至旧排列:用户选择了该项,系统会输出由新至旧排列的电视剧节目的信息;e:按电视剧由旧至新排列:用户选择了该项,系统会输出由旧至新排列的电视剧节目的信息。
西安邮电学院 数电课程设计28
西安郵電學院数字电路课程设计报告书题目:多路彩灯多路彩灯控制器内容摘要:彩灯控制电路可以自动控制多路彩灯按照不同的花型循环显示各种灯光变换花型,它主要由定时器、控制电路、编码发生器、彩灯等几部分组成。
一设计内容及要求:1.设计内容:设计一个带有三种花型的八路循环变换彩灯电路。
扩展内容:采用不同频率来控制各种花型的变化速度。
2.设计要求:彩灯控制器是以高低电平来控制彩灯的亮与灭,如果以某种节拍按一定规律改变彩灯的输入电平值,控制彩灯的亮与灭,即可以按照预定规律显示一定的花型。
因此彩灯控制电路需要一个能够按一定规律输出不同高低电平编码信号的编码发生器,同时还需要编码发生器所要求的时序信号和控制信号。
综上所述,彩灯控制器应该由定时器、控制电路、编码发生器等组成。
二电路工作原理:定时电路产生一个连续的脉冲信号,用来提供给计数器和花型输出电路,其中定时器由简单的555振荡器来实现,而用两片161芯片级联来设计一个模48的计数器,其中低位片为模16,高位片为模3。
用两片194芯片来设计花型输出电路,再用一片151八选一数据选择器进行控制花型输出电路的左移和右移。
该电路一共有三种花型分别为:三电路所需元器件:四确定系统设计方案,画出系统框图:多路彩灯控制器系统框图如下所示:各模块的设计:1.定时器:该部分主要由555芯片设计而成,其中需要两个不同阻值的电容和两个不同阻值的电阻连接而成。
它的主要作用是产生该彩灯控制电路所需的cp脉冲。
它产生的脉冲频率为1Hz。
定时电路的设计图如下:2.计数器的设计:在该模块里我主要采用两片161进行级联来设计一个模48 的计数器,其中它的低位片为模16的,它的高位片位模3的。
当低位片满16则向高位片进1,当高位片的低两位都为1时进行置位,并且低位片的CO端输出后取非再送给后面两个194芯片的CLEAR端来对每个花型变换完成后进行清零。
计数器的模块设计图如下:3.数据选择器的设计:在这个电路中,主要使用数选器来控制选择每种花型的左移、右移以及花型变换,其中它的数据输入端中A端与计数器高位端输出的QA连接,而B端则与计数器高位端输出的QB相连接。
通信工程课程设计报告
附件1西安邮电学院专业课程设计报告书系部名称:通信与信息工程学院学生姓名:专业名称:通信工程专业班级:时间:2011年10月10日至2011年10月21日附件2 西安邮电学院 通信工程 系 专业课程设计 成绩鉴定表 学生姓名专业班级/学号进行时间 2011年10月10日 — 2011年 10 月21日题目专业课程设计具体内容第一周基础型实验模块(实验一—实验四) 第二周 基础型实验模块(实验五—实验六) 提高型实验模块(实验一—实验五)成绩鉴定接受单位评价 (20分)学习态度(10分)学习纪律(10分)报告鉴定 (30分) 报告内容与教学计划内容结合程度(15分)报告质量(主题、结构、观点、逻辑、资料)(15分)验收鉴定 (50分)程序的合理性(15分)调试过程(20分) 调试结果(15分)评阅教师姓名职称成绩评语评阅教师签字年 月 日实验一时间表调度实验一、实验目的时间调度表实验用来考查自己对时间表调度原理的掌握情况。
二、实验原理及设计在程控数字交换的体系结构中,周期级程序(例如摘挂机检测程序、脉冲识别程序、位间隔识别程序)是由时间表调度实现的。
所谓时间表调度,是指每经过交换系统的最短有效时间(这通常是指各周期性程序周期的最大公约数),都会检查调度表的调度要求,如果某个程序在这时需要执行,则调度程序开始执行它。
调度表任务如下进行初始化:时间(10ms)\任务0:摘挂机检测任务1:脉冲检测任务2:位间隔检测任务0 0 1 01 0 1 02 0 1 03 0 1 04 0 1 05 0 1 06 0 1 07 0 1 08 0 1 09 0 1 110 0 1 011 0 1 012 0 1 013 0 1 014 0 1 015 0 1 016 0 1 017 0 1 018 0 1 019 1 1 1这个交换系统提供了三个周期性调度程序(摘挂机检测程序、脉冲识别程序和位间隔识别程序),它们的调用周期分别为200ms、10ms和100ms,所以我们系统的最小调度时间为10ms。
西邮,彩灯,数电,课程设计
西安邮电学院数字电路课程设计报告书——多路彩灯控制器学院名称:电子工程学院学生姓名:专业名称:电子科学与技术班级:0904实习时间:2011年12月5日—— 2011年12月16日题目:多路彩灯控制器一、实验目的:1. 3.了解数字系统设计的基本思想和方法,学会科良好掌握数字电路课程所学的理论知识。
2熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进电路设计。
学分析和解决问题。
4.培养认真严谨的学习态度和工作作风.二、实验要求:1、控制8路彩灯按预设的花型进行变换。
2、花型种类不少于三种,花型自拟。
3、分别用快慢两种节拍实现花型变换。
4、会合理布线和调配,布线完成后会用万用表等工具来查找错误。
三、使用元件:1、元件:器件个数器件个数555定时器 1 电阻100欧 174LS194 2 74LS00 274LS161 2 74LS04 1电阻 150k 1 电阻 5.1k 1电容4.7微法 1 电容0.01微法 174LS74 1 74LS151 12、工具:面包板 ------------------------------------------------------- 一个;万用表 -------------------------------------------------------- 一个; 导线 --------------------------------------------------------- 若干; 钳子 -------------------------------------------------------- 一个。
四、总体方案的设计:用两种不同节拍显示彩灯的花型。
首先,确定电路主要由基本CP脉冲发生电路、分频电路、状态控制电路、花型控制电路四个模块构成。
其中基本CP 脉冲采用简单易行的555振荡器来实现,555振荡器所产生的信号经过一个D 触发器分频,再用一个74151进行快慢节拍的选择。
西安邮电大学课程教案
西安邮电大学课程教案课程名称:集成电路设计课程设计授课教师:授课教师所在学院:电子工程学院授课班级:授课学期:一、基本信息课程名称集成电路设计课程设计课程性质√必修○限选○选修○素拓○跨学科授课专业班级学生人数:所处年级○一年级○二年级○三年级√四年级总学时60 理论课时0 实验课时60 学分 2 课程教材--上课时间上课地点答疑时间-- 答疑地点--先修课程Verilog HDL设计基础本课程在授课对象所学专业人才培养中的作用与地位通过本课程设计,可进一步应用和巩固《数字集成电路设计》、《EDA技术实验》等课程所学知识,使学生对数字集成电路的设计流程有较完整和深入的认识,能够较熟练地应用相关EDA 工具(DC、PT、NC_Verilog)进行数字集成电路的设计开发,进一步培养学生集成电路设计、综合及静态时序分析能力和较好的学习与实践能力。
本课程在知识传授、能力提升、素质培养各方面的教学目标巩固《数字集成电路设计》、《EDA技术实验》等课程所学知识,要求学生根据指导教师布置的设计题目,根据集成电路设计流程,使用EDA工具完成电路的系统结构划分、Verilog语言描述、功能仿真、综合、静态时序分析及后仿真等。
通过本课程设计,学生可对数字集成电路设计流程有较完整和深入的认识,可进一步增强应用相关EDA工具的能力,为今后从事数字集成电路设计奠定良好的基础。
学生情况分析经过《数字电路与逻辑设计》,《Verilog HDL数字系统设计》,《数字集成电路设计》,《EDA技术实验》等课程的学习,学生已经对数字集成电路设计的基本流程有了一定了解和掌握。
但如何使学生综合应用所学知识,完成一个较复杂电路从前端到后端的设计工作(包括系统结构划分、Verilog语言描述、功能仿真、综合、静态时序分析及后仿真等)仍然是难点,需要提高。
所出题目难度适中,学生可基于题目完成数字集成电路从前端到后端的设计工作,从而提高学生数字集成电路设计的实践能力。
西安邮电大学C语言 软件设计报告
西安郵電學院软件设计报告题目:小区物业管理系统院系名称:电子工程学院专业名称:光电信息工程班级:光电1101学生姓名:张萌学号(8位):05114014指导教师:王西龙设计起止时间:2012年04月09日~2012年04月23日一. 设计目的进一步掌握和利用C语言进行程设计的能力,理解和运用结构化程设计的思想和方法,熟练掌握条件语句、循环、数组、函数操作,初步掌握开发一个小型实用系统的基本方法,学会高度一个较长程序的基本方法和利用流程图或N-S图表示算法,将本课程所学的知识合理地运用于实践当中。
了解一些书上没有的函数及使用方法。
二. 设计内容小区管理系统设计:小区管理系统包括小区成员的所住单元、住户号、工作单位姓名、电话号码等信息;——小区管理系统主要提供以下功能:1.系统的登录界面(主要包括用户名、密码的设置、新用户的创建、密码的修改等);2.系统以菜单方式工作3.住户信息录入功能——输入4.住户信息浏览功能——显示5.住户信息查询、修改、增加功能(1)按姓名(2)按电话号码6.住户信息删除功能7.住户信息以文件方式保存、读取8.住户信息的统计三.概要设计1.功能模块图依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构:2.各个模块功能的详细描述●主函数: main();●登录菜单:⑴. 进入主菜单:menu();⑵.修改密码函数: repassword();⑶.登录界面函数: print1();⑷创建用户函数: usercreat();●主菜单:⑴输入函数:head=create();⑵输出函数:print(head);⑶住户信息文件的保存函数:save_inf(head);⑷住户信息文件的读取函数:head=read_inf();⑸住户信息的查找函数:find(head);⑹住户信息的修改函数:re(head);⑺住户信息的删除函数:delete(head);⑻住户信息的添加函数:add(head);⑼信息的排序:sort(head);⑽住户信息的统计:count(head);四.详细设计1.功能函数的调用关系图2.各功能函数的数据流程图①输出函数print()的流程图开始执行while循环执行printf()语句结束○2输入函数create()的流程图开始Printf()提示语句;Scanf()语句输入数执行While()语依次查找链表再执行scanf()语句结束○3执行查找函数find()流程图开始执行while循环语句执行if判断语句结束○4执行修改函数re()的流程图开始执行while语句进行查找执行if语句进行判断执行while语句进行选择要修改的内容结束○5执行删除函数delete的流程图开始If语句判断节点是否为空执行while进行查找要删除的节点结束○6添加函数add的流程图开始执行scanf语句输入要添加的信息执行while语句查找添加的位置结束○7执行排序sort函数的流程图开始执行for循环统计节点的数目执行for循环节点一到尾部执行for循环找最大节点执行for循环给最后尾节点排序结束3.重点设计及编码1)密码输入函数(实现密码能够再输错的情况下修改);编码:printf("\n\n**-----------请输入密码(6位)login in: ");for(i=0;i<7;i++){mima[i]=getch();if(mima[i]=='\r')break;if(mima[i]=='\b'){printf("\b \b");i=i-2;}else if(mima[i]!='\r')printf("*");}mima[i]='\0';2)从文件中实现一次读取:编码:fp=fopen("mima.txt","rt");while(fscanf(fp,"%s %s",n,a)!=EOF){if(strcmp(mima,a)==0&&strcmp(root,n)==0)//进行判断是否一致{printf("\n\n***********恭喜你登录成功!***********\n");lead();break;}}fclose(fp);if(fp==NULL){printf("\n\n*-----抱歉登录指令错误,请选择(3)重新登录!-------*\n");}3)登录函数实现与主体函数的链接:编码:lead(){printf("*************** ----- 欢迎进入登录界面-----*************************\n\n");printf("*-------------------------1.进入主菜单--------------------------------*\n");printf("*-------------------------2.修改密码----------------------------------*\n");printf("*-------------------------3.重新登录----------------------------------*\n");printf("*-------------------------4.创建用户----------------------------------*\n");printf("*-------------------------0.退出系统----------------------------------*\n");printf("***************************************************** ******************\n");}4)输入函数找准链表节点进行输入:编码:struct person *head,*p1,*p2;head=p2=(struct person *)malloc(N); /* head *p2都指向头结点*/printf("请输入: 单元号户号姓名性别工作单位电话号码(输入户号0结束)\n");p1=(struct person *)malloc(N);scanf("%s%ld%s%s%s%s",p1->num,&p1->num1,p1->name,p1->sex,p1->com, p1->tel);while(p1->num1!=0){p2->next=p1;/* 将新结点连接到表尾*/p2=p1; /* p2指向新的表尾*/p1=(struct person *)malloc(N);/* p1指向新申请的结点*/scanf("%s%ld%s%s%s%s",p1->num,&p1->num1,p1->name,p1->sex,p1->com,p1-> tel);}p2->next=NULL;/* 表尾结点next域置空*/free(p1); /* 释放无效空间*/return head; }5)文件的保存函数与读取函数要保持一致:编码:for(stu=h->next;stu!=NULL;stu=stu->next)fprintf(fp,"%s %ld %s %s %s %s\n",stu->num,stu->num1,stu->name,stu->sex,stu-> com,stu->tel); /*格式化字符串写函数*/printf("\n文件已成功保存,按任意键返回!\n");getch(); /* 从键盘上输入一个字符但不会现在屏幕上*/fclose(fp); /* 将文件所指的指针FP关闭*/}fscanf(fp,"%s %ld %s %s %s %s\n",stu->num,&stu->num1,stu->name,stu->sex, stu->com,stu->tel);/*格式化字符读函数*/r->next=stu;r=stu;}r->next=NULL; /*尾指针置空*/fclose(fp);6)排序函数关键在找最大节点的位置时能记录前一节点的位置:编码:struct person *p,*pre1,*pre2,*r,*s;int count=0,i;for(s=h;s->next!=NULL;s=s->next) /*统计节点数*/{count++;}for(s=h;s->next!=NULL;s=s->next); /*循环体语句为空,找尾节点*/for(i=1;i<count;i++){pre1=h; /*pre1指向r前的一个节点*/pre2=h->next; /*pre2指向p前的一个节点*/r=pre1->next;p=pre2->next;while(p!=s)//不等于尾节点{if(p->num1>r->num1){pre1=pre2; /*指针r始终指向数据较大的节点*/r=p;}pre2=pre2->next;//依次往下查找p=p->next;}pre1->next=r->next; //释放最大的节点r->next=s->next;//给s节点附上新的节点s->next=r;}for(p=s->next,pre1=s;s->num1>p->num1;pre1=pre1->next,p=p->next);//给s节点后的进行排序h->next=s->next;//找到插入的位置s->next=p;pre1->next=s;printf("按任意键继续\n");getch();7)修改函数中要实现能对修改选项的选择:编码:while(p->next!=NULL){p=p->next; /* 继续查找*/if(strcmp(p->name,name)==0){while(choice!=0)/* 进行选择修改信息*/{printf("请输入要修改的选项:1.单位号 2.房户号 3.工作单位 4.电话号码0:退出\n");printf("请选择(0--4):");scanf("%d",&choice);if(choice==1){printf("请输入新的单位号: ");scanf("%s",p->num);}if(choice==2){printf("请输入新的房户号: ");scanf("%ld",&p->num1);}if(choice==3){printf("请输入新的工作单位: ");scanf("%s",p->com);}if(choice==4){printf("请输入新的电话号码: ");scanf("%s",p->tel);}}}return 1;}return 0;8)删除函数关键在找要删除节点的位置:编码:while(p!=NULL){if(strcmp(p->name,name)==0) /* 找到要删除的节点*/{p0->next=p->next; /*后续结点链接到前驱结点之后*/free(p);return 1;}p0=p; /* 移向指针继续查找*/p=p->next;9)添加函数关键在找到要添加的位置:编码:while(p0->next!=NULL&& p0->next->name==p->name)p0=p0->next; /* 继续查找添加的位置*/if(p0->next!=NULL&& p0->next->name==p->name){free(p);/* 释放新结点的存储空间*/return 0; /* 不添加就返回0*/}p->next=p0->next;/*后续结点连接到新结点之后*/p0->next=p; /* 新节点连接到前驱接点之后*/10)统计函数在于实现住户单元号相同与不同的情况下的记录:编码:struct person *p;sort(h);i=0,j=0,dcount=0;drcount[j]=0;for(p=h->next,d[i]=p->num,dcount=1;p!=NULL;p=p->next){count++; //统计总人数if(d[i]!=p->num)//楼号不相等则继续查找{i++;d[i]=p->num;dcount++;j++;drcount[j]=1;//该栋楼人数加为1}elsedrcount[j]++; //统计每栋住户楼的人数}五.测试数据及运行结果1.正常数据及运行结果从文件中读取信息从键盘中输入信息住户信息的删除住户信息的修改住户信息的添加2.异常测试数据及运行结果六.调试情况,设计技巧及体会1、通过这次实习,我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对WIN—TC和C++的使用技巧。
