C语言图书管理系统课设报告(精选6篇)
C语言图书管理系统课设报告 第1篇
程序设计课设论文
论文题目: 图书信息管理系统
学 院: 年 级: 班 级: 姓 名: 学 号: 指导教师:
软件学院 2015级
软件工程1522班 韩汀
201515614100 邵回祖
2016年6月14日-2016年6月22日
目录
1.需求分析---------1
2.概要设计---------2
3.详细设计---------3
4.调试分析---------8
5.核心源程序清单和执行结果------------------------8
6.课程设计总结----19
1.需求分析
(1)程序的功能:
图书信息管理系统涉及5项功能,包括录入,浏览,查询,删除和修改,其中查询可通过书名或作者两种途径进行。
图书信息录入:将图书信息写入程序,包括序号,书名,作者,出版社,出版日期和价格。
图书信息浏览:将所有已录入的图书信息按序号排序列出。图书信息查询:可根据图书的书名或作者查找该书的具体信息。图书信息删除:可根据序号删除指定图书信息。图书信息修改:可根据序号修改图书所有信息。
(2)输入输出要求:
无
(3)测试数据: 高等数学 1 高等教育出版社 2014.7 31.20 2 概率论 2 高等教育出版社 2008.6 37.40 3 线性代数 3 高等教育出版社 2007.5 17.30 4 C程序设计 4 清华大学出版社 2010.6 33.00 1
2.概要设计:(1)数据的存储结构
(2)系统流程: 2
3.详细设计:
(1)信息录入函数: 用scanf函数输入定义的书籍结构体的序号,书名,作者,出版社,出版时间和价格。建立10本书籍的书库,输入完毕,返回主函数。
(2)信息浏览函数:
(3)信息查询函数:
这里分两个项目,一个是通过书名进行查询,另一个是通过作者进行查询。在定义查询函数时使用switch函数:
通过书名进行查询:
通过作者进行查询:
(4)信息删除函数:
根据序号删除图书,操作成功后显示删除成功,任意键跳转。如果序号输入错误显示图书不存在。
(5)信息修改函数:
在此函数中,根据序号选择图书修改,存在一个问题,就是难以选择其中一项进行修改,只能全部修改。
出现的问题:只能全部进行修改:
4.调试分析:
(1)在初次运行中,发现系统闪退问题存在于第2,3,4,5项中,输入序号点击回车系统闪退。最后在每一项最后加入system(“pause”);使得闪退问题修复。
(2)在最初编写代码过程中,始终输入:FILE *fp;
if((fp=fopen(“library”,“r”))==NULL)最后修改为:FILE *fp;
if((fp=fopen(“library.doc”,“r”))==NULL)
(3)在信息修改一栏中,目前仍无法实现单独修改一条信息的功能,只能根据序号,对序号所对应的全部图书信息进行修改。
if(i!=library.count){
mbook book;
printf(“ntt请输入修改后此图书的信息n”);
printf(“t请输入图书号:”);
scanf(“%s”,book.number);
printf(“t请输入图书名:”);
scanf(“%s”,book.name);
printf(“t请输入作者名:”);
scanf(“%s”,book.author);
printf(“t请输入出版社:”);
scanf(“%s”,book.publish);
printf(“t请输入出版时间:”);
scanf(“%s”,book.time);
printf(“t请输入该书的价格:”);
fflush(stdin);
scanf(“%f”,&book.price);
strcpy(library.book[i].name,book.name);
strcpy(library.book[i].number,book.number);strcpy(library.book[i].publish,book.publish);strcpy(library.book[i].author,book.author);strcpy(library.book[i].time,book.time);library.book[i].price=book.price;save();5.核心源程序清单和执行结果:
(1)源代码:
#include
typedef struct { int count;//书的本数
mbook book[100];//最大可有100本书 }mlibrary;
mlibrary library;void save()//保存图书信息。{ FILE *fp;if((fp=fopen(“library.doc”,“w”))==NULL){ printf(“n不能保存图书信息n”);return;} fwrite(&library.count,sizeof(int),1,fp);fwrite(library.book,sizeof(library.book[0]),library.count,fp);}
void putin()/*定义录入函数*/ {
int y=1;
system(“cls”);while(y)
{ printf(“t请输入您的书籍的书号:”);scanf(“%s”,library.book[library.count].number);printf(“t 请输入书名:”);scanf(“%s”,library.book[library.count].name);printf(“t 请输入作者名:”);scanf(“%s”,library.book[library.count].author);printf(“t 请输入出版社:”);scanf(“%s”,library.book[library.count].publish);printf(“t 请输入出版时间:”);scanf(“%s”,library.book[library.count].time);printf(“t 请输入该书的价格:”);fflush(stdin);scanf(“%f”,&library.book[library.count].price);library.count++;printf(“n 是否继续录入(1.继续;0,退出录入):”);fflush(stdin);scanf(“%d”,&y);if(y!=1){ y=0;break;} } save();} void lookup(){
int i;
system(“cls”);
printf(“图书号t图书名t作者名t出版社t出版日期t图书价格n”);for(i=0;i void search()/*定义查询函数*/ { int a;system(“cls”);/*进行清屏*/ printf(“tt******************************n”);printf(“开始查询n”);printf(“ttt1---------------search_by_namen”);printf(“ttt2---------------search_by_writern”);printf(“ttt0---------------exitn”);printf(“tt******************************n”);printf(“tt请选择你想要的查询方式:”);fflush(stdin);scanf(“%d”,&a);switch(a){ case 1: search_by_name();break;case 2: search_by_author();break;case 0: return;} system(“pause”);} void del()/*定义删除函数*/ { int i;char number[10];system(“cls”);/*清屏*/ printf(“n Please type in the number of the book you want to delete:”);fflush(stdin);scanf(“%s”,number);for(i=0;i mbook book; printf(“ntt请输入修改后此图书的信息n”); printf(“t请输入图书号:”); scanf(“%s”,book.number); printf(“t请输入图书名:”); scanf(“%s”,book.name); printf(“t请输入作者名:”); scanf(“%s”,book.author); printf(“t请输入出版社:”); scanf(“%s”,book.publish); printf(“t请输入出版时间:”); scanf(“%s”,book.time); printf(“t请输入该书的价格:”); fflush(stdin); scanf(“%f”,&book.price); strcpy(library.book[i].name,book.name); strcpy(library.book[i].number,book.number);strcpy(library.book[i].publish,book.publish);strcpy(library.book[i].author,book.author);strcpy(library.book[i].time,book.time);library.book[i].price=book.price;save();} else printf(“n cannot found!n”); fflush(stdin); getchar(); system(“pause”);} int main(){ int a; FILE *fp; if((fp=fopen(“library.doc”,“r”))==NULL){ printf(“n不能打开图书信息库n”);fp=fopen(“library.doc”,“w+”);printf(“n初始化图书信息库,初始化之后要重启程序n”);library.count=0;fwrite(&library.count,sizeof(int),1,fp);fclose(fp);return;} fread(&library.count,sizeof(int),1,fp);fread(library.book,sizeof(library.book[0]),library.count,fp);fclose(fp);do { system(“cls”);printf(“nnnnntttt图书信息管理系统ttttn”);printf(“tt*********************************************n”);printf(“ttt1------------------图书信息录入n”);printf(“ttt2------------------图书信息浏览n”);printf(“ttt3------------------图书信息查询n”);printf(“ttt4------------------图书信息删除n”);printf(“ttt5------------------图书信息修改n”);printf(“ttt0-----------------退出图书管理系统n”);printf(“tt*********************************************n”);printf(“ttPlease Enter Choose: ”);fflush(stdin);scanf(“%d”,&a);switch(a){ case 1: putin(); break;case 2: lookup(); break;case 3: search(); break;case 4: del(); break;case 5: update(); break;case 0: printf(“nn退出nn”); break;default: printf(“n序号不对n”);} }while(a!=0);save();return 0;}(2)运行结果: 在codeblocks中编译、运行目标程序后,进入到主界面,显示如图1: 进入主界面后,显示信息选择操作,根据相应序号选择相应操作,输入1后进入图书信息录入选项,按顺序录入相应信息,完成后按1继续录入,按0结束录入,显示如图2: 按0返回主界面,进入到信息浏览界面,可查看已录入的全部图书信息(下图中只录入一本图书信息),查看结束后按任意键返回主界面,显示如图3: 根据选项进入信息查询界面,有两个选择,分别为根据书名和根据作者,按1进入根据书名进行查询,可显示相应图书信息,显示如图4: 根据作者进行查询,以查询无果为例,显示cannot found!显示如图5: 按5进入图书信息修改界面,输入序号显示图书信息并进行修改,按顺序依次修改信息(目前无法对单独某一条信息进行修改),显示如图6: 按4进入信息删除界面,输入相应序号后显示删除成功,按任意键返回,显示如图7: 在信息删除界面中,输入序号,如果没有存储该序号图书信息,显示cannot found!显示如图8: 6.课程设计总结: 在课程设计过程中,由于对代码和各种概念不是很清楚,所以对结构体变量的引用非常生疏。在调试程序的过程中,也存在许多问题,最后一一修改。通过自己对书本知识一遍又一遍的复习,自己感觉做系统不再那么的复杂,包括框架的建立,界面设计,调用函数等等。经过一个星期的锻炼,自己感觉到了明显的提高,以后还需多练习,多锻炼,加强对C语言综合知识的理解与应用。 请老师审阅我的课程设计报告。谢谢 软件学院 1522班 韩汀 201515614100 题 目 小型职工工资管理系统 专业班级 2016级通信工程本科1班 组 别 通信第二组 学生姓名 院(系) 信息工程系 指导教师(职称) 完成时间 2017年5月31日 课程设计任务书 题目职工工资管理系统 班级2016级通信工程本科1班 学号 201605070106 姓名 学号 201605070111 姓名 学号 201605070118 姓名 学号 201605070119 姓名 学号 201605070136 姓名 一、主要内容: 本课程设计结合本学期所学C语言知识,准备设计开发一个简单职工工资管理系统。工资管理系统是企业不可或缺的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。设计开发这个系统需要用到单链表、文件读取操作、结构体、函数、指针等C语言知识。本课程设计准备通过Windows控制台应用程序实现职工工资管理系统的简单运行。利用所学知识,本着简单、易用的设计原则,本课程设计尽量实现良好、美观的“人机界面”,便于软件的操作使用。本次设计主要学习内容包括: (一)进一步学习并熟练掌握C语言语法和编程思想。 (二)学习C语言提供的库函数,熟悉Visual C++ 6.0的开发工具。 (三)学习C语言函数、链表、结构体、文件读取、指针等知识。 (四)学习如何查阅他人的文档进行软件的设计与开发。 二、基本要求: (一)质量要求 1.职工工资管理系统基本功能模块的设计应包括:显示主菜单功能、职工信息 的录入、添加、删除、修改、查询、排序功能,退出系统。测试文件的读取与存储是否正常、测试评估界面是否合理,友好。 2.对职工工资管理系统设计并进行调试、修复、完善、测试。3.定期主动向指导教师汇报任务进度,认真填写相关报告文档。4.按时完成各阶段工作,不突击,不抄袭。 (二)进度要求 1.明确课程设计任务,搜集资料:2017年2月28日—3月14日。 2.完成程序的设计与实现,撰写课程设计论文初稿:2017年3月15日—5月15日。 3.与指导教师沟通,完成课程设计论文定稿:2016年5月16日—2017年5月28日。 4.进入课程设计论文审阅阶段,准备答辩:2017年5月29日—6月9日。 三、主要参考资料: 1.工资管理系统课程设计程序http://blog.csdn.net/JZQT_T/article/category/2317235 2.C语言程序设计规范及基础 https://wenku.baidu.com/view/58b***409c7b.html 3.《明解C语言 第3版》,(日)柴田望洋著,人民邮电出版社 4.《C Primer Plus 第6版 中文版》,姜佑 译,人民邮电出版社 5.《C程序设计 第四版》,谭浩强著,清华大学出版社 6.《C和C++实物精选》,徐波著,北京邮电出版社 学 生 签 名: 指导教师签名: 年 月 日 目录 概述...............................................1 1.1 设计思想.................................................................................................................................1 1.2 设计原则.................................................................................................................................1 1.3 性能需求.................................................................................................................................1 1.4 课程设计报告内容及分工情况.............................................................................................2 1.4.1 课程设计报告内容.........................................................................................................2 1.4.2 课程设计分工情况.........................................................................................................2 2 总体设计...........................................3 2.1 系统功能设计图.....................................................................................................................3 2.2 主函数 main().........................................................................................................................3 2.3 程序流程图..............................................................................................................................4 3 详细设计...........................................4 3.1 函数..........................................................................................................................................4 3.2 函数流程图..............................................................................................................................9 4 运行结果与调试....................................16 4.1 运行结果...............................................................................................................................16 4.2 程序调试...............................................................................................................................21 结束语..............................................22 附录................................................24 概述 1.1 设计思想 1.系统分成几个相对独立的模块,但这些模块都进行集中式管理。 2.分层的模块化程序设计思想,整个系统采用模块化结构设计作为应用程序,有较强的可操作性和扩展性。 3.合理的数据设计,在应用系统设计中,相对独立的模块间以数据相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。 1.2 设计原则 为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则: 1.合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品进货、销售等工作。 2.实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。 3.准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。 4.易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。 5.源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。 1.3 性能需求 (1)支持工资信息一次性多组导入 (2)非法操作能够提示错误并且知道安全行为方式(3)信息查询时界面显示数量 1.4 课程设计报告内容及分工情况 1.4.1课程设计报告内容 1.系统功能模块结构图和程序流程图 2.数据结构设计及用法说明 3.程序结构(画功能模块图或流程图)4.各模块的功能 5.实验结果(包括输入数据和输出结果)6.设计体会 7.参考文献 1.4.2 课程设计分工情况 本组共有5人,具体分工情况如下: (1)学号:201605070106,姓名:司笑笑,具体负责功能模块结构图和程序流 程图的设计;负责“排序”代码的编写及整体代码的整合;负责程序设计报告中函数详细设计。 (2)学号:201605070111,姓名:代慧,负责“添加”、“录入”代码的编写;负责显示界面的优化、美化。 (3)学号:201605070118,姓名:王春亚,负责“查询”代码的编写;程序的测试与调试。 (4)学号:201605070119,姓名:董子阳,负责“修改”代码的编写;具体负责实验结果的采集;程序设计报告书的校对;负责流程图的绘制。 (5)学号:201605070136,姓名:马良智,负责“删除”代码的编写;具体负责程序设计报告书的排版与完善;相关文献的查找和参考。总体设计 2.1 系统功能设计图 系统功能设计是使整个系统能基本实现职工工资管理功能,能让公司的管理者利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,提高了工作效率。管理信息系统(MIS)主要的功能就是进行信息的收集、查询、存储,同时对这些信息进行维护的。 本系统共包括七大模块,分别是录入模块,添加模块,修改模块,删除模块,查询模块,排序模块,输出模块。系统功能模块设计如图2-1所示。 图2-1 小型职工工资管理系统功能模块结构图 2.2 主函数 main() (1)函数的功能: 用于联系各个功能函数模块,以及退出程序时的退出画面提示。 (2)函数的入口: 整个程序是从主函数开始的。 (3)函数的出口: 当从main()的switch()开关结构中进入,即choise的值大于7时通过return退出main()函数,即:退出整个程序。(4)函数调用关系:该函数不被其它函数调用。 2.3 程序流程图 详细设计 3.1 函数 (1)功能函数mainMenu()①函数的功能:显示主菜单 ②函数的入口:从main()进入,main()运行时进入该函数。③函数调用关系:被主函数调用。 ④函数的出口:当主菜单显示在屏幕上,结束该函数。(2)功能函数input(LinkList head)①函数的功能:进入录入职工信息系统。 ②函数的入口:程序从main()的switch()开关结构中进入,即choice的值为1时,开始进入该函数,进入函数后,首先用inputMenu()显示录入菜单选项,然后选择选项进行录入职工信息。 ③函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。 ④函数的出口:录入职工信息完成后,结束该函数而并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(3)功能函数inputMenu()①函数的功能:显示录入菜单。 ②函数的入口:从input(LinkList head))进入,input(LinkList head)被调用时进入该函数。 ③函数调用关系:被input(LinkList head))调用,并在文中无返回值的空值void函数。 ④函数的出口:当录入菜单显示在屏幕上,结束该函数。(4)功能函数hand(LinkList head)①函数的功能:进入“手动录入职工信息”。 ②函数的入口:程序从input(LinkList head)的switch()开关结构中进入,即choice的值为1时,开始进入该函数,进入函数后,首先输入录入职工人数,然后逐个录入职工信息。 ③函数调用关系:被input(LinkList head)调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。 ④函数的出口:录入全部职工信息完成后,结束该函数并执行input(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(5)功能函数read(LinkList head) ①函数的功能:进入“文件录入职工信息”。 ②函数的入口:程序从input(LinkList head)的switch()开关结构中进入,即choice的值为2时,开始进入该函数,进入函数后,输入需要录入的文件路径fileName,通过fopen()函数,即“if((fq=fopen(fileName,“r”))==NULL)” 打开文件,进入数据的处理。 ③函数调用关系:被input(LinkList head)调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。 ④函数的出口:自动录入文件中全部职工信息后,结束该函数并执行input(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(6)功能函数output(LinkList head)①函数的功能:输出职工信息。 ②函数的入口:程序在录入、添加、修改、删除、查询、排序后都进入该函数,进入函数后,将职工信息用printf()标准输出到屏幕上,然后通过fopen()函数,即“if((fp=fopen(“d:worker.dat”, “w”))== NULL)” 打开文件,将职工信息写到d:worker.dat文件中。 ③函数调用关系:被main()等多个调用。在文中无返回值的空值void函数。④函数的出口:将职工信息用printf()标准输出到屏幕上,将职工信息存入磁盘后,结束该函数。 (7)功能函数add(LinkList head)①函数的功能:添加一个职工信息。 ②函数的入口:从main()的switch()开关结构中进入,即choice的值为2的时侯,进入该函数,根据提示输入职工信息。 ③函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1添加成功。 ④函数的出口:职工信息添加成功返回1后结束该函数,并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(8)功能函数deleteWorker(LinkList head)①函数的功能:删除 一个职工信息。 ②函数的入口:从main()的switch()开关结构中进入,即choice的值为3的时侯,进入该函数,输入要删除的职工编号,删除改编号职工信息。 ③函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1删除成功。 ④函数的出口:职工信息删除成功返回1后结束该函数,并执行主函数main() 中“output(head);”,输出剩余的职工信息在屏幕上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(9)功能函数update(LinkList head)①函数的功能:修改一个职工信息。 ②函数的入口:从main()的switch()开关结构中进入,即choice的值为4的时侯,进入该函数,输入要修改的职工编号,根据提示输入新的职工信息。 ③函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1修改成功。 ④函数的出口:职工信息修改成功返回1后结束该函数,并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(10)功能函数find(LinkList head)①函数的功能:进入查询职工信息系统 ②函数的入口:程序从main()的switch()开关结构中进入,即choice的值为5时,开始进入该函数,进入函数后,首先用findMenu()显示查询菜单选项,然后选择选项进行查询职工信息。 ③函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。 ④函数的出口:查询职工信息完成后,结束该函数,然后执行主函数main()中的“break;”跳出switch()开关函数,继续执行while循环结构。(11)功能函数 findMenu()①函数的功能:显示查询菜单。 ②函数的入口:从find(LinkList head)进入,find(LinkList head)被调用时进入该函数。 ③函数调用关系:被find(LinkList head)调用,并在文中无返回值的空值void函数。 ④函数的出口:当查询菜单显示在屏幕上,结束该函数。(12)功能函数findByWay(LinkList head, int n)①函数的功能:查询职工信息”。 ②函数的入口:程序从find(LinkList head)的switch()开关结构中进入,即choice的值为1,2,3,4,5,6时,开始进入该函数,进入函数后,根据不同的选项值进行相应的查询。 ③函数调用关系:被find(LinkList head)调用。从switch()开关结构中进入,并在文中有返回值的的整型int函数,返回值为1查询成功。 ④函数的出口:查询职工信息完成后,执行“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后结束该函数,执行find(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(13)功能函数sort(LinkList head)①函数的功能:进入职工信息排序系统 ②函数的入口:程序从main()的switch()开关结构中进入,即choice的值为6时,开始进入该函数,进入函数后,首先用sortMenu()显示排序菜单选项,然后选择选项进行职工信息排序。 ③函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。 ④函数的出口:职工信息排序完成后,结束该函数,然后执行主函数main()中的“break;”跳出switch()开关函数,继续执行while循环结构。(14)功能函数 sortMenu()①函数的功能:显示排序菜单。 ②函数的入口:从sort(LinkList head)进入,sort(LinkList head)被调用时进入该函数。 ③函数调用关系:被sort(LinkList head)调用,并在文中无返回值的空值void函数。 ④函数的出口:当排序菜单显示在屏幕上,结束该函数。(15)功能函数sortByWay(LinkList head, int n)①函数的功能:职工信息排序。 ②函数的入口:程序从sort(LinkList head)的switch()开关结构中进入,即choice的值为1,2,3,4,5,6时,开始进入该函数,进入函数后,根据不同的选项值进行相应的排序。 ③函数调用关系:被sort(LinkList head)调用。从switch()开关结构中进入,并在文中有返回值的的整型int函数,返回值为1排序成功。 ④函数的出口:职工信息排序完成后,执行“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后结束该函数,执行sort(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(16)功能函数uqnum(LinkList head, int num) ①函数的功能:判断职工编号是否已存在。 ②函数的入口:程序add(LinkList head)中进入,输入职工编号后,开始进入该函数,进入函数后,判断输入的职工编号是否已经存在。 ③函数调用关系:被add(LinkList head)调用。在文中有返回值的的整型int函数,返回值为1职工编号已存在。 ④函数的出口:判断职工编号是否已存在后返回add(LinkList head),继续输入其它职工信息或重新输入职工编号。 功能实现效果如图3-1所示。 图3-1 主菜单界面 3.2 函数流程图 (1)录入职工信息 该功能模块流程如图3-2所示。 图3-2 “录入职工信息”功能模块流程图 (2)添加职工信息 该功能模块流程如图3-3所示。 图3-3 “添加职工信息”功能模块流程图 (3)删除职工信息 该功能模块流程如图3-4所示。 图3-4“删除职工信息”功能模块流程图 (4)修改职工信息 该功能模块流程如图3-5所示。 图3-5“修改职工信息”功能模块流程图 (5)查询职工信息 该功能模块流程如图3-6所示。 图3-6“查询职工信息”功能模块流程图 (6)排序职工信息 该功能模块流程如图3-7所示。 图3-7“排序职工信息”功能模块流程图 运行结果与调试 4.1 运行结果 本系统运行初始页面如图4-1所示。 图4-1 初始页面 在函数开始时,初始化临时结构体数组,让结构体内所有信息为空.,读取目标文件,然后运行功能函数,选择需要的功能。 实现效果如图4-2所示。 图4-2 输入界面 (1)根据自己需要的功能输入相应数字 图4-3职工信息的录入 图4-4职工信息的添加 图4-5职工信息的删除 4-6职工信息的修改 图4-7职工信息的查询 图4-8职工信息的排序 图4-9退出系统 (2)录入职工的信息,通过手动录入和文件录入两个方法录入职工的信息。 图4-10职工信息录入的方式 (3)查找职工的个人信息,通过输入编号、姓名、部门、基本工资、奖金和总工资进行查找。 图4-11职工信息的查询方式 (4)职工信息的排序可以通过编号排序、姓名排序、部门排序、基本工资排序、奖金排序和总工资排序。 图4-12职工信息的排序方式 (5)每次将职工信息输出在屏幕上时,都会通过fwrite写到文件D:woker.date中。 (6)根据数字提示结束程序。 4.2 程序调试 (1)每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过同学的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:有些函数会出现错误;经过多次调试和修改,才发现把“system(“cls”);”放在调用的函数之前以及适当的位置可以解决此问题。(2)修改员工信息时,输入职工编号查询出多条信息,修改错误!后来加入职工编号唯一判断的函数,让职工编号唯一不重复。 (3)排序,开始交换指针指向,一直出现指针不存在导致乱码问题,后来修改为交换指针的数据域。 (4)文件写入磁盘,用笔记本打开磁盘内的文件乱码,经查询资料了解写入磁盘的文件是二进制数据,不能通过笔记本打开,可重新把文件读入程序中,在程序中显示。 (5)忘导入 结束语 工资管理系统对于决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件工资档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对工资信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工资管理的效率,也是科学化、正规化管理的重要条件。 这一个月以来,在开发这个工资管理系统过程中,我深刻地体会到了自学能力的重要性。毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。在开发过程中,遇到困难是在所难免的,期间我跟我的指导老师和同学们进行交流,从中明白了很多。开发一个系统,恒心和毅力也是不可缺少的。同样,在开发过程当中,细心也是非常重要的,由于很多事项都要很注意才行,如果没有做到这一点,就会出错。 在这里要同学的帮助、老师的悉心指导下基本完成本次课程设计,基本达到了工资管理系统的要求。 小组各成员心得体会 Xxx: 这个系统实现了对员工信息的存储、修改、删除、查询及排序。从拿到题目到完成整个编程,从理论到实践学到了很多东西。通过这次程序设计我深入了解了链表、结构体,也学会了文件的读写,懂得了理论和实际结合是很重要的。在设计过程中遇到了很多问题,这毕竟是第一次做,同时在设计过程中发现了自己的不足之处,对以前所学的知识理解的不够深刻,掌握的不够牢固,比如单链表。总之不收获很多! Xxx: 通过这次课程设计,我对数据结构中单链表的应用有了更深的理解,并且深刻的认识了实践的重要性,只有理论与实践相结合才能很好的学习。发现想要做好课程设计,仅靠书本上的知识是不够的,还需要查阅其他的程序和知识。在这个过程中,我充分认识了数据结构在编写程序方面的重要地位,知道它的特点是可以用存储单元来存储数据,并且可以方便的实现对数据进行插入、删除和遍历等操作。 Xxx: 这个课程设计实现了对职工信息的管理,通过录入、添加、修改、删除、查询等实现对职工信息的管理。通过这次的课程设计,我学到了很多的东西。同时也找到了自己很多的不足之处。在这次课程设计中,由于以前没有好好学这门课,所以很多知识掌握的不够好,导致在编写的时候遇到很多困难,但是通过队员的帮助,得到了解决。这次课程设计,不仅让我学到了知识,更好的掌握了函数、结构体、指针、单链表等的用法,也让我知道了团队的重要性。 Xxx: 通过这次课程设计我学到了许多在课堂没有学习好的知识,同时也巩固了我之前学习的知识,在设计的过程中我补全了自己的不足,找到自己掌握的不牢固的,还有理解的不深刻的,比如:函数,结构体等等,通过这次课程设计我提高了独立思考的能力和自己的实际动手能力,我还学会了如何用流程图来表达自己的想法,同时这次课程设计也让我们小组之间加深了了解,总的来说,这次设计让我的c语言知识更加丰富! Xxx: 经过两学期的C语言学习,我们掌握了C语言的基础知识,我对课程设计有了一定的了解和体会。并且通过这次课程设计使我懂得了理论与实践相结合是很重要的。从理论中得出结论,才能真正为今后的学习、工作服务,从而提高自己的实际动手能力和独立思考的能力。在这次程序设计中,我充分领略了C语言功能的强大,包括函数、数组、指针、结构体、文件等。而且我学会了最基本的替换,然后扩展到循环、嵌套,条理很清楚。让我也深感集体的强大力量,很多东西并不是一两个人就可以完成的,比如这个小型工资管理系统程序的编写,俗话说“众人拾柴火焰高”,经过共同的努力,最终克服难关开发出了该系统。在本次课程设计中,还有一点不得不说,通过这次程序设计书的编写让我深刻的意识到拥有好的文笔是多么的重要,我们虽为工科生,但是在以后的工作岗位上也不得不面临着各种各样的工作,所以文笔也是非常重要的。 参考资料 [1] 工资管理系统课程设计程序http://blog.csdn.net/JZQT_T/article/category/2317235 [2] C语言程序设计规范及基础 https://wenku.baidu.com/view/58b***409c7b.html [3]《明解C语言 第3版》,(日)柴田望洋著,人民邮电出版社 [4] 《C Primer Plus 第6版 中文版》,姜佑 译,人民邮电出版社 [5] 《C程序设计 第四版》,谭浩强著,清华大学出版社 [6]《C和C++实物精选》,徐波著,北京邮电出版社 附录 1 C语言概况 C语言是目前使用广泛的高级程序设计语言,适用于操作系统和系统使用程序以及需要对硬件进行操作的场合。C语言具有绘图能力、可移植性强的数据处理能力,因此适于编写系统软件[4]。 2 功能分析 建立一个职工信息管理系统,其信息包括职工号、姓名、性别、年龄、学历、工资、地址、电话等。要求使用菜单操作,可实现对信息的输入和输出、文件保存。对信息的输入、输出、删除、查询等功能的实现需要建立不同的函数,在主函数中使用switch语句分别调用不同的函数来实现不同的功能。 3 系统分析 首先需要建立关于职工信息的结构体,输入函数;随后将程序模块化,在主函数中调用各个函数。 所编写的职工信息管理系统设计,主要需要实现[5,6]:(1)系统以菜单方式工作。(2)职工信息录入功能(职工信息用文件保存)。(3)职工信息浏览功能。(4)查询和排序功能:按工资查询或学历查询等。(5)职工信息删除、修改功能等功能。 使用链表记录或记录数组存储数据,进行插入,删除和查看与查询。 系统的函数组成:(1)录入信息并将信息存入文件当中。(2)输出信息。(3)查询。分为:职工号查询、工资查询。(4)删除信息。(5)修改函数:1)插入一个职工信息;2)修改原有信息:1>修改职工号;2>修改名字;3>修改性别;4>修改年龄;5>修改学历;6>修改工资;7>修改地址;8>修改电话。(6)排序函数按工资(降序)。 4 程序的设计 4.1 主流程图 4.2 实现结果 程序在运行情况下,进入到职工信息管理系统菜单界面,如图2所示。 5 结束语 通过利用C语言的强大功能,轻松实现了职工信息管理系统的设计,利用该系统可提高信息管理工作效率,并使其管理工作更加简单。 参考文献 [1]谭浩强.C语言程序设计[M].北京:清华大学出版社,2006. [2]李大友.C语言程序设计[M].北京:华大学出版社,2006. [3]崔五子.C语言程序设计与考级指导[M].北京:华夏出版社,2006. [4]李青.C程序设计辅导与实训[M].北京:清华大学出版社,2004. [5]娄策群.信息管理学基础[M].北京:科学出版社,2005. 关键词 ASP系统;作业批改;TC调用;数据统计 中图分类号G434 文献标识码A文章编号1673-9671-(2009)112-0056-02 随着信息技术的高速发展,计算机的应用越来越普及和广泛,所以目前社会上各个学校提交作业的形式也由原来的手工誊写改革成了上交电子文档,但是目前学校作业管理一般都采用以下两种方法: 1)将作业存在U盘、光盘等介质上。 2)存放到教师电脑上的一个共享目录内。 用前一种方法作业收缴麻烦、不便管理;第二种方法要好一些,但学生可以随意查看、更改作业,老师在帮学生修改作业时,也很容易搞乱哪些是改过,哪些没改过;这些都使教师对学生作业的管理产生很大的麻烦。 这就必然要求有更好方法来实现对作业的管理,我的C语言网上作业系统就在这样的情况下应孕而生了。它的应用不仅是在C语言这一门课程中。在现代化教育技术模式下,计算机在学校已相当普及。在这样的环境下,许多学校对学生的部分作业提出了更高要求,例如要求学生作业能够长期保存到计算机中以利于学校将来教学的重复利用等等,就要求教师能够在任何联网的计算机上进行在线作业的布置、批改、成绩统计、成绩浏览等,要求学生能够查询自己上交的作业,其它相关人员也可以利用计算机通过互联网对学生作业情况进行了解与查询。这是未来教育发展的趋势,也确实是一个行之有效的办法,值得去推广。 本文的创新之处有以下两个方面: 1)实现普通作业管理之外,对某个学生的全部作业的平均分以及对某一次作业全部学生的平均分进行了适当的统计,以此来掌握学生的学习情况,教师就可根据数据进行分析适当调整授课速度和难度。 2)对学生上交C语言程序直接在线运行,查看程序结果,直接根据程序结果给学生评分,避免书面程序作业批改时的错误。 1系统概述 本系统采用B/S模式建立C语言网上作业系统,主要目的是能提供给学生提交作业、教师在线批改作业的网络环境。 1)学生能完成在线注册,查看作业,提交作业,浏览、修改、删除、上传、下载作业,更主要的学生自己能随时统计自己作业提交的次数,成绩的总分及平均分,从而能快捷有效地调整自己某一阶段的学习步伐。 2)教师能在线布置作业、批改作业(直接调试运行学生C语言原程序,得到结果),可以对学生的成绩进行阶段性的统计,查看学生留言及在线回答学生的提问等。 2可行性分析 在设计该系统的初期,我作了大量的调查和规划工作,对该系统的开发可行性作了细致全面的分析,主要是从以下三个方面来分析的。 2.1技术可行性 本系统采用的是B/S模式,开发工具使用ASP和Dreamweaver MX,数据库使用SQL Server 2000,所以开发技术比较成熟,基本排除了开发工具操作和使用上的困难。但是开发本系统最主要需要解决的技术困难是:教师在批改学生提交C语言原程序时,能在系统中直接调用TC调试工具。 2.2经济可行性 这个C语言网上作业系统,是适用于大中专院校,在硬件要求上只需提供一台Web服务器,开支和花费并不大,所以从经济上分析开发该系统是完全可行的。 2.3操作可行性 该系统操作采用可视化界面,集中采用网页的形式,对普通用户来说仅需掌握一般的计算机操作知识就可,况且该系统是专门为大中专院校C语言教学而开发的,所以在该系统操作上不论是学生还是教师都应该不存在障碍。 3关键设计说明 3.1后台部分 1)本系统分为前台和后台两个主要模块,用户分为三类,分别是教师、学生、管理员,其中教师相当于普通管理员能发布作业、查看学生的作业信息等。管理员称为超级管理员,可以进行前台和后台双重管理,但是在前台和后台的管理中,为了避免登录的冲突性,在设计时分别采用session()属性和cookies()属性。 2)后台管理中涉及到公告管理、图书管理、下载管理、链接管理、用户管理、学生管理,其中用户管理包括对管理员和教师的管理。 3)该系统设置学生在注册后不允许马上登录,必须要等待管理员批准后方可登录。所以在设计学生表时,设计了字段“stu_status”默认初始值为“c”其含义是:若未被批准禁止访问。但当管理员批准后“stu_status”的值为“o”,意味着允许访问。 3.2教师批改作业管理 在实现批改作业功能时,采用分页列表形式,每页显示20条记录,并且可以罗列出全部学生提交的作业,也可单独罗列出某个学生提交的作业,对批改过的作业和未批改过的作业作出相应的标记,方便教师批改。 在这项功能中能体现本系统的一个特色:教师除了能直接批阅提交的文本作业给出成绩和批语外,还可以直接运行查看学生提交的C语言原程序。其实现的具体方法是: 1)调用run.asp程序。 <% response.write"文件下载" Dim Stream Dim Contents Dim FileName Dim FileExt Const adTypeBinary = 1 FileName =Request("FileName") FileName=replace(FileName,"works/","") if FileName = "" Then Response.Write "无效文件名." Response.End End if ' 下载这个文件 Response.Clear Response.ContentType = "application/octet-stream" Response.AddHeader "content-disposition", "attachment; filename=" & FileName Set Stream = server.CreateObject("ADODB.Stream") Stream.Type = adTypeBinary Stream.Open Stream.LoadFromFile Server.MapPath(FileName) While Not Stream.EOS Response.BinaryWrite Stream.Read(1024 * 64) Wend Stream.Close Set Stream = Nothing Response.Flush Response.End %> 2)在本地机上设置C语言的打开方式为TC。具体操作为:工具-〉文件夹选项-〉文件类型,将 *.c的文件打开方式设置为用TC。 所以当教师在点击浏览附件时系统可以自动在TC的环境下自动运行C语言原文件,这一点正好符合本系统设计的初衷,也是本系统的特色所在。 3)在线答疑。采用分页显示的列表,每页显示20条记录,主要是完成教师回答学生的疑问,所以在设计时采用论坛的形式,教师可以对学生提出的疑问使用“固顶”,从而能保证重要的消息在列表的前面。 4)数据统计。该系统的另一个创新之处是能对学生提交的作业进行成绩统计。比如可以统计学生应该提交作业的次数,以及实际提交作业的次数,成绩的平均分,还可以按学生的学号对学生进行相应的数据查询。在进行数据统计时,对数据库中的多张表进行了必要的联系,比如要查询某个学生的成绩,必须先对数据库中的student表进行查询,然后再查询answer表和readtb表(教师批改作业表),从而将answer表中的answer_id和readtb表中的read_answer_id建立联系,查询readtb表中的read_result字段(成绩字段)。 4结语 经测试,本系统很好地完成了设计之初的需要,使得教师可以在线布置作业、批改作业、对学生成绩进行统计、在线答疑;学生亦可以实现在线浏览作业、提交作业、在线疑问等功能。重要的是,老师可在任一台联网的机器上在线直接调用TC程序运行服务器端C语言作业,并调试运行得到结果,既提高了工作效率,又提高了批改的准确率。借鉴这个经验可以将本“作业系统”推广到其它程序语言的教学中去。 参考文献 [1](美)Konrad King编著(杜大鹏等译).SQL编程实用大全[M].北京:中国水利水电出版社,2003. [2] Waymire,Richard,Sawtell,Rick.Sams Teach Yourself Microsoft SQL Server 2000 in 21 Days.Macmillan Computer Pub,2002,11:1-96. [3]罗运模,王珊 等编著,周立柱审校.SQL Server 数据库系统基础[M].北京:高等教育出版社,2003. [4]光军 编著.动态网站设计编程技法[M].北京:北京航空航天大学出版社,2001. [5]邓文渊,陈蕙贞,陈俊荣 编著.ASP与网络数据库技术[M].北京:中国铁道出社,2003. [6]闫静,钟斌 等编著.Dreamweaver MX2004与ASP动态网页[M].北京:机械工业出版社,2004. [7]林盛雄,程永灵 编著.网页设计与制作[M].北京:冶金工业出版社,2003. 工程技术学院 课程设计报告书 课程名称: C语言课程设计 班 级: 物联网一班 小组成员: 范立恒、陈根、聂俊豪、麦灿文、黄文康 组 长: 范立恒 指导教师: 楚惟善 二○一三 年 六 月 C语言课程设计实验报告 课程题目及要求及要求 题目一:火车售票系统 任务:结合C语言中相关知识,设计出火车售票系统。录入北京西站车次信息; 2 旅客按车次买票; 统计某日火车票销售金额。 程序要求: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某 日销售 金额”、“退 出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性 为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定; 根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。 程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和 程序分设计说明 经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。1.添加车次函数 主要实现程序最初运行时车次的录入; C语言课程设计实验报告 (1)添加学生数据函数add 真以追加方式打开E盘student.txt文件成功?假假输出文件打开失败以追加方式打开E盘student.txt文件成功?真输入添加学生数量n循环变量i=1当i<=n时输入学号、姓名和三门成绩学生信息写入文件 i++关闭文件图2 添加学生数据函数 返回 (2)读取学生数据函数reads 真以读方式打开E盘student.txt文件成功?假循环变量i=0当文件未结束时读取学生信息到数组元素stu[i]中i++关闭文件返回学生人数i图3读取学生数据 输出文件打开失败返回 (3)删除学生记录函数del C语言课程设计实验报告 n=reads(stu)循环变量i=0当i j++图5按总分排 4.程序清单 本程序主要由九个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1.录入车次信息函数 录入车次信息,首先由程序创建一个新文件,并将录入的车次信息写入该文件(e:rain.txt)当中。具体的程序段如下: if((fp=fopen(“e:rain.txt”,“a”))==NULL)//如果文件已经存在,可以追加车次信息 { if((fp=fopen(“e:rain.txt”,“w”))==NULL)// 文件不存在时,创建新文件,输入车次信息 { C语言课程设计实验报告 scanf(“%d”,&j); tra[i].maipiao=tra[i].maipiao+j; printf(“n购买成功n”); printf(“n%12d%11d%11s%11s%11d%11.2fn”,tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice); save(tra,n);3.查询销售总额 对于也使用比较日期的方法实现的,这部分程序仍然调用了reads函数,整个排序过程在文件中实现,然后用for循环进行运算,把查询这一天的总额算出。 具体程序如下: if((fp=fopen(“e:rain.txt”,“r”))==NULL) { printf(“读取错误,不能打开该文件!n”); return;} else for(i=0;i fscanf(fp,“ %d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice); printf(“请输入你要查询的日期:n”); scanf(“%d”,&temp.date); for(i=0;i C语言课程设计实验报告 知识并在此基础上对数据结构的特点和算法有了更深的了解,C语言是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已经成为其他理工专业的热门选修课。在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性,同时这两周的学习也提高了我适应实际,实践编程的能力.黄文康:首先这一周的学习,使我在巩固了原有的理论知识上,培养了我灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我体会到自身知识和能力在实际中的应用和发挥。其次,激发了我创新意识,开发创造的能力和培养沟通能力。另外,让我进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我数据结构的学习和提高很有益处,并且使我明白了程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型——线性表、栈、队列、串、数组、树和二叉树以及图等,然后确定处理过程——算法,可得最后结论。最后,在这次课程设计过程中,我们深刻的认识到了自己在学习方面的不足之处,我们知道我们还有太多的基本的思想没有真正的理解,当然我们不会灰心,我们会在以后的日子里努力弥补我们的不足。 麦灿文:一个礼拜的课程设计让我们受益匪浅。要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,不断经历失败,然后又不断的尝试才能获得成功。两个多礼拜中,我们有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。一个礼拜的时间我们经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我们不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。 对于我本人来讲这次课程设计的总体表现,我自己还比较满意,每天做到了按时的出勤,上机遵守机房的管理规定,遵循指导老师的安排并能适时地与老师进行沟通,觉得不足的是不能熟练地掌握c语言的设计技巧使编程的结果缺乏效率,不过我相信这只是我的一个开始,我更应该注重的是这次过程,我坚信我会在以后的学习和训练中不断地弥补自己的不足之处,不断的完善自己的编程能力,因为成功需要一点一点积累。 0 C语言课程设计实验报告 } void menu(){ printf(“ ************************* 武昌站火车订票系统************************ ”); printf(“n 显示当前时间”); printf(“n 车次信息录入”); printf(“n 显示”); printf(“n 旅客买票”);printf(“n 统计某日销售金额”); printf(“n 退出”);} int reads(struct train tra[N])// 读取车次中的内容 { FILE *fp; int i=0; if((fp=fopen(“e:rain.txt”,“r”))==NULL){ printf(“文件打开失败!n”); return 0;} else { for(i=0;!feof(fp);i++) fscanf(fp,“%d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice); } fclose(fp); return i;} void save(struct train tra[N],int n)// 车次信息改变后更新文件 { FILE *fp; int i=0; if((fp=fopen(“e:rain.txt”,“w”))==NULL){ printf(“文件打开失败!n”); return;} else { for(i=0;i C语言课程设计实验报告 getch();} void sell()// 按顾客要求对车次信息卖票 { struct train tra[N]; int num,n,j; int i; n=reads(tra); printf(“n请输入待查询的车次号,按回车键确认:n”); scanf(“%d”,&num); for(i=0;i if(num==tra[i].num)break; if(i>=n) { printf(“没有找到该车次信息!n”); return; } else printf(“n请输入所买票数,按回车键确认:n”); scanf(“%d”,&j); tra[i].maipiao=tra[i].maipiao+j; printf(“n购买成功n”); printf(“n%12d%11d%11s%11s%11d%11.2fn”,tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice); save(tra,n);} void all()//统计销售金额 { struct train tra[N],temp;float sum=0;FILE *fp;int i,j=0;if((fp=fopen(“e:rain.txt”,“r”))==NULL) { printf(“读取错误,不能打开该文件!n”); return;} else for(i=0;i fscanf(fp,“ %d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice); printf(“请输入你要查询的日期:n”); C语言课程设计实验报告 4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施 5、源程序清单和执行结果(光盘):清单中应有足够的注释 二、具体安排: 学生以2—6人为一组,共同完成一个题目,选出一个组长负责分工和管理,共同完成总体框架设计,然后每个学生分工独立完成各自的功能模块的编程,最后要能集成并测试通过。 每组要以光盘形式上交C源文件和可执行文件(放在组长文件袋中,其他成员在报告本中写明源程序在哪个同学的文件袋中) (注:课程设计报告统一使用学院规定的课程设计报告本和文件袋) 三、备注 每个人可自行附加模块设计心得 及所发现的问题及解决方法 《C语言课程设计报告 题 目:软件工程课设管理系统 ——需求分析报告 学生姓名:王星 学 号:1176807448 专 业:计算机4班 指导教师:赵宇红 文档名称: 需求分析报告 项目名称: 软件工程课设管理系统 项目负责人:王星 编写: 完成日期: 2014.6.19 审核: 开发单位: 王星 薛浩楠 软件工程课设管理系统小组 目录 需求分析报告...................................................................................................................................4 一.引言...................................................................................................................................4 1.编写目的:...................................................................................................................4 2.背景及范围:.................................................................................................................4 3.名词定义:...................................................................................................................4 4.参考资料:...................................................................................................................5 二、任务概述...........................................................................................................................5 1.目标:.........................................................................................................................5 2.系统功能划分:...........................................................................................................6 3.安全性:.......................................................................................................................6 三、具体需求分析...................................................................................................................6 1.系统流程图:.............................................................................................................6 2.数据流图:...................................................................................................................8 3.数据字典:...................................................................................................................8 需求分析报告 一.引言 随着计算机的普及,人们对计算机的认识及需求有了明显的增加。计算机对于大量信息的管理的优势更是显而易见。有了这个软件工程课程设计管理系统,学生与老师的工作任务就可能会事半功倍。1.编写目的: 计算机专业的学生有90多名,而且随着每年的扩招,人数不断的增加,每次软件工程课程设计都采用手工操作,费时费力。为了解决这个问题,决定做一个软件工程课程设计管理系统,对每个学期选修软件工程课程设计的学生基本情况作个统计。主要是学生从该系统中选题,填写同组学生的姓名,学号,班级,组长等基本情况;查询自己的课程设计成绩。老师通过该系统查看学生的选题情况,填写学生的项目进度情况,且给出学生的分数,这有利于老师教学,及时了解学生的情况,提高教学质量,减轻老师的工作量,改善原有的比较繁锁的工作。2.背景及范围: 名称:软件工程课程设计管理系统 任务的开发人员:杨宇飞,薛浩楠,王星,陈晶 开发软件的单位:软件工程课程设计管理系统小组 软硬件设施:个人计算机,JAVA,Acess数据库,Windows 97/xp操作系统 决定开发软件工程课程设计管理系统,估价成本不高于1000元,二周交付使用。3.名词定义: 实体:客观世界中存在的且可互相区别的事物。联系:客观事物中的彼此之间的关系。属性:实体或者联系所具有的性质。4.参考资料: 软件工程基础 汤淮 西安交通大学出版社 软件工程------技术,方法与环境 王立福,张世琨,朱冰 编著 北京大学出版社 软件开发技术 倪秉营 电子科技大学出版社 软件工程 张权范 清华大学出版社 二、任务概述 该软件工程课程设计管理系统软件目前已有比较完善的管理与使用功能。研制软件工程课程设计管理系统软件是为了满足软件工程教师与学生方便对课程的各种管理与操作。1.目标:(1)开发意图: a.为了软件工程课程管理系统更完善; b.为了软件工程课程管理更方便; c.为了减轻软件工程管理工作人员的工作负担;d.为了加强学院的正规化管理;(2)应用目标: 通过本系统软件,能帮助课程设计教师利用计算机,快速方便的对课程进行管理,上传资料,填写进度报告,查找的所需操作。(3)产品描述: 本产品是一种工作在windows系统平台的软件,它是以Acess数据库。(4)产品功能: 2.系统功能划分: 使用该系统有三个角色教师,学生,客户。教师可以查看学生选课情况,可以查看学生设计报告,填写学生项目进度情况,给出分数,修改密码,上传课程设计题目,学习资料。学生可以查看选课情况和成绩,选课。客户只可以浏览选课信息。 2.系统可分为5个模块: (1)基本信息:教师和学生的信息包括教师号,学生号,教师开设的课程设计的题目,学生选的课程设计题目,项目进度和分数。(2)选课:显示教师开设的课程设计题目,实现学生选课。 (3)查询:学生查询可选题,自己选题情况,自己课程设计成绩。教师查询学生选题情况,学生设计报告。 (4)修改:教师填写项目进度情况和给出分数,学生填写同组的其他同学的姓名,学号,班级,小组长,修改结果存入相应数据库等。 (5)密码:教师和学生可以修改自己的登陆密码,结果保存用户信息数据库。3.安全性: 设立三种级别的用户:Student,Teacher,Guest,对每种类型的用户设置不同的权限。 Student:查询分数,课程设计报告上传功能 Teacher:提供对系统的实际操作功能 Guest: 提供信息浏览功能 三、具体需求分析 1.系统流程图: 学生登陆教师登陆验证学生身份验证教师身份验证成功验证成功修改密码查询选课信息查询选课上传资料与设计题目查看设计报告查看选题情况修改密码学生信息数据库选课给出分数和填写进度情况教师信息数据库课程设计报告上传填写同组人员信息选课数据库客户登陆客户浏览 图3.1系统流程图 2.数据流图: 客户用户信息数据库选题数据库用户学号与密码显示修改密码上传确定选题验证口令题目与有关资料课程设计题目数据库登陆教师显示登陆成员列表验证口令填写进度表显示选课学生小组成员信息核对填写同组人员信息教工号和密码进度数据库工作报告表课程设计报告修改密码用户设计报告表给出分数上传学生信息数据库成绩数据库显示 图3.2数据流图 3.数据字典: 数据流描述: 数据流名:用户名密码 数据来源:用户登陆处理 数据去向:验证信息处理。说明:用户输入用户名和密码 数据组成:用户名+密码 数据流量:小 数据流名:直接登陆 数据来源:用户登陆处理 数据去向:客户界面 说明:普通用户不输入用户名和密码直接以客户身份登陆 数据流名:登陆 数据来源:验证信息处理正确 数据去向:根据验证信息返回条件决定是教师界面还是学生界面 说明:系统登陆到教师界面。数据流名:选题,资料 数据来源:教师界面的输入选题和资料窗口 数据去向:上传处理 说明:教师输入要上传的课题和资料 数据流名:小组成员信息 数据来源:选课信息界面 数据去向:验证填写信息处理 说明:学生填写同组其他同学姓名,学号,班级,小组长名。数据流名:工作报告。数据来源:课题信息界面 数据去向:上传处理 说明:学生将各阶段工作报告上传。数据流名:设计报告 数据来源:选题信息界面 数据去向:上传处理 【C语言图书管理系统课设报告】相关文章: 浅谈图书管理员的语言修养09-12 少儿图书故事语言特点分析09-13 高校图书馆读者语言艺术论文04-14 c语言实验报告07-01 c语言结构实验报告07-07 c语言实验报告六09-05 c语言课程实践报告08-20 c高级语言实习报告06-09 c语言程序设计报告06-26 C语言实习报告1207-30C语言图书管理系统课设报告 第2篇
C语言在信息管理系统中的应用 第3篇
“C语言”网上作业系统的实现 第4篇
C语言图书管理系统课设报告 第5篇
C语言图书管理系统课设报告 第6篇