您好,欢迎访问三七文档
1HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGYC语言程序设计实训报告实训题目:汽车零部件采购管理程序专业:软件工程班级:T1323-3姓名:成绩:完成日期:2014.5.12指导教师:2目录1.实训题目与要求…………………………………………………3页1.1题目描述……………………………………………3页1.2题目要求……………………………………………3页2.系统设计…………………………………………………………4页2.1系统功能模块划分……………………………………4页2.2数据结构设计……………………………………………4页2.3函数的规划与设计………………………………………5页2.4主函数的流程分析与设计………………………………6页2.5主要功能模块的流程分析与设计………………………6页3.程序测试与运行结果……………………………………………8页3.1测试用例数据……………………………………………8页3.2测试结果…………………………………………………8页3.3测试中出现的问题、原因与分析………………………15页4.实训总结…………………………………………………………15页4.1实训中的难点及其解决方法……………………………15页4.2不足之处…………………………………………………16页4.3实训心得…………………………………………………16页5.程序源代码……………………………………………………16页31、实训题目与要求1.1题目描述(1)已知在汽车生产时,需要向零部件生产厂商采购零部件,设计一个汽车零部件采购管理程序,以方便采购管理部门对采购零部件的管理。该单位每次采购都有一个采购编号,每次采购一种零部件。该程序应该具有如下功能1)能从键盘输入采购信息。2)指定采购编号,显示采购的零部件信息。3)指定零部件名称,显示该零部件的所有采购信息。4)给定采购编号,修改采购信息。5)给定采购编号,删除采购信息。6)根据零部件名称,统计采购数量。7)根据采购员统计,采购的次数。1.2题目要求(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。(2)采购信息包括:采购编号、零部件名称、采购日期、采购员、采购数量、采购单价、供货单位。(3)为程序设计windows窗口,在该窗口上以按钮的形式为用户提供“菜单”,通过点击各个功能项对应的按钮完成操作。42、系统设计2.1系统功能模块划分1、导入键:可以输入地址导入,也可查找地址导入。2、添加键:分别输入采购信息,可添加采购信息。3、删除键:输入采购编号,可删除采购信息。4、显示零件信息键:输入零件名称,可显示信息。5、显示采购信息键:输入采购编号,可显示信息。6、修改键:经过显示采购信息,然后修改信息。7、统计采购数量键:输入零件名称,可统计数量。8、统计采购信息键:输入采购员姓名,可统计。9、保存键:输入文件名,可保存所有采购信息到文件中。2.2数据结构设计我是用的尾插法指针链表做的,一个节点保存一个采购信息,插入代码为:if(head.next==NULL)head.next=temp;elser-next=temp;r=temp;r-next=NULL;5结构体定义如下:structstu{charnumber[20];charmName[20];charname[20];intscore;intyear;intmonth;intday;floatprice;charplace[50];structstu*next;};2.3函数的规划与设计1)所有函数模块声明如下:voidcreate(HWNDhwnd,LPARAMlParam);//文本框和按钮的计voidprint();//文字的设计voidcommand();//按钮响应设计voidreadData();//导入采购信息1采购信息2采购信息36voidadd();//添加voidalter();//修改voidremov();//删除voiddisplay();//显示采购信息voidshow();//显示零件信息voidstatistics();//统计数量voidvital();//统计次数voidsave();//保存voidopen();//文件的打开其中command()函数会分别用switch语句调用各功能函数open()函数是在readData();导入函数中被调用的。2.4主函数的流程分析与设计1)intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow)函数中是设计主文本框2)LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)函数是switch语句对每个功能函数的调用。2.5主要功能模块的流程分析与设计1)以add()添加功能为例的流程图如下:7读入编号文本框内容SS!=空输出提示,结束。读入年份YY是否合法输出提示,清空年份框读入月份MM是否合法输出提示,清空月份框读入日份DD是否合法输出提示,清空日份框读入其他文本框内容是否找到尾指针,连接在后面输出内容是是是否否否83程序设计和测试结果3.1测试用例数据20130230311轮子董涛600201359100.000000湖北汽车工业学院20130230313书吴超5002013530200.000000武汉大学20130230315轮子董涛1002014218200.000000武汉大学3.2测试结果(1)主界面:(2)导入:1)搜索导入:92)手输导入:10(3)添加信息:它会对你的年,月,日,编号,进行判断合法性,包括闰年2月份的判断,如有错误,它会提醒你那里出错,并清除错误对话框里的内容,只有全部合法,才可以添加。如果不输入编号会有提示,并让你重新输入。(4)删除采购信息:输入编号就可以删除要删除的内容。如果你没有输入编号,他会提示,并重新操作。11(5)显示零部件信息:12输入零部件名就可显示它的所有采购信息如果没有输入零部件名,他会提醒你输入零部件名。(6)显示采购信息:输入采购编号,即可得到它采购信息。如果没有输入编号,他会提醒你输入编号。(7)显示修改采购信息可以先用编号,点显示采购信息键,然后对要修改的采购信息进行修改,再点击修改键,可完成修改。13(8)统计采购数量:14可输入你要统计的零件名称,即可查出他的所有采购数量。如果没有输入零部件名称,他会提醒你输入。(9)统计采购次数:可输入采购员的名字,即可查出他的采购总次数如果你没有输入采购员名字,他会提醒你输入采购员名字。(10)保存采购信息输入保存地址。即可保存信息如果没有输入地址,他会提醒你输入地址。153.3测试中出现的问题、原因与分析(1)开始时没有主界面,不能跳转界面,因为不会这些特定函数,(2)不能二次导入,因为头结点已经赋值,并连在了一起,不能二次赋值。4实训总结4.1实训中的难点及其解决方法1)开始时,老师给程序的是头插法,但这回在以后的操作中出现数据翻转。后来,我就又改了老师的程序,变成了尾插法。164.2不足之处不会用高级windows语言编写一个可以跳转界面的程序,我的所有操作都是一个界面,没法实现界面跳转。4.3实训心得我验收时,看到了一个同学,用下拉式菜单,和主界面,突然感觉自己还有很多东西要学,这次实训我明白,必须自主学习一些东西,我不会的还很多,我还明白了,看到的界面并没有我想象中的那么难,例如这次windows操作,我能编写一个小型计算机,虽然还有很多功能没有实现,但还是可以做到的。所以我要努力去学新东西。5程序源代码#includewindows.h#includestdio.h#includestring.hLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);voidcreate(HWNDhwnd,LPARAMlParam);//文本框和按钮的设计voidprint();//文字的设计voidcommand();//按钮响应设计voidreadData();//导入voidadd();//添加voidalter();//修改voidremov();//删除voiddisplay();//显示采购信息voidshow();//显示零件信息voidstatistics();//统计数量voidvital();//统计次数voidsave();//保存voidopen();//文件的打开RECTrect;17RECTrect2;RECTrect3;RECTrect4;RECTrect5;RECTrect6;RECTrect7;RECTrect8;RECTrect9;RECTrect10;RECTrect11;RECTrect12;RECTrect13;RECTrect14;RECTrect15;RECTrect16;RECTrect17;RECTrect18;RECTrect19;RECTrect20;HDChDC;HWNDhwnd;PAINTSTRUCTpaint;structstu{charnumber[20];charmName[20];charname[20];intscore;intyear;intmonth;intday;floatprice;charplace[50];structstu*next;};structstuhead={,0};staticcharmyFileName[MAX_PATH];//在VC++6.0中,_MAX_PATH的值为260。voidopen(){//myFileName用于保存文件的路径的字符串//MAX_PATH是C语言通过#define指令定义的一个宏常量,它定义了编译器所支持的最长全路径名的长度。//OPENFILENAME结构包含了GetOpenFileName和GetSaveFileName函数用来初18始化打开或另存为对话框的信息。//在用户关闭对话框后,系统返回关于用户的选择信息到这个结构中。staticOPENFILENAMEmyOfn;memset(&myOfn,0,sizeof(OPENFILENAME));memset(myFileName,0,sizeof(char)*MAX_PATH);myOfn.lStructSize=sizeof(OPENFILENAME);//确定结构的大小myOfn.hwndOwner=hwnd;//指定它的父窗口注意hwnd是前面定义了的窗口句柄变量myOfn.hInstance=NULL;//一般为NULL,表示我们使用的是通用对话框//,当然我们也可以自定义对话框,此时hInstance指示资源的handle。myOfn.lpstrFilter=TEXT(TextFiles(*.txt)\0*.txt\0)\TEXT(AllFiles(*.*)\0*.*\0\0);;//指示打开或者保存文件时的过滤器,结构是这样的:描述\0过滤\0,最后一项必须是两个\0,myOfn.lpstrFile=myFileName;//指定用于保存文件的完整路径及文件名的对象myOfn.nMaxFile=MAX_PATH;//指示上面对象大小myOfn.Flags=OFN_FILEMUSTEXIST;//对话框打开或保存时的一些选项myOfn.lpstrDefExt=TEXT(TXT);//指定默认扩展名if(GetOpenFileName(&myOfn))SetDlgItemText(hwnd,1,myFileName);//给对应文本框设置文件路径的字符串else{MessageBox(NULL,TEXT(没能打开文件.),TEXT(提示),MB_ICONERROR);SetDlgItemText(hwnd,1,TEXT());return;}}intWI
本文标题:C语言实训
链接地址:https://www.777doc.com/doc-5900118 .html